[totalopenstation] 01/07: Imported Upstream version 0.3.1

Matteo F. Vescovi mfv at moszumanska.debian.org
Mon May 4 08:03:58 UTC 2015


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

mfv pushed a commit to branch master
in repository totalopenstation.

commit 40a15f6052730b695fc2f5de374a0fd3f085fe1f
Author: Matteo F. Vescovi <mfv at debian.org>
Date:   Mon May 4 09:22:48 2015 +0200

    Imported Upstream version 0.3.1
---
 AUTHORS                                            |  25 +
 MANIFEST.in                                        |   5 +-
 PKG-INFO                                           |  55 ++
 README.txt                                         |  31 +-
 data/icons/16x16/totalopenstation.png              | Bin 0 -> 680 bytes
 data/icons/16x16/totalopenstation.svg              | 459 ++++++++++++
 data/icons/22x22/totalopenstation.png              | Bin 0 -> 846 bytes
 data/icons/22x22/totalopenstation.svg              | 470 +++++++++++++
 data/icons/24x24/totalopenstation.png              | Bin 0 -> 1369 bytes
 data/icons/32x32/totalopenstation.png              | Bin 0 -> 1547 bytes
 data/icons/32x32/totalopenstation.svg              | 777 +++++++++++++++++++++
 data/icons/48x48/totalopenstation.png              | Bin 0 -> 3994 bytes
 data/icons/48x48/totalopenstation.svg              | 770 ++++++++++++++++++++
 data/totalopenstation.desktop                      |   7 +
 distribute_setup.py                                | 485 -------------
 docs/Makefile                                      |  88 ---
 docs/_static/sphinxdoc.css                         | 323 ---------
 docs/_static/tops.ico                              | Bin 1150 -> 0 bytes
 docs/_static/total-station-weblogo.png             | Bin 5975 -> 0 bytes
 docs/_templates/layout.html                        |  21 -
 docs/conf.py                                       | 195 ------
 docs/contents.txt                                  |  39 --
 docs/contributing.rst                              |  34 +
 docs/contributing.txt                              |  31 -
 docs/data.txt                                      |  47 --
 docs/{faq.txt => faq.rst}                          |   0
 docs/{formats.txt => formats.rst}                  |   0
 ...ing_sample_data.txt => getting_sample_data.rst} |   0
 docs/glossary.rst                                  |  32 +
 docs/glossary.txt                                  |  32 -
 docs/index.rst                                     |  96 +++
 docs/index.txt                                     |  86 ---
 docs/input_formats/{general.txt => general.rst}    |   0
 docs/input_formats/if_carlson_rw5.rst              |  42 ++
 docs/input_formats/if_leica_gsi.rst                |  45 ++
 ...if_leica_tcr_1205.txt => if_leica_tcr_1205.rst} |   0
 ...if_nikon_raw_v200.txt => if_nikon_raw_v200.rst} |   0
 docs/input_formats/if_sokkia_sdr33.rst             |  27 +
 .../{if_trimble_are.txt => if_trimble_are.rst}     |   0
 .../{if_zeiss_rec_500.txt => if_zeiss_rec_500.rst} |   0
 docs/input_formats/{new.txt => new.rst}            |   0
 docs/input_formats/{other.txt => other.rst}        |   0
 docs/installing.rst                                | 209 ++++++
 docs/installing.txt                                |  59 --
 docs/{library.txt => library.rst}                  |   8 +
 docs/{models.txt => models.rst}                    |   0
 docs/models/{general.txt => general.rst}           |   0
 ...leica_tcr_1205.txt => model_leica_tcr_1205.rst} |   0
 ...l_nikon_npl_350.txt => model_nikon_npl_350.rst} |   0
 ...zeiss_elta_r55.txt => model_zeiss_elta_r55.rst} |   0
 docs/models/{other.txt => other.rst}               |   0
 docs/release.rst                                   |  70 ++
 docs/requirements.txt                              |  85 ---
 docs/{roadmap.txt => roadmap.rst}                  |  12 +-
 docs/running.rst                                   | 128 ++++
 docs/running.txt                                   |  19 -
 docs/{users.txt => users.rst}                      |  14 +-
 .../de/LC_MESSAGES/messages.po                     | 115 +--
 po/el.po => locale/el/LC_MESSAGES/messages.po      |  77 +-
 .../es_ES/LC_MESSAGES/messages.po                  |  20 +-
 .../fa/LC_MESSAGES/messages.po                     | 115 +--
 .../fr/LC_MESSAGES/messages.po                     |  17 +-
 po/it.po => locale/it/LC_MESSAGES/messages.po      |   0
 .../pl/LC_MESSAGES/messages.po                     | 114 +--
 .../tr/LC_MESSAGES/messages.po                     |  20 +-
 sample_data/Leica1200.rw5                          |  32 +
 sample_data/Leica1200.rw5.csv                      |  11 +
 sample_data/leica_gsi/leica_gsi16_gurob.gsi        | 344 +++++++++
 sample_data/leica_gsi/leica_gsi8_ertola.gsi        | 699 ++++++++++++++++++
 sample_data/sokkia_sdr33.tops                      |  22 +
 scripts/totalopenstation-cli-connector.py          |  11 +-
 scripts/totalopenstation-cli-parser.py             |  54 +-
 scripts/totalopenstation-gui.py                    | 181 +++--
 setup.cfg                                          |   5 +
 setup.py                                           |   2 +-
 totalopenstation.egg-info/PKG-INFO                 |  55 ++
 totalopenstation.egg-info/SOURCES.txt              | 112 +++
 totalopenstation.egg-info/dependency_links.txt     |   1 +
 totalopenstation.egg-info/not-zip-safe             |   1 +
 totalopenstation.egg-info/requires.txt             |   1 +
 totalopenstation.egg-info/top_level.txt            |   1 +
 totalopenstation/__init__.py                       |  23 +-
 totalopenstation/formats/__init__.py               |   9 +-
 totalopenstation/formats/carlson_rw5.py            |  90 +++
 totalopenstation/formats/leica_gsi.py              |  84 +++
 totalopenstation/formats/nikon_raw_v200.py         |   4 +-
 totalopenstation/formats/polar.py                  |  64 +-
 totalopenstation/formats/sokkia_sdr33.py           |  47 ++
 totalopenstation/formats/topcon_gts.py             |   2 +-
 totalopenstation/models/__init__.py                |  10 +-
 totalopenstation/models/custom.py                  |  18 +-
 totalopenstation/models/leica_tcr_1205.py          |  18 +-
 totalopenstation/models/leica_tcr_705.py           |  18 +-
 totalopenstation/models/nikon_npl_350.py           |  18 +-
 totalopenstation/models/trimble.py                 |  18 +-
 totalopenstation/models/zeiss_elta_r55.py          |  18 +-
 totalopenstation/output/tops_csv.py                |   5 -
 totalopenstation/output/tops_dat.py                |   6 -
 totalopenstation/output/tops_dxf.py                |  13 +-
 totalopenstation/output/tops_sql.py                |   6 -
 totalopenstation/output/tops_txt.py                |   6 -
 totalopenstation/tests/__init__.py                 |   0
 totalopenstation/tests/test_polar.py               |  31 +-
 totalopenstation/tests/test_rw5.py                 |  18 +
 totalopenstation/tests/test_sokkia_sdr33.py        |  19 +
 totalopenstation/utils/upref.py                    |  37 +-
 106 files changed, 5427 insertions(+), 1991 deletions(-)

diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..b773be8
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,25 @@
+Authors
+
+Stefano Costa
+Luca Bianconi
+
+Contributors
+
+Alessandro Bezzi
+Andrea Fratta
+Anna Hodgkinson
+Hannah Petten
+Filip Kłosowski
+
+Translators
+
+Kostis Papaspyrou (Greek)
+Wasilis Mandratzis (Greek, German)
+Mohammad Hosseini (Farsi)
+Filip Kłosowski (Polish)
+
+Packagers
+
+Matteo F. Vescovi (Debian)
+Angelos Tzotzos (OpenSUSE)
+Volker Frohlich (Fedora)
\ No newline at end of file
diff --git a/MANIFEST.in b/MANIFEST.in
index 7410aba..c9e6a7f 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,6 +1,7 @@
-recursive-include docs *.txt
-recursive-include po *.po
+recursive-include docs *.rst
+recursive-include locale *.mo *.po
 recursive-include sample_data *
 recursive-include data *.desktop *.svg *.png
+include AUTHORS
 include COPYING.txt
 include README.txt
diff --git a/PKG-INFO b/PKG-INFO
new file mode 100644
index 0000000..c1f3189
--- /dev/null
+++ b/PKG-INFO
@@ -0,0 +1,55 @@
+Metadata-Version: 1.1
+Name: totalopenstation
+Version: 0.3.1
+Summary: Download and export survey data from your total station
+Home-page: http://tops.iosa.it/
+Author: Stefano Costa
+Author-email: steko at iosa.it
+License: GNU GPLv3
+Description: ====================
+         Total Open Station
+        ====================
+        
+        Total Open Station (TOPS for friends) is a free software program for
+        downloading and processing data from total station devices, written in
+        the Python programming language.
+        
+        This is a task which is usually done by proprietary, dedicated and
+        Windows™-only software, but TOPS is different by nature, because:
+        
+        - it is *free/libre open source software*;
+        - it works on *any* operating system where Python is available;
+        - it is designed to support as many devices and formats as possible, all
+          within the same program, opposed to having one program per device.
+        
+        Every model has its own quirks, but TOPS uses a modular structure and
+        keeps the downloading of data logically separated from its processing,
+        thus enabling exporting data to a variety of output formats, even at a
+        later moment. Archiving of raw data is made easy by using plain text
+        files.
+        
+        The application icons are copyright by Lapo Calamandrei 2008, under the
+        same license as Total Open Station.
+        
+        Documentation
+        =============
+        
+        Documentation is available at in the ``docs`` subdirectory of this
+        package and online at http://totalopenstation.readthedocs.org/ with
+        an user guide, details on the application structure, supported models
+        and other interesting stuff.
+        
+Keywords: survey geodimeter
+Platform: UNKNOWN
+Classifier: Development Status :: 4 - Beta
+Classifier: Environment :: Console
+Classifier: Environment :: X11 Applications
+Classifier: Intended Audience :: End Users/Desktop
+Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.5
+Classifier: Programming Language :: Python :: 2.6
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Topic :: Scientific/Engineering :: GIS
diff --git a/README.txt b/README.txt
index 18ccd39..fc4f55b 100644
--- a/README.txt
+++ b/README.txt
@@ -9,9 +9,8 @@ the Python programming language.
 This is a task which is usually done by proprietary, dedicated and
 Windows™-only software, but TOPS is different by nature, because:
 
-- it is *free software* released under the GNU GPLv3 license;
-- it works on *any* operating system, including mobile platforms like
-  OpenMoko;
+- it is *free/libre open source software*;
+- it works on *any* operating system where Python is available;
 - it is designed to support as many devices and formats as possible, all
   within the same program, opposed to having one program per device.
 
@@ -21,29 +20,13 @@ thus enabling exporting data to a variety of output formats, even at a
 later moment. Archiving of raw data is made easy by using plain text
 files.
 
-The application icons are copyright by Lapo Calamandrei 2008.
-
-GUI
-===
-
-The ``totalopenstation-gui`` module is a simple, yet complete
-graphical user interface for Total Open Station that allows to
-download, open and save raw data and export into the available output
-formats. It is currently based on Tkinter and works on all major
-platforms (tested on GNU/Linux and Microsoft Windows).
-
-CLI
-===
-
-The ``totalopenstation-cli-connector`` module is a command line
-user interface to download and save raw data, while its companion
-``totalopenstation-cli-parser`` is responsible for parsing and
-exporting data.
+The application icons are copyright by Lapo Calamandrei 2008, under the
+same license as Total Open Station.
 
 Documentation
 =============
 
 Documentation is available at in the ``docs`` subdirectory of this
-package and online at http://tops.berlios.de/ with an user guide,
-details on the application structure, supported models and other
-stuff.
+package and online at http://totalopenstation.readthedocs.org/ with
+an user guide, details on the application structure, supported models
+and other interesting stuff.
diff --git a/data/icons/16x16/totalopenstation.png b/data/icons/16x16/totalopenstation.png
new file mode 100644
index 0000000..05522ec
Binary files /dev/null and b/data/icons/16x16/totalopenstation.png differ
diff --git a/data/icons/16x16/totalopenstation.svg b/data/icons/16x16/totalopenstation.svg
new file mode 100644
index 0000000..9a37bad
--- /dev/null
+++ b/data/icons/16x16/totalopenstation.svg
@@ -0,0 +1,459 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="16"
+   height="16"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docbase="/home/lapo/Modelli"
+   sodipodi:docname="total-station.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3782">
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:1;"
+         offset="0"
+         id="stop3784" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1"
+         id="stop3786" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3774">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop3776" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop3778" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3762">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop3764" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop3766" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2776">
+      <stop
+         id="stop2778"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="0.21264227"
+         id="stop2780" />
+      <stop
+         id="stop2782"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4143">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4145" />
+      <stop
+         id="stop4151"
+         offset="0.41101107"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop4147" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4125">
+      <stop
+         style="stop-color:#f57900;stop-opacity:1"
+         offset="0"
+         id="stop4127" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:1"
+         offset="1"
+         id="stop4129" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2818">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop2820" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop2822" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2591">
+      <stop
+         style="stop-color:#7a7a7a;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop2593" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop2595" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4143"
+       id="linearGradient4655"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(111,89.5)"
+       x1="21.1875"
+       y1="17.46875"
+       x2="25.752674"
+       y2="17.46875" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4125"
+       id="linearGradient4657"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(80,90)"
+       x1="48.4375"
+       y1="-2.607861"
+       x2="48"
+       y2="15" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3782"
+       id="linearGradient4659"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(40,-10)"
+       x1="95.194252"
+       y1="105.32021"
+       x2="95.194252"
+       y2="102" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3774"
+       id="linearGradient4661"
+       gradientUnits="userSpaceOnUse"
+       x1="94"
+       y1="103.5"
+       x2="97.5"
+       y2="106.5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4125"
+       id="linearGradient4663"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(80,90)"
+       x1="48.4375"
+       y1="-2.607861"
+       x2="48"
+       y2="15" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3762"
+       id="linearGradient4665"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(40,-10)"
+       x1="96.5"
+       y1="112.75"
+       x2="102"
+       y2="114.3125" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2776"
+       id="linearGradient4667"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,1,-1,0,31,65)"
+       x1="21.218287"
+       y1="5.3125"
+       x2="25.718859"
+       y2="5.3125" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2591"
+       id="radialGradient4669"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.013514,0,-0.304899)"
+       cx="16.875"
+       cy="23.672499"
+       fx="16.875"
+       fy="23.672499"
+       r="4.625" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2818"
+       id="radialGradient4671"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.035714,0,-0.810268)"
+       cx="14.75"
+       cy="22.6875"
+       fx="14.75"
+       fy="22.6875"
+       r="1.75" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2"
+     inkscape:cx="7.746352"
+     inkscape:cy="0.28994132"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:showpageshadow="false"
+     width="48px"
+     height="48px"
+     inkscape:window-width="872"
+     inkscape:window-height="713"
+     inkscape:window-x="272"
+     inkscape:window-y="120"
+     showgrid="false"
+     objecttolerance="10000"
+     gridtolerance="10000"
+     guidetolerance="10000"
+     inkscape:snap-intersection-grid-guide="true"
+     inkscape:snap-global="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-bbox="true"
+     showborder="false"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       id="GridFromPre046Settings"
+       type="xygrid"
+       originx="0px"
+       originy="0px"
+       spacingx="0.5px"
+       spacingy="0.5px"
+       color="#0000ff"
+       empcolor="#0000ff"
+       opacity="0.2"
+       empopacity="0.4"
+       empspacing="2"
+       visible="true"
+       enabled="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Lapo Calamandrei</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/SourceCode" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Livello 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g4631"
+       transform="translate(-127,-92)">
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path2626"
+         d="M 131.5,108 L 131.5,105 L 138.5,105 L 138.5,108"
+         style="fill:url(#linearGradient4655);fill-opacity:1;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccccccccccccc"
+         id="path2628"
+         d="M 128.5,94.5 C 127.946,94.5 127.5,94.946 127.5,95.5 L 127.5,105.46875 C 127.5,106.04006 127.95994,106.5 128.53125,106.5 L 141.46875,106.5 C 142.04006,106.5 142.5,106.04006 142.5,105.46875 L 142.5,95.5 C 142.5,94.946 142.054,94.5 141.5,94.5 L 139.5,94.5 C 138.946,94.5 138.5,94.946 138.5,95.5 L 138.5,103.5 L 131.5,103.5 L 131.5,95.5 C 131.5,94.946 132.054,94.5 131.5,94.5 L 128.5,94.5 z"
+         style="fill:url(#linearGradient4657);fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="1"
+         rx="1"
+         y="103"
+         x="129"
+         height="2"
+         width="10"
+         id="rect2630"
+         style="opacity:0.481982;fill:#ce5c00;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="0.5"
+         rx="0.5"
+         y="95"
+         x="129"
+         height="9"
+         width="2"
+         id="rect3690"
+         style="opacity:1;fill:#f57900;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="0.5"
+         rx="0.5"
+         y="95"
+         x="128"
+         height="1"
+         width="2"
+         id="rect2632"
+         style="fill:#fcaf3e;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="path2624"
+         d="M 131.0026,92.5 L 137.9974,92.5 C 138.82984,92.5 139.5,93.17016 139.5,94.0026 L 139.5,99.9974 C 139.5,100.82984 138.82984,101.5 137.9974,101.5 L 131.0026,101.5 C 130.17016,101.5 129.5,100.82984 129.5,99.9974 L 129.5,94.0026 C 129.5,93.17016 130.17016,92.5 131.0026,92.5 z"
+         style="fill:url(#linearGradient4659);fill-opacity:1;stroke:#ce5c00;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="path2638"
+         d="M 137.9678,93 L 138.0322,93 C 138.56836,93 139,93.37768 139,93.84683 L 139,100.15317 C 139,100.62232 138.56836,101 138.0322,101 L 137.9678,101 C 137.43164,101 137,100.62232 137,100.15317 L 137,93.84683 C 137,93.37768 137.43164,93 137.9678,93 z"
+         style="fill:#f57900;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         transform="translate(40,-10)"
+         d="M 91,103.5 C 90.702178,103.5 90.5,103.70218 90.5,104 L 90.5,110 C 90.5,110.29782 90.702178,110.5 91,110.5 L 98,110.5 C 98.297822,110.5 98.5,110.29782 98.5,110 L 98.5,104 C 98.5,103.70218 98.297822,103.5 98,103.5 L 91,103.5 z"
+         id="path3772"
+         style="opacity:0.63963964;fill:none;fill-opacity:1;stroke:url(#linearGradient4661);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+         inkscape:original="M 91 102.5 C 90.167558 102.5 89.5 103.16756 89.5 104 L 89.5 110 C 89.5 110.83244 90.167558 111.5 91 111.5 L 98 111.5 C 98.832442 111.5 99.5 110.83244 99.5 110 L 99.5 104 C 99.5 103.16756 98.832442 102.5 98 102.5 L 91 102.5 z "
+         inkscape:radius="-1"
+         sodipodi:type="inkscape:offset" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         id="path3686"
+         d="M 142.5,105.46875 L 142.5,95.5 C 142.5,94.946 142.054,94.5 141.5,94.5 L 139.5,94.5 C 138.946,94.5 138.5,94.946 138.5,95.5 L 138.5,103.5"
+         style="fill:url(#linearGradient4663);fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="0.5"
+         rx="0.5"
+         y="95"
+         x="140"
+         height="11"
+         width="2"
+         id="rect3692"
+         style="opacity:1;fill:#f57900;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="0.5"
+         rx="0.5"
+         y="95"
+         x="139"
+         height="1"
+         width="3"
+         id="rect2634"
+         style="fill:#fcaf3e;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="cccccccc"
+         id="path3757"
+         d="M 128.5,95.5 L 128.5,105.46875 C 128.5,105.49575 128.50425,105.5 128.53125,105.5 L 141.46875,105.5 C 141.49574,105.5 141.5,105.49574 141.5,105.46875 L 141.5,95.5 L 139.5,95.5 L 139.5,103.5"
+         style="opacity:0.5;fill:none;fill-opacity:1;stroke:url(#linearGradient4665);stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+      <g
+         transform="translate(109,11)"
+         id="g3725">
+        <path
+           style="fill:url(#linearGradient4667);fill-opacity:1;stroke:#2e3436;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           d="M 27.5,88.5 C 27.5,86.844 26.156,85.5 24.5,85.5 L 23.5,85.5 C 21.844,85.5 20.5,86.844 20.5,88.5 C 20.5,90.156 21.844,91.5 23.5,91.5 L 24.5,91.5 C 26.156,91.5 27.5,90.156 27.5,88.5 z"
+           id="path3727"
+           sodipodi:nodetypes="cccsccc" />
+        <g
+           id="g3729"
+           transform="matrix(0.272494,0,0,0.2719644,56.817826,61.883567)"
+           style="stroke:none">
+          <g
+             style="stroke:none;display:inline"
+             id="g3731"
+             transform="matrix(0.7957586,0,0,0.7854084,-52.69391,41.637513)">
+            <path
+               transform="matrix(2.23121,0,0,2.2312076,-122.56757,21.243795)"
+               d="M 19.875,22.5625 A 4.125,4.1875 0 1 1 11.625,22.5625 A 4.125,4.1875 0 1 1 19.875,22.5625 z"
+               sodipodi:ry="4.1875"
+               sodipodi:rx="4.125"
+               sodipodi:cy="22.5625"
+               sodipodi:cx="15.75"
+               id="path3733"
+               style="fill:url(#radialGradient4669);fill-opacity:1;fill-rule:nonzero;stroke:#888a85;stroke-width:2.08250856;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+               sodipodi:type="arc" />
+            <path
+               transform="matrix(1.676984,0,0,1.676984,-111.83457,33.611503)"
+               d="M 16.5,22.6875 A 1.75,1.8125 0 1 1 13,22.6875 A 1.75,1.8125 0 1 1 16.5,22.6875 z"
+               sodipodi:ry="1.8125"
+               sodipodi:rx="1.75"
+               sodipodi:cy="22.6875"
+               sodipodi:cx="14.75"
+               id="path3735"
+               style="opacity:0.60759499;fill:#ffffff;fill-opacity:0.52866247;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+               sodipodi:type="arc" />
+            <path
+               sodipodi:type="arc"
+               style="opacity:0.37341769;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+               id="path3737"
+               sodipodi:cx="14.75"
+               sodipodi:cy="22.6875"
+               sodipodi:rx="1.75"
+               sodipodi:ry="1.8125"
+               d="M 16.5,22.6875 A 1.75,1.8125 0 1 1 13,22.6875 A 1.75,1.8125 0 1 1 16.5,22.6875 z"
+               transform="matrix(1.673245,0,0,1.673245,-114.00058,31.80613)" />
+            <path
+               transform="matrix(0.41273,0,0,0.41273,-89.88316,65.788647)"
+               d="M 16.5,22.6875 A 1.75,1.8125 0 1 1 13,22.6875 A 1.75,1.8125 0 1 1 16.5,22.6875 z"
+               sodipodi:ry="1.8125"
+               sodipodi:rx="1.75"
+               sodipodi:cy="22.6875"
+               sodipodi:cx="14.75"
+               id="path3739"
+               style="fill:url(#radialGradient4671);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+               sodipodi:type="arc" />
+            <path
+               sodipodi:type="arc"
+               style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+               id="path3741"
+               sodipodi:cx="14.75"
+               sodipodi:cy="22.6875"
+               sodipodi:rx="1.75"
+               sodipodi:ry="1.8125"
+               d="M 16.5,22.6875 A 1.75,1.8125 0 1 1 13,22.6875 A 1.75,1.8125 0 1 1 16.5,22.6875 z"
+               transform="matrix(0.45611,0,0,0.45611,-97.03183,58.199937)" />
+          </g>
+          <path
+             style="opacity:0.7;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+             d="M -122.01561,95.523589 C -123.30471,95.523589 -124.32811,96.612063 -124.32811,97.929839 C -124.32811,98.234686 -124.27389,98.505482 -124.17186,98.773589 C -124.03914,98.797627 -123.90505,98.804839 -123.76561,98.804839 C -122.47938,98.804839 -121.45311,97.744677 -121.45311,96.429839 C -121.45311,96.134546 -121.48189,95.847111 -121.57811,95.586089 C -121.72078,95.558211 -121.86503,95.523589 -122.01561,95.523589 z"
+             id="path3743" />
+        </g>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/data/icons/22x22/totalopenstation.png b/data/icons/22x22/totalopenstation.png
new file mode 100644
index 0000000..838401c
Binary files /dev/null and b/data/icons/22x22/totalopenstation.png differ
diff --git a/data/icons/22x22/totalopenstation.svg b/data/icons/22x22/totalopenstation.svg
new file mode 100644
index 0000000..653e4d0
--- /dev/null
+++ b/data/icons/22x22/totalopenstation.svg
@@ -0,0 +1,470 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="22"
+   height="22"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docbase="/home/lapo/Modelli"
+   sodipodi:docname="total-station.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3606">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop3608" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop3610" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3578">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop3580" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop3582" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2798">
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:1;"
+         offset="0"
+         id="stop2800" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1"
+         id="stop2802" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2776">
+      <stop
+         id="stop2778"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="0.21264227"
+         id="stop2780" />
+      <stop
+         id="stop2782"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4522">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop4524" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop4526" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4143">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4145" />
+      <stop
+         id="stop4151"
+         offset="0.41101107"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop4147" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2818">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop2820" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop2822" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2591">
+      <stop
+         style="stop-color:#7a7a7a;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop2593" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop2595" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4522"
+       id="radialGradient4615"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.254717,0,12.832848)"
+       cx="93.824234"
+       cy="17.218758"
+       fx="93.824234"
+       fy="17.218758"
+       r="7.0268736" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4143"
+       id="linearGradient4617"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3333334,0,0,1,32.166669,99.6875)"
+       x1="21.1875"
+       y1="17.46875"
+       x2="25.752674"
+       y2="17.46875" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2798"
+       id="linearGradient4619"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-1,0)"
+       x1="21.625"
+       y1="84.438705"
+       x2="21.625"
+       y2="79.999496" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3578"
+       id="linearGradient4621"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-1,0)"
+       x1="22.5"
+       y1="81.5"
+       x2="24"
+       y2="96.5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2776"
+       id="linearGradient4623"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,1,-1,0,31,65)"
+       x1="21.218287"
+       y1="5.3125"
+       x2="25.718859"
+       y2="5.3125" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2591"
+       id="radialGradient4625"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.013514,0,-0.304899)"
+       cx="16.875"
+       cy="23.672499"
+       fx="16.875"
+       fy="23.672499"
+       r="4.625" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2818"
+       id="radialGradient4627"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.035714,0,-0.810268)"
+       cx="14.75"
+       cy="22.6875"
+       fx="14.75"
+       fy="22.6875"
+       r="1.75" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3606"
+       id="linearGradient4629"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-1,0)"
+       x1="24.17202"
+       y1="83.353554"
+       x2="33.47496"
+       y2="88.212944" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2"
+     inkscape:cx="7.746352"
+     inkscape:cy="0.28994132"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:showpageshadow="false"
+     width="48px"
+     height="48px"
+     inkscape:window-width="872"
+     inkscape:window-height="713"
+     inkscape:window-x="272"
+     inkscape:window-y="120"
+     showgrid="false"
+     objecttolerance="10000"
+     gridtolerance="10000"
+     guidetolerance="10000"
+     inkscape:snap-intersection-grid-guide="true"
+     inkscape:snap-global="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-bbox="true"
+     showborder="true"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       id="GridFromPre046Settings"
+       type="xygrid"
+       originx="0px"
+       originy="0px"
+       spacingx="0.5px"
+       spacingy="0.5px"
+       color="#0000ff"
+       empcolor="#0000ff"
+       opacity="0.2"
+       empopacity="0.4"
+       empspacing="2"
+       visible="true"
+       enabled="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Lapo Calamandrei</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/SourceCode" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Livello 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g4587"
+       transform="translate(-52,-99)">
+      <path
+         transform="matrix(1.2452195,0,0,1.6761049,-53.081763,88.639556)"
+         d="M 100.85111,17.218758 A 7.0268736,1.7898641 0 1 1 86.79736,17.218758 A 7.0268736,1.7898641 0 1 1 100.85111,17.218758 z"
+         sodipodi:ry="1.7898641"
+         sodipodi:rx="7.0268736"
+         sodipodi:cy="17.218758"
+         sodipodi:cx="93.824234"
+         id="path2662"
+         style="opacity:0.68468472;fill:url(#radialGradient4615);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <rect
+         rx="4"
+         ry="0.78125"
+         y="114"
+         x="59.5"
+         height="4.5"
+         width="8"
+         id="rect2664"
+         style="fill:url(#linearGradient4617);fill-opacity:1;stroke:#2e3436;stroke-width:0.99999988;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <g
+         transform="translate(40,20)"
+         id="g3910">
+        <path
+           style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           d="M 15.5,82.5 C 14.946,82.5 14.5,82.946 14.5,83.5 L 14.5,95.46875 C 14.5,96.04006 14.959938,96.5 15.53125,96.5 L 30.46875,96.5 C 31.040062,96.5 31.500001,96.04006 31.5,95.46875 L 31.5,83.5 C 31.5,82.946 31.054,82.5 30.5,82.5 L 26.5,82.5 C 25.946,82.5 25.5,82.946 25.5,83.5 L 25.5,93.5 L 20.5,93.5 L 20.5,83.5 C 20.5,82.946 20.054,82.5 19.5,82.5 L 15.5,82.5 z"
+           id="path3912"
+           sodipodi:nodetypes="ccccccccccccccc" />
+        <rect
+           style="fill:#fcaf3e;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3914"
+           width="2"
+           height="1"
+           x="15"
+           y="83"
+           rx="0.5"
+           ry="0.5" />
+        <rect
+           style="opacity:0.27927928;fill:#ce5c00;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3916"
+           width="8"
+           height="2"
+           x="18"
+           y="93"
+           rx="1"
+           ry="1" />
+        <rect
+           style="fill:#f57900;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3918"
+           width="2"
+           height="11"
+           x="18"
+           y="83"
+           rx="0.40625"
+           ry="0.40625" />
+        <path
+           sodipodi:nodetypes="ccccccccc"
+           id="path3920"
+           d="M 19.002602,80.5 L 25.997398,80.5 C 26.82984,80.5 27.5,81.17016 27.5,82.002602 L 27.5,89.997398 C 27.5,90.82984 26.82984,91.5 25.997398,91.5 L 19.002602,91.5 C 18.17016,91.5 17.5,90.82984 17.5,89.997398 L 17.5,82.002602 C 17.5,81.17016 18.17016,80.5 19.002602,80.5 z"
+           style="fill:url(#linearGradient4619);fill-opacity:1;stroke:#ce5c00;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+        <rect
+           style="fill:#f57900;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3922"
+           width="3"
+           height="10"
+           x="24"
+           y="81"
+           rx="1"
+           ry="1" />
+        <path
+           sodipodi:nodetypes="ccccccccc"
+           id="path3924"
+           d="M 19.065102,81.5 L 25.934898,81.5 C 26.247965,81.5 26.5,81.752035 26.5,82.065102 L 26.5,89.934898 C 26.5,90.247965 26.247965,90.5 25.934898,90.5 L 19.065102,90.5 C 18.752035,90.5 18.5,90.247965 18.5,89.934898 L 18.5,82.065102 C 18.5,81.752035 18.752035,81.5 19.065102,81.5 z"
+           style="opacity:0.35135133;fill:none;fill-opacity:1;stroke:url(#linearGradient4621);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+        <path
+           style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           d="M 31.5,95.46875 L 31.5,83.5 C 31.5,82.946 31.054,82.5 30.5,82.5 L 26.5,82.5 C 25.946,82.5 25.5,82.946 25.5,83.5 L 25.5,93.5"
+           id="path3926"
+           sodipodi:nodetypes="cccccc" />
+        <rect
+           style="fill:#f57900;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3928"
+           width="2"
+           height="13"
+           x="29"
+           y="83"
+           rx="0.40625"
+           ry="0.40625" />
+        <rect
+           style="fill:#fcaf3e;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3930"
+           width="5"
+           height="1"
+           x="26"
+           y="83"
+           rx="0.5"
+           ry="0.5" />
+        <g
+           id="g3932"
+           transform="translate(-4,0)">
+          <path
+             sodipodi:nodetypes="cccsccc"
+             id="path3934"
+             d="M 27.5,88.5 C 27.5,86.844 26.156,85.5 24.5,85.5 L 23.5,85.5 C 21.844,85.5 20.5,86.844 20.5,88.5 C 20.5,90.156 21.844,91.5 23.5,91.5 L 24.5,91.5 C 26.156,91.5 27.5,90.156 27.5,88.5 z"
+             style="fill:url(#linearGradient4623);fill-opacity:1;stroke:#2e3436;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+          <g
+             style="stroke:none"
+             transform="matrix(0.272494,0,0,0.2719644,56.817826,61.883567)"
+             id="g3936">
+            <g
+               transform="matrix(0.7957586,0,0,0.7854084,-52.69391,41.637513)"
+               id="g3938"
+               style="stroke:none;display:inline">
+              <path
+                 sodipodi:type="arc"
+                 style="fill:url(#radialGradient4625);fill-opacity:1;fill-rule:nonzero;stroke:#888a85;stroke-width:2.08250856;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+                 id="path3940"
+                 sodipodi:cx="15.75"
+                 sodipodi:cy="22.5625"
+                 sodipodi:rx="4.125"
+                 sodipodi:ry="4.1875"
+                 d="M 19.875,22.5625 A 4.125,4.1875 0 1 1 11.625,22.5625 A 4.125,4.1875 0 1 1 19.875,22.5625 z"
+                 transform="matrix(2.23121,0,0,2.2312076,-122.56757,21.243795)" />
+              <path
+                 sodipodi:type="arc"
+                 style="opacity:0.60759499;fill:#ffffff;fill-opacity:0.52866247;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+                 id="path3942"
+                 sodipodi:cx="14.75"
+                 sodipodi:cy="22.6875"
+                 sodipodi:rx="1.75"
+                 sodipodi:ry="1.8125"
+                 d="M 16.5,22.6875 A 1.75,1.8125 0 1 1 13,22.6875 A 1.75,1.8125 0 1 1 16.5,22.6875 z"
+                 transform="matrix(1.676984,0,0,1.676984,-111.83457,33.611503)" />
+              <path
+                 transform="matrix(1.673245,0,0,1.673245,-114.00058,31.80613)"
+                 d="M 16.5,22.6875 A 1.75,1.8125 0 1 1 13,22.6875 A 1.75,1.8125 0 1 1 16.5,22.6875 z"
+                 sodipodi:ry="1.8125"
+                 sodipodi:rx="1.75"
+                 sodipodi:cy="22.6875"
+                 sodipodi:cx="14.75"
+                 id="path3944"
+                 style="opacity:0.37341769;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+                 sodipodi:type="arc" />
+              <path
+                 sodipodi:type="arc"
+                 style="fill:url(#radialGradient4627);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+                 id="path3946"
+                 sodipodi:cx="14.75"
+                 sodipodi:cy="22.6875"
+                 sodipodi:rx="1.75"
+                 sodipodi:ry="1.8125"
+                 d="M 16.5,22.6875 A 1.75,1.8125 0 1 1 13,22.6875 A 1.75,1.8125 0 1 1 16.5,22.6875 z"
+                 transform="matrix(0.41273,0,0,0.41273,-89.88316,65.788647)" />
+              <path
+                 transform="matrix(0.45611,0,0,0.45611,-97.03183,58.199937)"
+                 d="M 16.5,22.6875 A 1.75,1.8125 0 1 1 13,22.6875 A 1.75,1.8125 0 1 1 16.5,22.6875 z"
+                 sodipodi:ry="1.8125"
+                 sodipodi:rx="1.75"
+                 sodipodi:cy="22.6875"
+                 sodipodi:cx="14.75"
+                 id="path3948"
+                 style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+                 sodipodi:type="arc" />
+            </g>
+            <path
+               id="path3950"
+               d="M -122.01561,95.523589 C -123.30471,95.523589 -124.32811,96.612063 -124.32811,97.929839 C -124.32811,98.234686 -124.27389,98.505482 -124.17186,98.773589 C -124.03914,98.797627 -123.90505,98.804839 -123.76561,98.804839 C -122.47938,98.804839 -121.45311,97.744677 -121.45311,96.429839 C -121.45311,96.134546 -121.48189,95.847111 -121.57811,95.586089 C -121.72078,95.558211 -121.86503,95.523589 -122.01561,95.523589 z"
+               style="opacity:0.7;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans" />
+          </g>
+        </g>
+        <path
+           style="opacity:0.63063061;fill:none;fill-opacity:1;stroke:url(#linearGradient4629);stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+           d="M 16.5,83.5 L 15.5,83.5 L 15.5,95.46875 C 15.5,95.50335 15.496644,95.5 15.53125,95.5 L 30.46875,95.5 C 30.503356,95.5 30.5,95.50335 30.5,95.46875 L 30.5,83.5 L 26.5,83.5 L 26.5,93.5"
+           id="path3952"
+           sodipodi:nodetypes="ccccccccc" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/data/icons/24x24/totalopenstation.png b/data/icons/24x24/totalopenstation.png
new file mode 100644
index 0000000..fb3884a
Binary files /dev/null and b/data/icons/24x24/totalopenstation.png differ
diff --git a/data/icons/32x32/totalopenstation.png b/data/icons/32x32/totalopenstation.png
new file mode 100644
index 0000000..2f07b6b
Binary files /dev/null and b/data/icons/32x32/totalopenstation.png differ
diff --git a/data/icons/32x32/totalopenstation.svg b/data/icons/32x32/totalopenstation.svg
new file mode 100644
index 0000000..56fbe0a
--- /dev/null
+++ b/data/icons/32x32/totalopenstation.svg
@@ -0,0 +1,777 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="32"
+   height="32"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docbase="/home/lapo/Modelli"
+   sodipodi:docname="total-station.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4510">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4512" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4514" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4455">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4457" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4459" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3782">
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:1;"
+         offset="0"
+         id="stop3784" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1"
+         id="stop3786" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3774">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop3776" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop3778" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3762">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop3764" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop3766" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2776">
+      <stop
+         id="stop2778"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="0.21264227"
+         id="stop2780" />
+      <stop
+         id="stop2782"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4155">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop4157" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop4159" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4143">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4145" />
+      <stop
+         id="stop4151"
+         offset="0.41101107"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop4147" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4125">
+      <stop
+         style="stop-color:#f57900;stop-opacity:1"
+         offset="0"
+         id="stop4127" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:1"
+         offset="1"
+         id="stop4129" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2818">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop2820" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop2822" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2591">
+      <stop
+         style="stop-color:#7a7a7a;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop2593" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop2595" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4155"
+       id="radialGradient4556"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.4285714,0,26.571429)"
+       cx="23.5"
+       cy="46.5"
+       fx="23.5"
+       fy="46.5"
+       r="3.5" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4155"
+       id="radialGradient4558"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.4285714,0,26.571429)"
+       cx="23.5"
+       cy="46.5"
+       fx="23.5"
+       fy="46.5"
+       r="3.5" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4155"
+       id="radialGradient4561"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.4285714,0,26.571429)"
+       cx="23.5"
+       cy="46.5"
+       fx="23.5"
+       fy="46.5"
+       r="3.5" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4155"
+       id="radialGradient4563"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.4285714,0,26.571429)"
+       cx="23.5"
+       cy="46.5"
+       fx="23.5"
+       fy="46.5"
+       r="3.5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4510"
+       id="linearGradient4565"
+       gradientUnits="userSpaceOnUse"
+       x1="20"
+       y1="247.5"
+       x2="21.5"
+       y2="253" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4143"
+       id="linearGradient4567"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1666667,0,0,1,-4.4166672,231)"
+       x1="21.1875"
+       y1="17.46875"
+       x2="25.752674"
+       y2="17.46875" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4125"
+       id="linearGradient4569"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-32,231)"
+       x1="48.4375"
+       y1="-2.607861"
+       x2="48"
+       y2="15" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3782"
+       id="linearGradient4571"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-72,133)"
+       x1="95.194252"
+       y1="105.32021"
+       x2="95.194252"
+       y2="102" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3774"
+       id="linearGradient4573"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-72,131)"
+       x1="94"
+       y1="103.5"
+       x2="97.5"
+       y2="106.5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4125"
+       id="linearGradient4575"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-33,231)"
+       x1="48.4375"
+       y1="-2.607861"
+       x2="48"
+       y2="15" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3762"
+       id="linearGradient4577"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-72,131)"
+       x1="96.5"
+       y1="112.75"
+       x2="102"
+       y2="114.3125" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2776"
+       id="linearGradient4579"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,1,-1,0,31,65)"
+       x1="21.218287"
+       y1="5.3125"
+       x2="25.718859"
+       y2="5.3125" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2591"
+       id="radialGradient4581"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.013514,0,-0.304899)"
+       cx="16.875"
+       cy="23.672499"
+       fx="16.875"
+       fy="23.672499"
+       r="4.625" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2818"
+       id="radialGradient4583"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.035714,0,-0.810268)"
+       cx="14.75"
+       cy="22.6875"
+       fx="14.75"
+       fy="22.6875"
+       r="1.75" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4455"
+       id="linearGradient4585"
+       gradientUnits="userSpaceOnUse"
+       x1="23"
+       y1="263.96875"
+       x2="26.4375"
+       y2="246.21875" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4455"
+       id="linearGradient2469"
+       gradientUnits="userSpaceOnUse"
+       x1="23"
+       y1="263.96875"
+       x2="26.4375"
+       y2="246.21875"
+       gradientTransform="translate(-7,-235)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3762"
+       id="linearGradient2482"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-79,-104)"
+       x1="96.5"
+       y1="112.75"
+       x2="102"
+       y2="114.3125" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4125"
+       id="linearGradient2486"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-40,-4)"
+       x1="48.4375"
+       y1="-2.607861"
+       x2="48"
+       y2="15" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3774"
+       id="linearGradient2489"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-79,-104)"
+       x1="94"
+       y1="103.5"
+       x2="97.5"
+       y2="106.5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3782"
+       id="linearGradient2493"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-79,-102)"
+       x1="95.194252"
+       y1="105.32021"
+       x2="95.194252"
+       y2="102" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4125"
+       id="linearGradient2498"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-39,-4)"
+       x1="48.4375"
+       y1="-2.607861"
+       x2="48"
+       y2="15" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4143"
+       id="linearGradient2501"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1666667,0,0,1,-11.416667,-4)"
+       x1="21.1875"
+       y1="17.46875"
+       x2="25.752674"
+       y2="17.46875" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4155"
+       id="radialGradient2518"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.4285714,0,26.571429)"
+       cx="23.5"
+       cy="46.5"
+       fx="23.5"
+       fy="46.5"
+       r="3.5" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4155"
+       id="radialGradient2520"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.4285714,0,26.571429)"
+       cx="23.5"
+       cy="46.5"
+       fx="23.5"
+       fy="46.5"
+       r="3.5" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4155"
+       id="radialGradient2522"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.4285714,0,26.571429)"
+       cx="23.5"
+       cy="46.5"
+       fx="23.5"
+       fy="46.5"
+       r="3.5" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="13.789412"
+     inkscape:cy="3.1994007"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:showpageshadow="false"
+     width="48px"
+     height="48px"
+     inkscape:window-width="872"
+     inkscape:window-height="713"
+     inkscape:window-x="272"
+     inkscape:window-y="120"
+     showgrid="false"
+     objecttolerance="10000"
+     gridtolerance="10000"
+     guidetolerance="10000"
+     inkscape:snap-intersection-grid-guide="true"
+     inkscape:snap-global="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-bbox="true"
+     showborder="true"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       id="GridFromPre046Settings"
+       type="xygrid"
+       originx="0px"
+       originy="0px"
+       spacingx="0.5px"
+       spacingy="0.5px"
+       color="#0000ff"
+       empcolor="#0000ff"
+       opacity="0.2"
+       empopacity="0.4"
+       empspacing="2"
+       visible="true"
+       enabled="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Lapo Calamandrei</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/SourceCode" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Livello 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <path
+       transform="matrix(4.5714281,0,0,2.999999,-91.428562,-112.99995)"
+       d="M 27,46.5 A 3.5,1.5 0 1 1 20,46.5 A 3.5,1.5 0 1 1 27,46.5 z"
+       sodipodi:ry="1.5"
+       sodipodi:rx="3.5"
+       sodipodi:cy="46.5"
+       sodipodi:cx="23.5"
+       id="path4481"
+       style="opacity:0.18018015;fill:url(#radialGradient4556);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       sodipodi:type="arc" />
+    <path
+       transform="matrix(1,0,0,1.3830162,-19.5,-37.810252)"
+       d="M 27,46.5 A 3.5,1.5 0 1 1 20,46.5 A 3.5,1.5 0 1 1 27,46.5 z"
+       sodipodi:ry="1.5"
+       sodipodi:rx="3.5"
+       sodipodi:cy="46.5"
+       sodipodi:cx="23.5"
+       id="path4477"
+       style="opacity:0.4099099;fill:url(#radialGradient2520);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       sodipodi:type="arc" />
+    <rect
+       style="fill:#a40000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4465"
+       width="2"
+       height="2.5"
+       x="3"
+       y="24.5"
+       rx="1"
+       ry="0.83333331" />
+    <rect
+       style="fill:#f57900;fill-opacity:1;stroke:#ce5c00;stroke-width:1.18920708;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4403"
+       width="3"
+       height="14.142136"
+       x="-31.5"
+       y="21.920321"
+       rx="0.9352566"
+       ry="1.3226526"
+       transform="matrix(-1,0,-0.7071068,0.7071068,0,0)" />
+    <path
+       transform="matrix(1,0,0,1.3830162,4.5,-37.810252)"
+       d="M 27,46.5 A 3.5,1.5 0 1 1 20,46.5 A 3.5,1.5 0 1 1 27,46.5 z"
+       sodipodi:ry="1.5"
+       sodipodi:rx="3.5"
+       sodipodi:cy="46.5"
+       sodipodi:cx="23.5"
+       id="path4473"
+       style="opacity:0.4099099;fill:url(#radialGradient2518);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       sodipodi:type="arc" />
+    <rect
+       style="fill:#a40000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4467"
+       width="2"
+       height="2.5"
+       x="27"
+       y="24.5"
+       rx="1"
+       ry="0.83333331" />
+    <rect
+       style="fill:#f57900;fill-opacity:1;stroke:#ce5c00;stroke-width:1.18920708;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4399"
+       width="3"
+       height="14.142136"
+       x="0.5"
+       y="21.920321"
+       rx="0.9352566"
+       ry="1.3226526"
+       transform="matrix(1,0,0.7071068,0.7071068,0,0)" />
+    <path
+       style="opacity:0.6081081;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 27.09375,24.71875 L 19.375,17 C 19.005913,16.63091 18.159102,16.28125 18.0625,16.28125 L 13.9375,16.28125 C 13.840898,16.28125 12.994087,16.63091 12.625,17 L 4.90625,24.71875"
+       id="path4498"
+       sodipodi:nodetypes="cccccc" />
+    <rect
+       style="fill:#ef2929;fill-opacity:1;stroke:#cc0000;stroke-width:1.18920732;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4405"
+       width="5"
+       height="5.6568513"
+       x="-31.368853"
+       y="19.091869"
+       rx="1"
+       ry="1.4142128"
+       transform="matrix(-1,0,-0.707107,0.7071065,0,0)" />
+    <path
+       transform="matrix(1,0,0,1.2946278,-7.5,-29.700194)"
+       d="M 27,46.5 A 3.5,1.5 0 1 1 20,46.5 A 3.5,1.5 0 1 1 27,46.5 z"
+       sodipodi:ry="1.5"
+       sodipodi:rx="3.5"
+       sodipodi:cy="46.5"
+       sodipodi:cx="23.5"
+       id="path4469"
+       style="opacity:0.4099099;fill:url(#radialGradient2522);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       sodipodi:type="arc" />
+    <rect
+       style="fill:#a40000;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4463"
+       width="2"
+       height="3"
+       x="15"
+       y="28"
+       rx="1"
+       ry="1" />
+    <rect
+       style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4397"
+       width="3"
+       height="14"
+       x="14.5"
+       y="15.5"
+       rx="1"
+       ry="1" />
+    <rect
+       style="fill:#ef2929;fill-opacity:1;stroke:#cc0000;stroke-width:1.18920732;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4401"
+       width="5"
+       height="5.6568518"
+       x="0.58447099"
+       y="19.0919"
+       rx="1"
+       ry="1.4142129"
+       transform="matrix(1,0,0.707107,0.7071065,0,0)" />
+    <path
+       sodipodi:type="inkscape:offset"
+       inkscape:radius="-0.96875"
+       inkscape:original="M 20.875 248.5 C 20.321001 248.5 19.429 248.946 18.875 249.5 L 16.875 251.5 C 16.320999 252.054 16.321 252.5 16.875 252.5 L 29.09375 252.5 C 29.64775 252.5 29.64775 252.054 29.09375 251.5 L 27.09375 249.5 C 26.53975 248.946 25.64775 248.50001 25.09375 248.5 L 20.875 248.5 z "
+       style="opacity:0.52702703;fill:none;fill-opacity:1;stroke:url(#linearGradient4565);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path4508"
+       d="M 20.875,249.46875 C 20.840933,249.46875 19.932676,249.81732 19.5625,250.1875 L 18.21875,251.53125 L 27.75,251.53125 L 26.40625,250.1875 C 26.036077,249.81733 25.12785,249.46875 25.09375,249.46875 L 20.875,249.46875 z"
+       transform="translate(-7,-235)" />
+    <rect
+       style="fill:#ef2929;fill-opacity:1;stroke:#cc0000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4395"
+       width="5"
+       height="4"
+       x="13.5"
+       y="15.5"
+       rx="1"
+       ry="1" />
+    <rect
+       style="fill:url(#linearGradient2501);fill-opacity:1;stroke:#2e3436;stroke-width:0.99999988;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4441"
+       width="7"
+       height="2"
+       x="12.5"
+       y="12.5" />
+    <path
+       style="fill:url(#linearGradient2498);fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 9.5,1.5 C 8.946,1.5 8.5,1.946 8.5,2.5 L 8.5,11.46875 C 8.5,12.04006 8.959938,12.5 9.53125,12.5 L 21.46875,12.5 C 22.04006,12.5 22.5,12.04006 22.5,11.46875 L 22.5,2.5 C 22.5,1.946 22.054,1.5 21.5,1.5 L 19.5,1.5 C 18.946,1.5 18.5,1.946 18.5,2.5 L 18.5,9.5 L 12.5,9.5 L 12.5,2.5 C 12.5,1.946 13.054,1.5 12.5,1.5 L 9.5,1.5 z"
+       id="path4309"
+       sodipodi:nodetypes="ccccccccccccccc" />
+    <rect
+       style="opacity:0.481982;fill:#ce5c00;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4311"
+       width="9"
+       height="2"
+       x="10"
+       y="9"
+       rx="1"
+       ry="1" />
+    <rect
+       style="fill:#f57900;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4313"
+       width="2"
+       height="9"
+       x="10"
+       y="1"
+       rx="0.5"
+       ry="0.5" />
+    <path
+       style="fill:url(#linearGradient2493);fill-opacity:1;stroke:#ce5c00;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 12.002602,0.5 L 17.997398,0.5 C 18.82984,0.5 19.5,1.17016 19.5,2.0026 L 19.5,5.9974 C 19.5,6.82984 18.82984,7.5 17.997398,7.5 L 12.002602,7.5 C 11.17016,7.5 10.5,6.82984 10.5,5.9974 L 10.5,2.0026 C 10.5,1.17016 11.17016,0.5 12.002602,0.5 z"
+       id="path4317"
+       sodipodi:nodetypes="ccccccccc" />
+    <path
+       style="fill:#f57900;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 17.967801,1 L 18.032199,1 C 18.568361,1 19,1.37768 19,1.84683 L 19,6.15317 C 19,6.62232 18.568361,7 18.032199,7 L 17.967801,7 C 17.431639,7 17,6.62232 17,6.15317 L 17,1.84683 C 17,1.37768 17.431639,1 17.967801,1 z"
+       id="path4319"
+       sodipodi:nodetypes="ccccccccc" />
+    <path
+       sodipodi:nodetypes="ccccccccc"
+       id="path4321"
+       d="M 12,1.5 C 11.702178,1.5 11.5,1.70218 11.5,2 L 11.5,6 C 11.5,6.29782 11.702178,6.5 12,6.5 L 18,6.5 C 18.297822,6.5 18.5,6.29782 18.5,6 L 18.5,2 C 18.5,1.70218 18.297822,1.5 18,1.5 L 12,1.5 z"
+       style="opacity:0.63963964;fill:none;fill-opacity:1;stroke:url(#linearGradient2489);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+    <path
+       style="fill:url(#linearGradient2486);fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 22.5,11.46875 L 22.5,2.5 C 22.5,1.946 22.054,1.5 21.5,1.5 L 19.5,1.5 C 18.946,1.5 18.5,1.946 18.5,2.5 L 18.5,9.5"
+       id="path4323"
+       sodipodi:nodetypes="cccccc" />
+    <path
+       sodipodi:nodetypes="ccccccccc"
+       id="rect4325"
+       d="M 20.5,2 L 21.5,2 C 21.777,2 22,2.223 22,2.5 L 22,11.5 C 22,11.777 21.777,12 21.5,12 L 20.5,12 C 20.223,12 20,11.777 20,11.5 L 20,2.5 C 20,2.223 20.223,2 20.5,2 z"
+       style="fill:#f57900;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+    <path
+       style="opacity:0.5;fill:none;fill-opacity:1;stroke:url(#linearGradient2482);stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 9.5,2.5 L 9.5,11.46875 C 9.5,11.49575 9.504253,11.5 9.53125,11.5 L 21.46875,11.5 C 21.49574,11.5 21.5,11.49574 21.5,11.46875 L 21.5,2.5 L 19.5,2.5 L 19.5,9.5"
+       id="path4329"
+       sodipodi:nodetypes="cccccccc" />
+    <g
+       id="g4331"
+       transform="translate(-10,-83)">
+      <path
+         sodipodi:nodetypes="cccsccc"
+         id="path4333"
+         d="M 27.5,88.5 C 27.5,86.844 26.156,85.5 24.5,85.5 L 23.5,85.5 C 21.844,85.5 20.5,86.844 20.5,88.5 C 20.5,90.156 21.844,91.5 23.5,91.5 L 24.5,91.5 C 26.156,91.5 27.5,90.156 27.5,88.5 z"
+         style="fill:url(#linearGradient4579);fill-opacity:1;stroke:#2e3436;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <g
+         style="stroke:none"
+         transform="matrix(0.272494,0,0,0.2719644,56.817826,61.883567)"
+         id="g4335">
+        <g
+           transform="matrix(0.7957586,0,0,0.7854084,-52.69391,41.637513)"
+           id="g4337"
+           style="stroke:none;display:inline">
+          <path
+             sodipodi:type="arc"
+             style="fill:url(#radialGradient4581);fill-opacity:1;fill-rule:nonzero;stroke:#888a85;stroke-width:2.08250856;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+             id="path4339"
+             sodipodi:cx="15.75"
+             sodipodi:cy="22.5625"
+             sodipodi:rx="4.125"
+             sodipodi:ry="4.1875"
+             d="M 19.875,22.5625 A 4.125,4.1875 0 1 1 11.625,22.5625 A 4.125,4.1875 0 1 1 19.875,22.5625 z"
+             transform="matrix(2.23121,0,0,2.2312076,-122.56757,21.243795)" />
+          <path
+             sodipodi:type="arc"
+             style="opacity:0.60759499;fill:#ffffff;fill-opacity:0.52866247;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+             id="path4341"
+             sodipodi:cx="14.75"
+             sodipodi:cy="22.6875"
+             sodipodi:rx="1.75"
+             sodipodi:ry="1.8125"
+             d="M 16.5,22.6875 A 1.75,1.8125 0 1 1 13,22.6875 A 1.75,1.8125 0 1 1 16.5,22.6875 z"
+             transform="matrix(1.676984,0,0,1.676984,-111.83457,33.611503)" />
+          <path
+             transform="matrix(1.673245,0,0,1.673245,-114.00058,31.80613)"
+             d="M 16.5,22.6875 A 1.75,1.8125 0 1 1 13,22.6875 A 1.75,1.8125 0 1 1 16.5,22.6875 z"
+             sodipodi:ry="1.8125"
+             sodipodi:rx="1.75"
+             sodipodi:cy="22.6875"
+             sodipodi:cx="14.75"
+             id="path4343"
+             style="opacity:0.37341769;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+             sodipodi:type="arc" />
+          <path
+             sodipodi:type="arc"
+             style="fill:url(#radialGradient4583);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+             id="path4345"
+             sodipodi:cx="14.75"
+             sodipodi:cy="22.6875"
+             sodipodi:rx="1.75"
+             sodipodi:ry="1.8125"
+             d="M 16.5,22.6875 A 1.75,1.8125 0 1 1 13,22.6875 A 1.75,1.8125 0 1 1 16.5,22.6875 z"
+             transform="matrix(0.41273,0,0,0.41273,-89.88316,65.788647)" />
+          <path
+             transform="matrix(0.45611,0,0,0.45611,-97.03183,58.199937)"
+             d="M 16.5,22.6875 A 1.75,1.8125 0 1 1 13,22.6875 A 1.75,1.8125 0 1 1 16.5,22.6875 z"
+             sodipodi:ry="1.8125"
+             sodipodi:rx="1.75"
+             sodipodi:cy="22.6875"
+             sodipodi:cx="14.75"
+             id="path4347"
+             style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+             sodipodi:type="arc" />
+        </g>
+        <path
+           id="path4349"
+           d="M -122.01561,95.523589 C -123.30471,95.523589 -124.32811,96.612063 -124.32811,97.929839 C -124.32811,98.234686 -124.27389,98.505482 -124.17186,98.773589 C -124.03914,98.797627 -123.90505,98.804839 -123.76561,98.804839 C -122.47938,98.804839 -121.45311,97.744677 -121.45311,96.429839 C -121.45311,96.134546 -121.48189,95.847111 -121.57811,95.586089 C -121.72078,95.558211 -121.86503,95.523589 -122.01561,95.523589 z"
+           style="opacity:0.7;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans" />
+      </g>
+    </g>
+    <path
+       style="opacity:0.518018;fill:none;fill-opacity:1;stroke:url(#linearGradient2469);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 17.46875,18.46875 L 17.46875,16.53125 L 16.5,16.53125 L 15.5,16.53125 L 14.53125,16.53125 L 14.53125,18.46875 C 15.08853,18.4857 15.531452,18.94246 15.53125,19.5 L 15.53125,28.46875"
+       id="path4452"
+       sodipodi:nodetypes="cccccccc" />
+  </g>
+</svg>
diff --git a/data/icons/48x48/totalopenstation.png b/data/icons/48x48/totalopenstation.png
new file mode 100644
index 0000000..3c8a8e1
Binary files /dev/null and b/data/icons/48x48/totalopenstation.png differ
diff --git a/data/icons/48x48/totalopenstation.svg b/data/icons/48x48/totalopenstation.svg
new file mode 100644
index 0000000..81881cd
--- /dev/null
+++ b/data/icons/48x48/totalopenstation.svg
@@ -0,0 +1,770 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="48"
+   height="48"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docbase="/home/lapo/Modelli"
+   sodipodi:docname="total-station.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3606">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop3608" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop3610" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3578">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop3580" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop3582" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2798">
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:1;"
+         offset="0"
+         id="stop2800" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1"
+         id="stop2802" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2776">
+      <stop
+         id="stop2778"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="0.21264227"
+         id="stop2780" />
+      <stop
+         id="stop2782"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4261">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop4263" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop4265" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4224">
+      <stop
+         style="stop-color:#cc0000;stop-opacity:1;"
+         offset="0"
+         id="stop4226" />
+      <stop
+         style="stop-color:#cc0000;stop-opacity:0;"
+         offset="1"
+         id="stop4228" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4191">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="0"
+         id="stop4193" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:1"
+         offset="1"
+         id="stop4195" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4183">
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:1"
+         offset="0"
+         id="stop4185" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1"
+         id="stop4187" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4155">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop4157" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop4159" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4143">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4145" />
+      <stop
+         id="stop4151"
+         offset="0.41101107"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop4147" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4079">
+      <stop
+         style="stop-color:#f57900;stop-opacity:1"
+         offset="0"
+         id="stop4081" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:1"
+         offset="1"
+         id="stop4083" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2818">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop2820" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop2822" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2591">
+      <stop
+         style="stop-color:#7a7a7a;stop-opacity:1.0000000;"
+         offset="0.0000000"
+         id="stop2593" />
+      <stop
+         style="stop-color:#000000;stop-opacity:1.0000000;"
+         offset="1.0000000"
+         id="stop2595" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4143"
+       id="linearGradient2718"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3333334,0,0,1,-7.8333338,0)"
+       x1="21.1875"
+       y1="17.46875"
+       x2="25.752674"
+       y2="17.46875" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2776"
+       id="linearGradient3646"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,1,-1,0,31,65)"
+       x1="21.218287"
+       y1="5.3125"
+       x2="25.718859"
+       y2="5.3125" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2591"
+       id="radialGradient3648"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.013514,0,-0.304899)"
+       cx="16.875"
+       cy="23.672499"
+       fx="16.875"
+       fy="23.672499"
+       r="4.625" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2818"
+       id="radialGradient3650"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.035714,0,-0.810268)"
+       cx="14.75"
+       cy="22.6875"
+       fx="14.75"
+       fy="22.6875"
+       r="1.75" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3606"
+       id="linearGradient3695"
+       gradientUnits="userSpaceOnUse"
+       x1="24.17202"
+       y1="83.353554"
+       x2="33.47496"
+       y2="88.212944"
+       gradientTransform="translate(-1,0)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3578"
+       id="linearGradient3713"
+       gradientUnits="userSpaceOnUse"
+       x1="22.5"
+       y1="81.5"
+       x2="24"
+       y2="96.5"
+       gradientTransform="translate(-1,0)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2798"
+       id="linearGradient3717"
+       gradientUnits="userSpaceOnUse"
+       x1="21.625"
+       y1="84.438705"
+       x2="21.625"
+       y2="79.999496"
+       gradientTransform="translate(-1,0)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4155"
+       id="radialGradient4111"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.4285714,0,26.571429)"
+       cx="23.5"
+       cy="46.5"
+       fx="23.5"
+       fy="46.5"
+       r="3.5" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4155"
+       id="radialGradient4113"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.4285714,0,26.571429)"
+       cx="23.5"
+       cy="46.5"
+       fx="23.5"
+       fy="46.5"
+       r="3.5" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4155"
+       id="radialGradient4115"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.4285714,0,26.571429)"
+       cx="23.5"
+       cy="46.5"
+       fx="23.5"
+       fy="46.5"
+       r="3.5" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4155"
+       id="radialGradient4117"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.4285714,0,26.571429)"
+       cx="23.5"
+       cy="46.5"
+       fx="23.5"
+       fy="46.5"
+       r="3.5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4191"
+       id="linearGradient4119"
+       gradientUnits="userSpaceOnUse"
+       x1="-33.119381"
+       y1="0.082910016"
+       x2="-37.51059"
+       y2="48.836018" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4183"
+       id="linearGradient4121"
+       gradientUnits="userSpaceOnUse"
+       x1="-32.823372"
+       y1="43.10767"
+       x2="-32.329445"
+       y2="10.316925" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4079"
+       id="linearGradient4123"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.5,0,0,1,-11.75,120)"
+       x1="23.5"
+       y1="24.625"
+       x2="23.5"
+       y2="40.9375" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4224"
+       id="linearGradient4126"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3333333,0,0,1,-34.5,120)"
+       x1="40.5625"
+       y1="22.718882"
+       x2="40.5625"
+       y2="19" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4261"
+       id="linearGradient4128"
+       gradientUnits="userSpaceOnUse"
+       x1="22.5"
+       y1="41.625"
+       x2="26.002232"
+       y2="41.625" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="105.66276"
+     inkscape:cy="89.692581"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:showpageshadow="false"
+     width="48px"
+     height="48px"
+     inkscape:window-width="872"
+     inkscape:window-height="713"
+     inkscape:window-x="655"
+     inkscape:window-y="289"
+     showgrid="false"
+     objecttolerance="10000"
+     gridtolerance="10000"
+     guidetolerance="10000"
+     inkscape:snap-intersection-grid-guide="true"
+     inkscape:snap-global="true"
+     inkscape:snap-nodes="true"
+     inkscape:snap-bbox="true"
+     showborder="false"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       id="GridFromPre046Settings"
+       type="xygrid"
+       originx="0px"
+       originy="0px"
+       spacingx="0.5px"
+       spacingy="0.5px"
+       color="#0000ff"
+       empcolor="#0000ff"
+       opacity="0.2"
+       empopacity="0.4"
+       empspacing="2"
+       visible="true"
+       enabled="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Lapo Calamandrei</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/SourceCode" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Livello 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g4040"
+       transform="translate(0,-120)">
+      <path
+         transform="matrix(5.474134,0,0,4.1484779,-105.14215,-30.691064)"
+         d="M 27,46.5 A 3.5,1.5 0 1 1 20,46.5 A 3.5,1.5 0 1 1 27,46.5 z"
+         sodipodi:ry="1.5"
+         sodipodi:rx="3.5"
+         sodipodi:cy="46.5"
+         sodipodi:cx="23.5"
+         id="path3966"
+         style="opacity:0.13963964;fill:url(#radialGradient4111);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         transform="translate(0,120)"
+         d="M 27,46.5 A 3.5,1.5 0 1 1 20,46.5 A 3.5,1.5 0 1 1 27,46.5 z"
+         sodipodi:ry="1.5"
+         sodipodi:rx="3.5"
+         sodipodi:cy="46.5"
+         sodipodi:cx="23.5"
+         id="path3968"
+         style="opacity:0.4099099;fill:url(#radialGradient4113);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         id="path3970"
+         d="M 22.5,165 L 23.5,166.59375 L 24.5,165 L 24.5,163.5 L 22.5,163.5 L 22.5,165 z"
+         style="fill:#ef2929;fill-rule:evenodd;stroke:#cc0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         transform="translate(15.5,117)"
+         d="M 27,46.5 A 3.5,1.5 0 1 1 20,46.5 A 3.5,1.5 0 1 1 27,46.5 z"
+         sodipodi:ry="1.5"
+         sodipodi:rx="3.5"
+         sodipodi:cy="46.5"
+         sodipodi:cx="23.5"
+         id="path3972"
+         style="opacity:0.4099099;fill:url(#radialGradient4115);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         id="path3974"
+         d="M 39.5,162 L 39.416419,163.59375 L 37.406509,162 L 36.5,160.5 L 38.593491,160.5 L 39.5,162 z"
+         style="fill:#ef2929;fill-rule:evenodd;stroke:#cc0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         transform="translate(-15.5,117)"
+         d="M 27,46.5 A 3.5,1.5 0 1 1 20,46.5 A 3.5,1.5 0 1 1 27,46.5 z"
+         sodipodi:ry="1.5"
+         sodipodi:rx="3.5"
+         sodipodi:cy="46.5"
+         sodipodi:cx="23.5"
+         id="path3976"
+         style="opacity:0.4099099;fill:url(#radialGradient4117);fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <g
+         transform="translate(-0.9722664,120)"
+         id="g3978">
+        <rect
+           ry="1.296415"
+           rx="1.296415"
+           style="opacity:1;fill:#f57900;fill-opacity:1;stroke:#ba5200;stroke-width:1.07348442;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3980"
+           width="4.4738688"
+           height="24.199741"
+           x="-36.139385"
+           y="22.471193"
+           transform="matrix(-1,0,-0.4969526,0.8677777,0,0)" />
+        <path
+           style="fill:#ef2929;fill-rule:evenodd;stroke:#cc0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+           d="M 8.5000003,42 L 8.5835808,43.59375 L 10.593491,42 L 11.5,40.5 L 9.4065092,40.5 L 8.5000003,42 z"
+           id="path3982"
+           sodipodi:nodetypes="cccccc" />
+        <path
+           style="fill:#f57900;fill-opacity:1;stroke:url(#linearGradient4119);stroke-width:1.07348442;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+           d="M -32.8125,45.5 L -32.8125,23.625"
+           id="path3984"
+           sodipodi:nodetypes="cc"
+           transform="matrix(-1,0,-0.4969526,0.8677777,0,0)" />
+        <rect
+           transform="translate(0.593491,3)"
+           y="21"
+           x="30"
+           height="0"
+           width="0"
+           id="rect3986"
+           style="opacity:1;fill:#f57900;fill-opacity:1;stroke:#fcaf3e;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      </g>
+      <g
+         transform="matrix(-1,0,0,1,47.972266,120)"
+         id="g3988">
+        <rect
+           ry="1.0803459"
+           rx="1.0803459"
+           style="opacity:1;fill:#f57900;fill-opacity:1;stroke:#ba5200;stroke-width:1.07348442;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect3990"
+           width="4.4738579"
+           height="24.199741"
+           x="-36.139385"
+           y="22.471193"
+           transform="matrix(-1,0,-0.4969526,0.8677777,0,0)" />
+        <path
+           style="fill:#ef2929;fill-rule:evenodd;stroke:#cc0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+           d="M 8.5000003,42 L 8.5835808,43.59375 L 10.593491,42 L 11.5,40.5 L 9.4065092,40.5 L 8.5000003,42 z"
+           id="path3992"
+           sodipodi:nodetypes="cccccc" />
+        <path
+           style="fill:#f57900;fill-opacity:1;stroke:url(#linearGradient4121);stroke-width:1.07348442;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+           d="M -32.8125,45.5 L -32.8125,23.625"
+           id="path3994"
+           sodipodi:nodetypes="cc"
+           transform="matrix(-1,0,-0.4969526,0.8677777,0,0)" />
+        <rect
+           transform="translate(0.593491,3)"
+           y="21"
+           x="30"
+           height="0"
+           width="0"
+           id="rect3996"
+           style="opacity:1;fill:#f57900;fill-opacity:1;stroke:#fcaf3e;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      </g>
+      <rect
+         ry="0.9375"
+         rx="1.40625"
+         y="139.5"
+         x="20.5"
+         height="24"
+         width="6"
+         id="rect3998"
+         style="opacity:1;fill:url(#linearGradient4123);fill-opacity:1;stroke:#ce5c00;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         transform="matrix(1,0,-0.4472137,0.8944272,0,0)"
+         y="154.84773"
+         x="87.750015"
+         height="6.7082086"
+         width="6"
+         id="rect4002"
+         style="fill:#ef2929;fill-opacity:1;stroke:#cc0000;stroke-width:1.05737126;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         rx="0.83998001"
+         ry="0.83998013" />
+      <rect
+         transform="matrix(-1,0,0.4472137,0.8944272,0,0)"
+         y="154.84773"
+         x="40.750019"
+         height="6.7082086"
+         width="6"
+         id="rect4004"
+         style="fill:#ef2929;fill-opacity:1;stroke:#cc0000;stroke-width:1.05737126;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         rx="0.88939059"
+         ry="0.88939071" />
+      <rect
+         y="139.5"
+         x="19.5"
+         height="6.9999995"
+         width="8"
+         id="rect4006"
+         style="fill:#ef2929;fill-opacity:1;stroke:url(#linearGradient4126);stroke-width:0.99999988;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccc"
+         id="path4008"
+         d="M 19.101185,139.5 L 17.053558,143.50002 L 19.101185,139.5 z"
+         style="opacity:0.518018;fill:#ef2929;fill-opacity:1;stroke:#ffffff;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="path4010"
+         d="M 20.5,20.5 L 20.5,25.5 C 21.052262,25.500055 21.499945,25.947738 21.5,26.5 L 21.5,42.5 L 25.5,42.5 L 25.5,26.5 C 25.500055,25.947738 25.947738,25.500055 26.5,25.5 L 26.5,20.5 L 20.5,20.5 z"
+         style="opacity:0.36036036;fill:none;fill-opacity:1;stroke:url(#linearGradient4128);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+         transform="translate(0,120)" />
+      <path
+         sodipodi:nodetypes="ccc"
+         id="path4012"
+         d="M 27.866058,139.5 L 29.913685,143.50002 L 27.866058,139.5 z"
+         style="opacity:0.37837842;fill:#ef2929;fill-opacity:1;stroke:#ffffff;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#cc0000;stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 20.5,139.5 L 26.5,139.5"
+         id="path4014" />
+    </g>
+    <rect
+       style="opacity:1;fill:url(#linearGradient2718);fill-opacity:1;stroke:#2e3436;stroke-width:0.99999988;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2578"
+       width="8"
+       height="2"
+       x="19.5"
+       y="16.5" />
+    <g
+       id="g3792"
+       transform="translate(0,-80)">
+      <path
+         sodipodi:nodetypes="ccccccccccccccc"
+         id="path2584"
+         d="M 15.5,82.5 C 14.946,82.5 14.5,82.946 14.5,83.5 L 14.5,95.46875 C 14.5,96.04006 14.959938,96.5 15.53125,96.5 L 30.46875,96.5 C 31.040062,96.5 31.500001,96.04006 31.5,95.46875 L 31.5,83.5 C 31.5,82.946 31.054,82.5 30.5,82.5 L 26.5,82.5 C 25.946,82.5 25.5,82.946 25.5,83.5 L 25.5,93.5 L 20.5,93.5 L 20.5,83.5 C 20.5,82.946 20.054,82.5 19.5,82.5 L 15.5,82.5 z"
+         style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="0.5"
+         rx="0.5"
+         y="83"
+         x="15"
+         height="1"
+         width="2"
+         id="rect2588"
+         style="fill:#fcaf3e;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="1"
+         rx="1"
+         y="93"
+         x="18"
+         height="2"
+         width="8"
+         id="rect2586"
+         style="opacity:0.27927928;fill:#ce5c00;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="0.40625"
+         rx="0.40625"
+         y="83"
+         x="18"
+         height="11"
+         width="2"
+         id="rect2796"
+         style="fill:#f57900;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         style="fill:url(#linearGradient3717);fill-opacity:1;stroke:#ce5c00;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+         d="M 19.002602,80.5 L 25.997398,80.5 C 26.82984,80.5 27.5,81.17016 27.5,82.002602 L 27.5,89.997398 C 27.5,90.82984 26.82984,91.5 25.997398,91.5 L 19.002602,91.5 C 18.17016,91.5 17.5,90.82984 17.5,89.997398 L 17.5,82.002602 C 17.5,81.17016 18.17016,80.5 19.002602,80.5 z"
+         id="rect2582"
+         sodipodi:nodetypes="ccccccccc" />
+      <rect
+         ry="1"
+         rx="1"
+         y="81"
+         x="24"
+         height="10"
+         width="3"
+         id="rect2594"
+         style="fill:#f57900;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         style="opacity:0.35135133;fill:none;fill-opacity:1;stroke:url(#linearGradient3713);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
+         d="M 19.065102,81.5 L 25.934898,81.5 C 26.247965,81.5 26.5,81.752035 26.5,82.065102 L 26.5,89.934898 C 26.5,90.247965 26.247965,90.5 25.934898,90.5 L 19.065102,90.5 C 18.752035,90.5 18.5,90.247965 18.5,89.934898 L 18.5,82.065102 C 18.5,81.752035 18.752035,81.5 19.065102,81.5 z"
+         id="rect2806"
+         sodipodi:nodetypes="ccccccccc" />
+      <path
+         sodipodi:nodetypes="cccccc"
+         id="path2788"
+         d="M 31.5,95.46875 L 31.5,83.5 C 31.5,82.946 31.054,82.5 30.5,82.5 L 26.5,82.5 C 25.946,82.5 25.5,82.946 25.5,83.5 L 25.5,93.5"
+         style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="0.40625"
+         rx="0.40625"
+         y="83"
+         x="29"
+         height="13"
+         width="2"
+         id="rect2792"
+         style="fill:#f57900;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="0.5"
+         rx="0.5"
+         y="83"
+         x="26"
+         height="1"
+         width="5"
+         id="rect2590"
+         style="fill:#fcaf3e;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <g
+         transform="translate(-4,0)"
+         id="g2763">
+        <path
+           style="fill:url(#linearGradient3646);fill-opacity:1;stroke:#2e3436;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           d="M 27.5,88.5 C 27.5,86.844 26.156,85.5 24.5,85.5 L 23.5,85.5 C 21.844,85.5 20.5,86.844 20.5,88.5 C 20.5,90.156 21.844,91.5 23.5,91.5 L 24.5,91.5 C 26.156,91.5 27.5,90.156 27.5,88.5 z"
+           id="path2598"
+           sodipodi:nodetypes="cccsccc" />
+        <g
+           id="g2600"
+           transform="matrix(0.272494,0,0,0.2719644,56.817826,61.883567)"
+           style="stroke:none">
+          <g
+             style="stroke:none;display:inline"
+             id="g2602"
+             transform="matrix(0.7957586,0,0,0.7854084,-52.69391,41.637513)">
+            <path
+               transform="matrix(2.23121,0,0,2.2312076,-122.56757,21.243795)"
+               d="M 19.875,22.5625 A 4.125,4.1875 0 1 1 11.625,22.5625 A 4.125,4.1875 0 1 1 19.875,22.5625 z"
+               sodipodi:ry="4.1875"
+               sodipodi:rx="4.125"
+               sodipodi:cy="22.5625"
+               sodipodi:cx="15.75"
+               id="path2604"
+               style="fill:url(#radialGradient3648);fill-opacity:1;fill-rule:nonzero;stroke:#888a85;stroke-width:2.08250856;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+               sodipodi:type="arc" />
+            <path
+               transform="matrix(1.676984,0,0,1.676984,-111.83457,33.611503)"
+               d="M 16.5,22.6875 A 1.75,1.8125 0 1 1 13,22.6875 A 1.75,1.8125 0 1 1 16.5,22.6875 z"
+               sodipodi:ry="1.8125"
+               sodipodi:rx="1.75"
+               sodipodi:cy="22.6875"
+               sodipodi:cx="14.75"
+               id="path2606"
+               style="opacity:0.60759499;fill:#ffffff;fill-opacity:0.52866247;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+               sodipodi:type="arc" />
+            <path
+               sodipodi:type="arc"
+               style="opacity:0.37341769;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+               id="path2608"
+               sodipodi:cx="14.75"
+               sodipodi:cy="22.6875"
+               sodipodi:rx="1.75"
+               sodipodi:ry="1.8125"
+               d="M 16.5,22.6875 A 1.75,1.8125 0 1 1 13,22.6875 A 1.75,1.8125 0 1 1 16.5,22.6875 z"
+               transform="matrix(1.673245,0,0,1.673245,-114.00058,31.80613)" />
+            <path
+               transform="matrix(0.41273,0,0,0.41273,-89.88316,65.788647)"
+               d="M 16.5,22.6875 A 1.75,1.8125 0 1 1 13,22.6875 A 1.75,1.8125 0 1 1 16.5,22.6875 z"
+               sodipodi:ry="1.8125"
+               sodipodi:rx="1.75"
+               sodipodi:cy="22.6875"
+               sodipodi:cx="14.75"
+               id="path2610"
+               style="fill:url(#radialGradient3650);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+               sodipodi:type="arc" />
+            <path
+               sodipodi:type="arc"
+               style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+               id="path2612"
+               sodipodi:cx="14.75"
+               sodipodi:cy="22.6875"
+               sodipodi:rx="1.75"
+               sodipodi:ry="1.8125"
+               d="M 16.5,22.6875 A 1.75,1.8125 0 1 1 13,22.6875 A 1.75,1.8125 0 1 1 16.5,22.6875 z"
+               transform="matrix(0.45611,0,0,0.45611,-97.03183,58.199937)" />
+          </g>
+          <path
+             style="opacity:0.7;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;font-family:Bitstream Vera Sans"
+             d="M -122.01561,95.523589 C -123.30471,95.523589 -124.32811,96.612063 -124.32811,97.929839 C -124.32811,98.234686 -124.27389,98.505482 -124.17186,98.773589 C -124.03914,98.797627 -123.90505,98.804839 -123.76561,98.804839 C -122.47938,98.804839 -121.45311,97.744677 -121.45311,96.429839 C -121.45311,96.134546 -121.48189,95.847111 -121.57811,95.586089 C -121.72078,95.558211 -121.86503,95.523589 -122.01561,95.523589 z"
+             id="path2614" />
+        </g>
+      </g>
+      <path
+         sodipodi:nodetypes="ccccccccc"
+         id="path3600"
+         d="M 16.5,83.5 L 15.5,83.5 L 15.5,95.46875 C 15.5,95.50335 15.496644,95.5 15.53125,95.5 L 30.46875,95.5 C 30.503356,95.5 30.5,95.50335 30.5,95.46875 L 30.5,83.5 L 26.5,83.5 L 26.5,93.5"
+         style="opacity:0.63063061;fill:none;fill-opacity:1;stroke:url(#linearGradient3695);stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/data/totalopenstation.desktop b/data/totalopenstation.desktop
new file mode 100644
index 0000000..67d07f0
--- /dev/null
+++ b/data/totalopenstation.desktop
@@ -0,0 +1,7 @@
+[Desktop Entry]
+Version=1.0
+Type=Application
+Terminal=false
+Exec=totalopenstation-gui.py
+Name=Total Open Station
+Comment=Download and export survey data from your total station
diff --git a/distribute_setup.py b/distribute_setup.py
deleted file mode 100644
index 3ea2e66..0000000
--- a/distribute_setup.py
+++ /dev/null
@@ -1,485 +0,0 @@
-#!python
-"""Bootstrap distribute installation
-
-If you want to use setuptools in your package's setup.py, just include this
-file in the same directory with it, and add this to the top of your setup.py::
-
-    from distribute_setup import use_setuptools
-    use_setuptools()
-
-If you want to require a specific version of setuptools, set a download
-mirror, or use an alternate download directory, you can do so by supplying
-the appropriate options to ``use_setuptools()``.
-
-This file can also be run as a script to install or upgrade setuptools.
-"""
-import os
-import sys
-import time
-import fnmatch
-import tempfile
-import tarfile
-from distutils import log
-
-try:
-    from site import USER_SITE
-except ImportError:
-    USER_SITE = None
-
-try:
-    import subprocess
-
-    def _python_cmd(*args):
-        args = (sys.executable,) + args
-        return subprocess.call(args) == 0
-
-except ImportError:
-    # will be used for python 2.3
-    def _python_cmd(*args):
-        args = (sys.executable,) + args
-        # quoting arguments if windows
-        if sys.platform == 'win32':
-            def quote(arg):
-                if ' ' in arg:
-                    return '"%s"' % arg
-                return arg
-            args = [quote(arg) for arg in args]
-        return os.spawnl(os.P_WAIT, sys.executable, *args) == 0
-
-DEFAULT_VERSION = "0.6.14"
-DEFAULT_URL = "http://pypi.python.org/packages/source/d/distribute/"
-SETUPTOOLS_FAKED_VERSION = "0.6c11"
-
-SETUPTOOLS_PKG_INFO = """\
-Metadata-Version: 1.0
-Name: setuptools
-Version: %s
-Summary: xxxx
-Home-page: xxx
-Author: xxx
-Author-email: xxx
-License: xxx
-Description: xxx
-""" % SETUPTOOLS_FAKED_VERSION
-
-
-def _install(tarball):
-    # extracting the tarball
-    tmpdir = tempfile.mkdtemp()
-    log.warn('Extracting in %s', tmpdir)
-    old_wd = os.getcwd()
-    try:
-        os.chdir(tmpdir)
-        tar = tarfile.open(tarball)
-        _extractall(tar)
-        tar.close()
-
-        # going in the directory
-        subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0])
-        os.chdir(subdir)
-        log.warn('Now working in %s', subdir)
-
-        # installing
-        log.warn('Installing Distribute')
-        if not _python_cmd('setup.py', 'install'):
-            log.warn('Something went wrong during the installation.')
-            log.warn('See the error message above.')
-    finally:
-        os.chdir(old_wd)
-
-
-def _build_egg(egg, tarball, to_dir):
-    # extracting the tarball
-    tmpdir = tempfile.mkdtemp()
-    log.warn('Extracting in %s', tmpdir)
-    old_wd = os.getcwd()
-    try:
-        os.chdir(tmpdir)
-        tar = tarfile.open(tarball)
-        _extractall(tar)
-        tar.close()
-
-        # going in the directory
-        subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0])
-        os.chdir(subdir)
-        log.warn('Now working in %s', subdir)
-
-        # building an egg
-        log.warn('Building a Distribute egg in %s', to_dir)
-        _python_cmd('setup.py', '-q', 'bdist_egg', '--dist-dir', to_dir)
-
-    finally:
-        os.chdir(old_wd)
-    # returning the result
-    log.warn(egg)
-    if not os.path.exists(egg):
-        raise IOError('Could not build the egg.')
-
-
-def _do_download(version, download_base, to_dir, download_delay):
-    egg = os.path.join(to_dir, 'distribute-%s-py%d.%d.egg'
-                       % (version, sys.version_info[0], sys.version_info[1]))
-    if not os.path.exists(egg):
-        tarball = download_setuptools(version, download_base,
-                                      to_dir, download_delay)
-        _build_egg(egg, tarball, to_dir)
-    sys.path.insert(0, egg)
-    import setuptools
-    setuptools.bootstrap_install_from = egg
-
-
-def use_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
-                   to_dir=os.curdir, download_delay=15, no_fake=True):
-    # making sure we use the absolute path
-    to_dir = os.path.abspath(to_dir)
-    was_imported = 'pkg_resources' in sys.modules or \
-        'setuptools' in sys.modules
-    try:
-        try:
-            import pkg_resources
-            if not hasattr(pkg_resources, '_distribute'):
-                if not no_fake:
-                    _fake_setuptools()
-                raise ImportError
-        except ImportError:
-            return _do_download(version, download_base, to_dir, download_delay)
-        try:
-            pkg_resources.require("distribute>="+version)
-            return
-        except pkg_resources.VersionConflict:
-            e = sys.exc_info()[1]
-            if was_imported:
-                sys.stderr.write(
-                "The required version of distribute (>=%s) is not available,\n"
-                "and can't be installed while this script is running. Please\n"
-                "install a more recent version first, using\n"
-                "'easy_install -U distribute'."
-                "\n\n(Currently using %r)\n" % (version, e.args[0]))
-                sys.exit(2)
-            else:
-                del pkg_resources, sys.modules['pkg_resources']    # reload ok
-                return _do_download(version, download_base, to_dir,
-                                    download_delay)
-        except pkg_resources.DistributionNotFound:
-            return _do_download(version, download_base, to_dir,
-                                download_delay)
-    finally:
-        if not no_fake:
-            _create_fake_setuptools_pkg_info(to_dir)
-
-def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
-                        to_dir=os.curdir, delay=15):
-    """Download distribute from a specified location and return its filename
-
-    `version` should be a valid distribute version number that is available
-    as an egg for download under the `download_base` URL (which should end
-    with a '/'). `to_dir` is the directory where the egg will be downloaded.
-    `delay` is the number of seconds to pause before an actual download
-    attempt.
-    """
-    # making sure we use the absolute path
-    to_dir = os.path.abspath(to_dir)
-    try:
-        from urllib.request import urlopen
-    except ImportError:
-        from urllib2 import urlopen
-    tgz_name = "distribute-%s.tar.gz" % version
-    url = download_base + tgz_name
-    saveto = os.path.join(to_dir, tgz_name)
-    src = dst = None
-    if not os.path.exists(saveto):  # Avoid repeated downloads
-        try:
-            log.warn("Downloading %s", url)
-            src = urlopen(url)
-            # Read/write all in one block, so we don't create a corrupt file
-            # if the download is interrupted.
-            data = src.read()
-            dst = open(saveto, "wb")
-            dst.write(data)
-        finally:
-            if src:
-                src.close()
-            if dst:
-                dst.close()
-    return os.path.realpath(saveto)
-
-def _no_sandbox(function):
-    def __no_sandbox(*args, **kw):
-        try:
-            from setuptools.sandbox import DirectorySandbox
-            if not hasattr(DirectorySandbox, '_old'):
-                def violation(*args):
-                    pass
-                DirectorySandbox._old = DirectorySandbox._violation
-                DirectorySandbox._violation = violation
-                patched = True
-            else:
-                patched = False
-        except ImportError:
-            patched = False
-
-        try:
-            return function(*args, **kw)
-        finally:
-            if patched:
-                DirectorySandbox._violation = DirectorySandbox._old
-                del DirectorySandbox._old
-
-    return __no_sandbox
-
-def _patch_file(path, content):
-    """Will backup the file then patch it"""
-    existing_content = open(path).read()
-    if existing_content == content:
-        # already patched
-        log.warn('Already patched.')
-        return False
-    log.warn('Patching...')
-    _rename_path(path)
-    f = open(path, 'w')
-    try:
-        f.write(content)
-    finally:
-        f.close()
-    return True
-
-_patch_file = _no_sandbox(_patch_file)
-
-def _same_content(path, content):
-    return open(path).read() == content
-
-def _rename_path(path):
-    new_name = path + '.OLD.%s' % time.time()
-    log.warn('Renaming %s into %s', path, new_name)
-    os.rename(path, new_name)
-    return new_name
-
-def _remove_flat_installation(placeholder):
-    if not os.path.isdir(placeholder):
-        log.warn('Unkown installation at %s', placeholder)
-        return False
-    found = False
-    for file in os.listdir(placeholder):
-        if fnmatch.fnmatch(file, 'setuptools*.egg-info'):
-            found = True
-            break
-    if not found:
-        log.warn('Could not locate setuptools*.egg-info')
-        return
-
-    log.warn('Removing elements out of the way...')
-    pkg_info = os.path.join(placeholder, file)
-    if os.path.isdir(pkg_info):
-        patched = _patch_egg_dir(pkg_info)
-    else:
-        patched = _patch_file(pkg_info, SETUPTOOLS_PKG_INFO)
-
-    if not patched:
-        log.warn('%s already patched.', pkg_info)
-        return False
-    # now let's move the files out of the way
-    for element in ('setuptools', 'pkg_resources.py', 'site.py'):
-        element = os.path.join(placeholder, element)
-        if os.path.exists(element):
-            _rename_path(element)
-        else:
-            log.warn('Could not find the %s element of the '
-                     'Setuptools distribution', element)
-    return True
-
-_remove_flat_installation = _no_sandbox(_remove_flat_installation)
-
-def _after_install(dist):
-    log.warn('After install bootstrap.')
-    placeholder = dist.get_command_obj('install').install_purelib
-    _create_fake_setuptools_pkg_info(placeholder)
-
-def _create_fake_setuptools_pkg_info(placeholder):
-    if not placeholder or not os.path.exists(placeholder):
-        log.warn('Could not find the install location')
-        return
-    pyver = '%s.%s' % (sys.version_info[0], sys.version_info[1])
-    setuptools_file = 'setuptools-%s-py%s.egg-info' % \
-            (SETUPTOOLS_FAKED_VERSION, pyver)
-    pkg_info = os.path.join(placeholder, setuptools_file)
-    if os.path.exists(pkg_info):
-        log.warn('%s already exists', pkg_info)
-        return
-
-    log.warn('Creating %s', pkg_info)
-    f = open(pkg_info, 'w')
-    try:
-        f.write(SETUPTOOLS_PKG_INFO)
-    finally:
-        f.close()
-
-    pth_file = os.path.join(placeholder, 'setuptools.pth')
-    log.warn('Creating %s', pth_file)
-    f = open(pth_file, 'w')
-    try:
-        f.write(os.path.join(os.curdir, setuptools_file))
-    finally:
-        f.close()
-
-_create_fake_setuptools_pkg_info = _no_sandbox(_create_fake_setuptools_pkg_info)
-
-def _patch_egg_dir(path):
-    # let's check if it's already patched
-    pkg_info = os.path.join(path, 'EGG-INFO', 'PKG-INFO')
-    if os.path.exists(pkg_info):
-        if _same_content(pkg_info, SETUPTOOLS_PKG_INFO):
-            log.warn('%s already patched.', pkg_info)
-            return False
-    _rename_path(path)
-    os.mkdir(path)
-    os.mkdir(os.path.join(path, 'EGG-INFO'))
-    pkg_info = os.path.join(path, 'EGG-INFO', 'PKG-INFO')
-    f = open(pkg_info, 'w')
-    try:
-        f.write(SETUPTOOLS_PKG_INFO)
-    finally:
-        f.close()
-    return True
-
-_patch_egg_dir = _no_sandbox(_patch_egg_dir)
-
-def _before_install():
-    log.warn('Before install bootstrap.')
-    _fake_setuptools()
-
-
-def _under_prefix(location):
-    if 'install' not in sys.argv:
-        return True
-    args = sys.argv[sys.argv.index('install')+1:]
-    for index, arg in enumerate(args):
-        for option in ('--root', '--prefix'):
-            if arg.startswith('%s=' % option):
-                top_dir = arg.split('root=')[-1]
-                return location.startswith(top_dir)
-            elif arg == option:
-                if len(args) > index:
-                    top_dir = args[index+1]
-                    return location.startswith(top_dir)
-        if arg == '--user' and USER_SITE is not None:
-            return location.startswith(USER_SITE)
-    return True
-
-
-def _fake_setuptools():
-    log.warn('Scanning installed packages')
-    try:
-        import pkg_resources
-    except ImportError:
-        # we're cool
-        log.warn('Setuptools or Distribute does not seem to be installed.')
-        return
-    ws = pkg_resources.working_set
-    try:
-        setuptools_dist = ws.find(pkg_resources.Requirement.parse('setuptools',
-                                  replacement=False))
-    except TypeError:
-        # old distribute API
-        setuptools_dist = ws.find(pkg_resources.Requirement.parse('setuptools'))
-
-    if setuptools_dist is None:
-        log.warn('No setuptools distribution found')
-        return
-    # detecting if it was already faked
-    setuptools_location = setuptools_dist.location
-    log.warn('Setuptools installation detected at %s', setuptools_location)
-
-    # if --root or --preix was provided, and if
-    # setuptools is not located in them, we don't patch it
-    if not _under_prefix(setuptools_location):
-        log.warn('Not patching, --root or --prefix is installing Distribute'
-                 ' in another location')
-        return
-
-    # let's see if its an egg
-    if not setuptools_location.endswith('.egg'):
-        log.warn('Non-egg installation')
-        res = _remove_flat_installation(setuptools_location)
-        if not res:
-            return
-    else:
-        log.warn('Egg installation')
-        pkg_info = os.path.join(setuptools_location, 'EGG-INFO', 'PKG-INFO')
-        if (os.path.exists(pkg_info) and
-            _same_content(pkg_info, SETUPTOOLS_PKG_INFO)):
-            log.warn('Already patched.')
-            return
-        log.warn('Patching...')
-        # let's create a fake egg replacing setuptools one
-        res = _patch_egg_dir(setuptools_location)
-        if not res:
-            return
-    log.warn('Patched done.')
-    _relaunch()
-
-
-def _relaunch():
-    log.warn('Relaunching...')
-    # we have to relaunch the process
-    # pip marker to avoid a relaunch bug
-    if sys.argv[:3] == ['-c', 'install', '--single-version-externally-managed']:
-        sys.argv[0] = 'setup.py'
-    args = [sys.executable] + sys.argv
-    sys.exit(subprocess.call(args))
-
-
-def _extractall(self, path=".", members=None):
-    """Extract all members from the archive to the current working
-       directory and set owner, modification time and permissions on
-       directories afterwards. `path' specifies a different directory
-       to extract to. `members' is optional and must be a subset of the
-       list returned by getmembers().
-    """
-    import copy
-    import operator
-    from tarfile import ExtractError
-    directories = []
-
-    if members is None:
-        members = self
-
-    for tarinfo in members:
-        if tarinfo.isdir():
-            # Extract directories with a safe mode.
-            directories.append(tarinfo)
-            tarinfo = copy.copy(tarinfo)
-            tarinfo.mode = 448 # decimal for oct 0700
-        self.extract(tarinfo, path)
-
-    # Reverse sort directories.
-    if sys.version_info < (2, 4):
-        def sorter(dir1, dir2):
-            return cmp(dir1.name, dir2.name)
-        directories.sort(sorter)
-        directories.reverse()
-    else:
-        directories.sort(key=operator.attrgetter('name'), reverse=True)
-
-    # Set correct owner, mtime and filemode on directories.
-    for tarinfo in directories:
-        dirpath = os.path.join(path, tarinfo.name)
-        try:
-            self.chown(tarinfo, dirpath)
-            self.utime(tarinfo, dirpath)
-            self.chmod(tarinfo, dirpath)
-        except ExtractError:
-            e = sys.exc_info()[1]
-            if self.errorlevel > 1:
-                raise
-            else:
-                self._dbg(1, "tarfile: %s" % e)
-
-
-def main(argv, version=DEFAULT_VERSION):
-    """Install or upgrade setuptools and EasyInstall"""
-    tarball = download_setuptools()
-    _install(tarball)
-
-
-if __name__ == '__main__':
-    main(sys.argv[1:])
diff --git a/docs/Makefile b/docs/Makefile
deleted file mode 100644
index 4adf10b..0000000
--- a/docs/Makefile
+++ /dev/null
@@ -1,88 +0,0 @@
-# Makefile for Sphinx documentation
-#
-
-# You can set these variables from the command line.
-SPHINXOPTS    =
-SPHINXBUILD   = sphinx-build
-PAPER         =
-
-# Internal variables.
-PAPEROPT_a4     = -D latex_paper_size=a4
-PAPEROPT_letter = -D latex_paper_size=letter
-ALLSPHINXOPTS   = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
-
-.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest
-
-help:
-	@echo "Please use \`make <target>' where <target> is one of"
-	@echo "  html      to make standalone HTML files"
-	@echo "  dirhtml   to make HTML files named index.html in directories"
-	@echo "  pickle    to make pickle files"
-	@echo "  json      to make JSON files"
-	@echo "  htmlhelp  to make HTML files and a HTML help project"
-	@echo "  qthelp    to make HTML files and a qthelp project"
-	@echo "  latex     to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
-	@echo "  changes   to make an overview of all changed/added/deprecated items"
-	@echo "  linkcheck to check all external links for integrity"
-	@echo "  doctest   to run all doctests embedded in the documentation (if enabled)"
-
-clean:
-	-rm -rf _build/*
-
-html:
-	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html
-	@echo
-	@echo "Build finished. The HTML pages are in _build/html."
-
-dirhtml:
-	$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml
-	@echo
-	@echo "Build finished. The HTML pages are in _build/dirhtml."
-
-pickle:
-	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle
-	@echo
-	@echo "Build finished; now you can process the pickle files."
-
-json:
-	$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json
-	@echo
-	@echo "Build finished; now you can process the JSON files."
-
-htmlhelp:
-	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp
-	@echo
-	@echo "Build finished; now you can run HTML Help Workshop with the" \
-	      ".hhp project file in _build/htmlhelp."
-
-qthelp:
-	$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp
-	@echo
-	@echo "Build finished; now you can run "qcollectiongenerator" with the" \
-	      ".qhcp project file in _build/qthelp, like this:"
-	@echo "# qcollectiongenerator _build/qthelp/TotalOpenStation.qhcp"
-	@echo "To view the help file:"
-	@echo "# assistant -collectionFile _build/qthelp/TotalOpenStation.qhc"
-
-latex:
-	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex
-	@echo
-	@echo "Build finished; the LaTeX files are in _build/latex."
-	@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
-	      "run these through (pdf)latex."
-
-changes:
-	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes
-	@echo
-	@echo "The overview file is in _build/changes."
-
-linkcheck:
-	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck
-	@echo
-	@echo "Link check complete; look for any errors in the above output " \
-	      "or in _build/linkcheck/output.txt."
-
-doctest:
-	$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest
-	@echo "Testing of doctests in the sources finished, look at the " \
-	      "results in _build/doctest/output.txt."
diff --git a/docs/_static/sphinxdoc.css b/docs/_static/sphinxdoc.css
deleted file mode 100644
index cbda43e..0000000
--- a/docs/_static/sphinxdoc.css
+++ /dev/null
@@ -1,323 +0,0 @@
-/**
- * Sphinx stylesheet -- sphinxdoc theme
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- *
- * Originally created by Armin Ronacher for Werkzeug, adapted by Georg Brandl.
- */
-
- at import url("basic.css");
-
-/* -- page layout ----------------------------------------------------------- */
-
-body {
-    font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva',
-                 'Verdana', sans-serif;
-    font-size: 14px;
-    letter-spacing: -0.01em;
-    line-height: 150%;
-    text-align: center;
-    background-color: #fcaf3e;
-    color: black;
-    padding: 0;
-    border: 1px solid #aaa;
-
-    margin: 0px 80px 0px 80px;
-    min-width: 740px;
-}
-
-div.document {
-    background-color: white;
-    text-align: left;
-    background-image: url(contents.png);
-    background-repeat: repeat-x;
-}
-
-div.bodywrapper {
-    margin: 0 240px 0 0;
-    border-right: 1px solid #ccc;
-}
-
-div.body {
-    margin: 0;
-    padding: 0.5em 20px 20px 20px;
-}
-
-div.related {
-    font-size: 1em;
-}
-
-div.related ul {
-    background-image: url(navigation.png);
-    height: 2em;
-    border-top: 1px solid #ddd;
-    border-bottom: 1px solid #ddd;
-}
-
-div.related ul li {
-    margin: 0;
-    padding: 0;
-    height: 2em;
-    float: left;
-}
-
-div.related ul li.right {
-    float: right;
-    margin-right: 5px;
-}
-
-div.related ul li a {
-    margin: 0;
-    padding: 0 5px 0 5px;
-    line-height: 1.75em;
-    color: #EE9816;
-}
-
-div.related ul li a:hover {
-    color: #3CA8E7;
-}
-
-div.sphinxsidebarwrapper {
-    padding: 0;
-}
-
-div.sphinxsidebar {
-    margin: 0;
-    padding: 0.5em 15px 15px 0;
-    width: 210px;
-    float: right;
-    font-size: 1em;
-    text-align: left;
-}
-
-div.sphinxsidebar h3, div.sphinxsidebar h4 {
-    margin: 1em 0 0.5em 0;
-    font-size: 1em;
-    padding: 0.1em 0 0.1em 0.5em;
-    color: white;
-    border: 1px solid #fcaf3e;
-    background-color: #f57900;
-}
-
-div.sphinxsidebar h3 a {
-    color: white;
-}
-
-div.sphinxsidebar ul {
-    padding-left: 1.5em;
-    margin-top: 7px;
-    padding: 0;
-    line-height: 130%;
-}
-
-div.sphinxsidebar ul ul {
-    margin-left: 20px;
-}
-
-div.footer {
-    background-color: #FFFFFF;
-    color: #86989B;
-    padding: 3px 8px 3px 0;
-    clear: both;
-    font-size: 0.8em;
-    text-align: right;
-}
-
-div.footer a {
-    color: #86989B;
-    text-decoration: underline;
-}
-
-/* -- body styles ----------------------------------------------------------- */
-
-p {    
-    margin: 0.8em 0 0.5em 0;
-}
-
-a {
-    color: #CA7900;
-    text-decoration: none;
-}
-
-a:hover {
-    color: #2491CF;
-}
-
-div.body a {
-    text-decoration: underline;
-}
-
-h1 {
-    margin: 0;
-    padding: 0.7em 0 0.3em 0;
-    font-size: 1.5em;
-    color: #11557C;
-}
-
-h2 {
-    margin: 1.3em 0 0.2em 0;
-    font-size: 1.35em;
-    padding: 0;
-}
-
-h3 {
-    margin: 1em 0 -0.3em 0;
-    font-size: 1.2em;
-}
-
-div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.body h6 a {
-    color: black!important;
-}
-
-h1 a.anchor, h2 a.anchor, h3 a.anchor, h4 a.anchor, h5 a.anchor, h6 a.anchor {
-    display: none;
-    margin: 0 0 0 0.3em;
-    padding: 0 0.2em 0 0.2em;
-    color: #aaa!important;
-}
-
-h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor,
-h5:hover a.anchor, h6:hover a.anchor {
-    display: inline;
-}
-
-h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover,
-h5 a.anchor:hover, h6 a.anchor:hover {
-    color: #777;
-    background-color: #eee;
-}
-
-a.headerlink {
-    color: #c60f0f!important;
-    font-size: 1em;
-    margin-left: 6px;
-    padding: 0 4px 0 4px;
-    text-decoration: none!important;
-}
-
-a.headerlink:hover {
-    background-color: #ccc;
-    color: white!important;
-}
-
-cite, code, tt {
-    font-family: 'Consolas', 'Deja Vu Sans Mono',
-                 'Bitstream Vera Sans Mono', monospace;
-    font-size: 0.95em;
-    letter-spacing: 0.01em;
-}
-
-tt {
-    background-color: #f2f2f2;
-    border-bottom: 1px solid #ddd;
-    color: #333;
-}
-
-tt.descname, tt.descclassname, tt.xref {
-    border: 0;
-}
-
-hr {
-    border: 1px solid #abc;
-    margin: 2em;
-}
-
-a tt {
-    border: 0;
-    color: #CA7900;
-}
-
-a tt:hover {
-    color: #2491CF;
-}
-
-pre {
-    font-family: 'Consolas', 'Deja Vu Sans Mono',
-                 'Bitstream Vera Sans Mono', monospace;
-    font-size: 0.95em;
-    letter-spacing: 0.015em;
-    line-height: 120%;
-    padding: 0.5em;
-    border: 1px solid #ccc;
-    background-color: #f8f8f8;
-}
-
-pre a {
-    color: inherit;
-    text-decoration: underline;
-}
-
-td.linenos pre {
-    padding: 0.5em 0;
-}
-
-div.quotebar {
-    background-color: #f8f8f8;
-    max-width: 250px;
-    float: right;
-    padding: 2px 7px;
-    border: 1px solid #ccc;
-}
-
-div.topic {
-    background-color: #f8f8f8;
-}
-
-table {
-    border-collapse: collapse;
-    margin: 0 -0.5em 0 -0.5em;
-}
-
-table td, table th {
-    padding: 0.2em 0.5em 0.2em 0.5em;
-}
-
-div.admonition, div.warning {
-    font-size: 0.9em;
-    margin: 1em 0 1em 0;
-    border: 1px solid #86989B;
-    background-color: #f7f7f7;
-    padding: 0;
-}
-
-div.admonition p, div.warning p {
-    margin: 0.5em 1em 0.5em 1em;
-    padding: 0;
-}
-
-div.admonition pre, div.warning pre {
-    margin: 0.4em 1em 0.4em 1em;
-}
-
-div.admonition p.admonition-title,
-div.warning p.admonition-title {
-    margin: 0;
-    padding: 0.1em 0 0.1em 0.5em;
-    color: white;
-    border-bottom: 1px solid #86989B;
-    font-weight: bold;
-    background-color: #AFC1C4;
-}
-
-div.warning {
-    border: 1px solid #940000;
-}
-
-div.warning p.admonition-title {
-    background-color: #CF0000;
-    border-bottom-color: #940000;
-}
-
-div.admonition ul, div.admonition ol,
-div.warning ul, div.warning ol {
-    margin: 0.1em 0.5em 0.5em 3em;
-    padding: 0;
-}
-
-div.versioninfo {
-    margin: 1em 0 0 0;
-    border: 1px solid #ccc;
-    background-color: #DDEAF0;
-    padding: 8px;
-    line-height: 1.3em;
-    font-size: 0.9em;
-}
diff --git a/docs/_static/tops.ico b/docs/_static/tops.ico
deleted file mode 100644
index 0ff93cd..0000000
Binary files a/docs/_static/tops.ico and /dev/null differ
diff --git a/docs/_static/total-station-weblogo.png b/docs/_static/total-station-weblogo.png
deleted file mode 100644
index 0f7d6a4..0000000
Binary files a/docs/_static/total-station-weblogo.png and /dev/null differ
diff --git a/docs/_templates/layout.html b/docs/_templates/layout.html
deleted file mode 100644
index 3dcca3f..0000000
--- a/docs/_templates/layout.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{% extends "!layout.html" %}
-
-
-{% block rootrellink %}
-        <li><a href="{{ pathto('index') }}">Total Open Station home</a>| </li>
-       <li><a href="{{ pathto('contents') }}">Documentation </a> »</li>
-{% endblock %}
-
-
-{% block relbar1 %}
-
-<div style="background-color: white; text-align: left; padding: 10px 10px 15px 15px">
-<a href="{{ pathto('index') }}"><img src="{{
-pathto("_static/total-station-weblogo.png", 1) }}" border="0" alt="sampledoc"/></a>
-</div>
-{{ super() }}
-{% endblock %}
-
-{# put the sidebar before the body #}
-{% block sidebar1 %}{{ sidebar() }}{% endblock %}
-{% block sidebar2 %}{% endblock %}
diff --git a/docs/conf.py b/docs/conf.py
deleted file mode 100644
index 70adb17..0000000
--- a/docs/conf.py
+++ /dev/null
@@ -1,195 +0,0 @@
-
-# -*- coding: utf-8 -*-
-#
-# Total Open Station documentation build configuration file, created by
-# sphinx-quickstart on Tue Sep  1 21:33:14 2009.
-#
-# This file is execfile()d with the current directory set to its containing dir.
-#
-# Note that not all possible configuration values are present in this
-# autogenerated file.
-#
-# All configuration values have a default; values that are commented out
-# serve to show the default.
-
-import sys, os
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-#sys.path.append(os.path.abspath('.'))
-
-# -- General configuration -----------------------------------------------------
-
-# Add any Sphinx extension module names here, as strings. They can be extensions
-# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx.ext.pngmath']
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
-
-# The suffix of source filenames.
-source_suffix = '.txt'
-
-# The encoding of source files.
-#source_encoding = 'utf-8'
-
-# The master toctree document.
-master_doc = 'contents'
-
-# General information about the project.
-project = u'Total Open Station'
-copyright = u'2008-2011, Stefano Costa, Luca Bianconi'
-
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The short X.Y version.
-version = '0.3'
-# The full version, including alpha/beta/rc tags.
-release = '0.3.0'
-
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#language = None
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-#today = ''
-# Else, today_fmt is used as the format for a strftime call.
-#today_fmt = '%B %d, %Y'
-
-# List of documents that shouldn't be included in the build.
-#unused_docs = []
-
-# List of directories, relative to source directory, that shouldn't be searched
-# for source files.
-exclude_trees = ['_build']
-
-# The reST default role (used for this markup: `text`) to use for all documents.
-#default_role = None
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-#add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-#add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-#show_authors = False
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
-
-# A list of ignored prefixes for module index sorting.
-#modindex_common_prefix = []
-
-
-# -- Options for HTML output ---------------------------------------------------
-
-# The theme to use for HTML and HTML Help pages.  Major themes that come with
-# Sphinx are currently 'default' and 'sphinxdoc'.
-html_theme = 'sphinxdoc'
-
-# Theme options are theme-specific and customize the look and feel of a theme
-# further.  For a list of options available for each theme, see the
-# documentation.
-#html_theme_options = {}
-
-# Add any paths that contain custom themes here, relative to this directory.
-#html_theme_path = []
-
-# The name for this set of Sphinx documents.  If None, it defaults to
-# "<project> v<release> documentation".
-#html_title = None
-
-# A shorter title for the navigation bar.  Default is the same as html_title.
-#html_short_title = None
-
-# The name of an image file (relative to this directory) to place at the top
-# of the sidebar.
-#html_logo = None
-
-# The name of an image file (within the static path) to use as favicon of the
-# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-html_favicon = "tops.ico"
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
-
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
-# using the given strftime format.
-#html_last_updated_fmt = '%b %d, %Y'
-
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-html_use_smartypants = True
-
-# Custom sidebar templates, maps document names to template names.
-#html_sidebars = {}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-#html_additional_pages = {}
-
-# If false, no module index is generated.
-#html_use_modindex = True
-
-# If false, no index is generated.
-#html_use_index = True
-
-# If true, the index is split into individual pages for each letter.
-#html_split_index = False
-
-# If true, links to the reST sources are added to the pages.
-#html_show_sourcelink = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a <link> tag referring to it.  The value of this option must be the
-# base URL from which the finished HTML is served.
-#html_use_opensearch = ''
-
-# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = ''
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = 'TotalOpenStationdoc'
-
-
-# -- Options for LaTeX output --------------------------------------------------
-
-# The paper size ('letter' or 'a4').
-#latex_paper_size = 'letter'
-
-# The font size ('10pt', '11pt' or '12pt').
-#latex_font_size = '10pt'
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title, author, documentclass [howto/manual]).
-latex_documents = [
-  ('index', 'TotalOpenStation.tex', u'Total Open Station Documentation',
-   u'Stefano Costa, Luca Bianconi', 'manual'),
-]
-
-# The name of an image file (relative to this directory) to place at the top of
-# the title page.
-#latex_logo = None
-
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-#latex_use_parts = False
-
-# Additional stuff for the LaTeX preamble.
-#latex_preamble = ''
-
-# Documents to append as an appendix to all manuals.
-#latex_appendices = []
-
-# If false, no module index is generated.
-#latex_use_modindex = True
diff --git a/docs/contents.txt b/docs/contents.txt
deleted file mode 100644
index be4b137..0000000
--- a/docs/contents.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-.. _contents:
-
-===============
- Documentation
-===============
-
-
-For users
-=========
-
-.. toctree::
-   :maxdepth: 1
-   :glob:
-   
-   requirements
-   installing
-   getting_sample_data
-   glossary
-   users
-
-For developers
-==============
-
-.. toctree::
-   :maxdepth: 1
-   :glob:
-
-   models
-   formats
-   contributing
-   roadmap
-
-Indices and tables
-==================
-
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`
-
diff --git a/docs/contributing.rst b/docs/contributing.rst
new file mode 100644
index 0000000..5f147ae
--- /dev/null
+++ b/docs/contributing.rst
@@ -0,0 +1,34 @@
+.. _contributing:
+
+==============
+ Contributing
+==============
+
+Total Open Station is free software, released under the GNU `General
+Public License v3`_ or (at your option) any later version.
+
+.. _`General Public License v3`: http://www.gnu.org/licenses/gpl-3.0.html
+
+Development is tracked with git. The main development repository is at
+GitHub where it's easy to fork the source code for your own experiments.
+
+.. GitHub: https://github.com/steko/totalopenstation
+
+Coding standards
+================
+
+We try to follow as much as possible PEP-8_,
+
+.. _PEP-8: http://www.python.org/dev/peps/pep-0008/
+
+Translations
+============
+
+We are happy to accept translations for Total Open
+Station. Translations can be easily submitted and reviewed at our
+Transifex_ page. Translators get recognition for their valuable work.
+
+If your native language is missing, why don't you start translating
+Total Open Station right now?
+
+.. _Transifex: https://www.transifex.com/projects/p/totalopenstation/resource/totalopenstation-app/
diff --git a/docs/contributing.txt b/docs/contributing.txt
deleted file mode 100644
index 727bac7..0000000
--- a/docs/contributing.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-.. _contributing:
-
-==============
- Contributing
-==============
-
-Total Open Station is free software, released under the GNU `General
-Public License v3`_ or (at your option) any later version.
-
-.. _`General Public License v3`: http://www.gnu.org/licenses/gpl-3.0.html
-
-Development is tracked with Mercurial_, a fast decentralized version
-control system. Installing *Mercurial* is not needed unless you want
-to participate in TOPS development, but please **do it**. The main
-development repository is on bitbucket_ where it's easy to fork the
-source code for your own experiments.
-
-.. _Mercurial: http://mercurial.selenic.com/
-.. _bitbucket: http://bitbucket.org/steko/totalopenstation
-
-The suggested way of contributing is by sending patches using the
-Mercurial *patchbomb* extension to the `development mailing list`_.
-
-.. _`development mailing list`: https://lists.berlios.de/mailman/listinfo/tops-dev
-
-Coding standards
-================
-
-We try to follow as much as possible PEP-8_, 
-
-.. _PEP-8: http://www.python.org/dev/peps/pep-0008/
diff --git a/docs/data.txt b/docs/data.txt
deleted file mode 100644
index d0d5101..0000000
--- a/docs/data.txt
+++ /dev/null
@@ -1,47 +0,0 @@
-Data
-====
-
-For each device, there are 2 kind of information needed:
-
-* connection parameters for downloading correctly data from the serial port
-* data model for parsing of the downloaded data
-
-Connection parameters
----------------------
-
-I decided to use the **pySerial** library, that works well and has a
-cross-platform interface. Connection parameters are expressed as arguments
-of the ``Serial`` class:
-
->>> zeiss = serial.Serial('/dev/ttyUSB0', baudrate=9600,
-    bytesize=serial.SEVENBITS, timeout=0, parity=serial.PARITY_NONE, rtscts=1)
-
-Things to note:
-
-* the connection port can also be indicated with a number, that is platform
-  indipendent, but I don't know if this means that the user has to enter the
-  port manually
-* the standard ``baudrate`` is 9600
-* setting ``timeout`` = 0 makes the device not emit errors nor strange beeps
-* the other options work, but I cannot explain them
-
-Data model
-----------
-
-The main information that we should get is made by the XYZ coordinates of each
-recorded point. This kind of information can probably be stored safely using
-a PythonGeoInterface_ or something similar.
-
-.. _PythonGeoInterface: http://trac.gispython.org/projects/PCL/wiki/PythonGeoInterface
-
-Each point must also be assigned its ID, that is the same recorded on the
-device.
-
-Each session has an arbitrary origin point, that each point must reference
-as an attribute to be able to patch different sessions together.
-
-It should be noted that these coordinates do not express any geographic nor
-cartographic position, and using GIS tools it's always difficult to avoid
-definining a Coordinate Reference System for your data. Often WGS84 is
-implicit if you don't specify one.
-
diff --git a/docs/faq.txt b/docs/faq.rst
similarity index 100%
rename from docs/faq.txt
rename to docs/faq.rst
diff --git a/docs/formats.txt b/docs/formats.rst
similarity index 100%
rename from docs/formats.txt
rename to docs/formats.rst
diff --git a/docs/getting_sample_data.txt b/docs/getting_sample_data.rst
similarity index 100%
rename from docs/getting_sample_data.txt
rename to docs/getting_sample_data.rst
diff --git a/docs/glossary.rst b/docs/glossary.rst
new file mode 100644
index 0000000..b913345
--- /dev/null
+++ b/docs/glossary.rst
@@ -0,0 +1,32 @@
+.. _glossary:
+
+Glossary
+========
+
+.. glossary::
+
+   input format
+      An input format is the way data downloaded from the total station
+      are encoded. This might include a default order for X, Y and Z
+      coordinates, particular ways of prefixing each point with some
+      distinctive text string and other features. Each input format is
+      unique, and it requires a dedicated module. Input formats are not
+      readable by common CAD or GIS software packages, and it is TOPS's work
+      to export them. These formats have a standard name, either given by the
+      manufacturer or by the TOPS development team.
+
+   model
+      When we refer to a *model* we mean all total stations that
+      have the same brand name and manufacturer (e.g. all those
+      labeled “Trimble Geodimeter 600”).
+
+   output format
+      A format readable by GIS, CAD or any sort of common software,
+      like CSV or DXF.
+
+   serial-USB adapter
+      While most total stations have a serial interface (port and cable),
+      modern PCs and laptops tend to have just USB ports. In such cases, it
+      is possible to use a serial-USB adapter cable, that enables you to
+      connect the total station to one of your USB ports. Depending on your
+      platform, the device might be identified as ``/dev/ttyUSB0`` or ``COM5``.
diff --git a/docs/glossary.txt b/docs/glossary.txt
deleted file mode 100644
index 71453ec..0000000
--- a/docs/glossary.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-Glossary
-========
-
-.. glossary::
-    
-    input format
-    	An input format is the way data downloaded from the total
-	station are encoded. This might include a default order for X,
-	Y and Z coordinates, particular ways of prefixing each point
-	with some distinctive text string and other features. Each
-	input format is unique, and it requires a dedicated
-	module. Input formats are not readable by common CAD or GIS
-	software packages, and it is TOPS's work to export them. These
-    	formats have a standard name, either given by the manufacturer
-    	or by the TOPS development team.
-
-    model
-        When we refer to a *model* we mean all total stations that
-        have the same brand name and manufacturer (e.g. all those
-        labeled “Trimble Geodimeter 600”).
-
-    output format
-        A format readable by GIS, CAD or any sort of common software,
-        like CSV or DXF.
-
-    serial-USB adapter
-        While most total stations have a serial interface (port and cable),
-        modern PCs and laptops tend to have just USB ports. In such cases, it
-        is possible to use a serial-USB adapter cable, that enables you to
-        connect the total station to one of your USB ports. Depending on your
-        platform, the device might be identified as ``/dev/ttyUSB0`` or
-        ``COM5``.
diff --git a/docs/index.rst b/docs/index.rst
new file mode 100644
index 0000000..12bdd92
--- /dev/null
+++ b/docs/index.rst
@@ -0,0 +1,96 @@
+.. TotalOpenStation documentation master file, created by
+   sphinx-quickstart on Sat May 24 15:43:10 2008.  You can adapt this
+   file completely to your liking, but it should at least contain the
+   root `toctree` directive.
+
+====================
+ Total Open Station
+====================
+
+Total Open Station (TOPS for friends) is a free software program for
+downloading and processing data from total station devices.
+
+This is a task which is usually done by proprietary, dedicated and
+Windows™-only software, but TOPS is different by nature, because:
+
+- it is **free software** released under the GNU GPLv3 license;
+- it works on *any* operating system, including mobile platforms like
+  OpenMoko;
+- it is designed to support as many devices and formats as possible, all
+  within the same program, opposed to having one program per device.
+
+Every model has its own quirks, but TOPS uses a modular structure and
+keeps the downloading of data logically separated from its processing,
+thus enabling exporting data to a variety of output formats, even at a
+later moment. Archiving of raw data is made easy by using plain text
+files.
+
+:ref:`users` are a growing number, you can be the next. See which
+:ref:`models` are already supported.
+
+Getting started with Total Open Station
+=======================================
+
+Total Open Station 0.3 is in now available as a development preview and
+can be installed on all major operating systems.
+
+Detailed instructions are available at the :ref:`installing` page.
+
+If you are having problems with getting started, try first our
+:ref:`faq`. If that doesn't help, get in touch with the development
+team through our dedicated support channel and `mailing list`_.
+
+.. _`mailing list`: https://lists.berlios.de/mailman/listinfo/tops-dev
+
+Documentation
+===============
+
+
+User manual
+-----------
+
+.. toctree::
+   :maxdepth: 1
+   :glob:
+
+   installing
+   running
+   getting_sample_data
+   models
+   formats
+   glossary
+   library
+   faq
+
+Total Open Station development
+------------------------------
+
+.. toctree::
+   :maxdepth: 1
+   :glob:
+
+   contributing
+   users
+   release
+   roadmap
+
+Indices and tables
+------------------
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+
+
+Who is doing this?
+==================
+
+Total Open Station is mainly developed as part of the IOSA_ project by
+Stefano Costa and Luca Bianconi, archaeologists.
+
+.. _IOSA: http://www.iosa.it/
+
+Total Open Station is licensed under the GNU General Public License
+version 3 or, at your option, any later version.
+
+The application icons are copyright by Lapo Calamandrei 2008.
diff --git a/docs/index.txt b/docs/index.txt
deleted file mode 100644
index c86c2aa..0000000
--- a/docs/index.txt
+++ /dev/null
@@ -1,86 +0,0 @@
-.. TotalOpenStation documentation master file, created by sphinx-quickstart on Sat May 24 15:43:10 2008.
-   You can adapt this file completely to your liking, but it should at least
-   contain the root `toctree` directive.
-
-====================
- Total Open Station
-====================
-
-Total Open Station (TOPS for friends) is a free software program for
-downloading and processing data from total station devices.
-
-This is a task which is usually done by proprietary, dedicated and
-Windows™-only software, but TOPS is different by nature, because:
-
-- it is *free software* released under the GNU GPLv3 license;
-- it works on *any* operating system, including mobile platforms like
-  OpenMoko;
-- it is designed to support as many devices and formats as possible, all
-  within the same program, opposed to having one program per device.
-
-Every model has its own quirks, but TOPS uses a modular structure and
-keeps the downloading of data logically separated from its processing,
-thus enabling exporting data to a variety of output formats, even at a
-later moment. Archiving of raw data is made easy by using plain text
-files.
-
-:ref:`users` are a growing number, you can be the next. See which
-:ref:`models` are already supported.
-
-Getting Total Open Station
-==========================
-
-Total Open Station is in a early phase of development and there isn't
-a stable release available yet.
-
-You can download the latest development “tip” either as a `compressed
-source archive`_ or directly with Mercurial::
-
-  hg clone https://bitbucket.org/steko/totalopenstation
-
-.. _`compressed source archive`: https://bitbucket.org/steko/totalopenstation/get/tip.zip 
-
-If you are on Windows, the recommended way to install is using the
-binary installer available at PyPI_. Detailed instructions are
-available at the page about :ref:`installing`.
-
-.. _PyPI: http://pypi.python.org/pypi/totalopenstation#downloads
-
-.. warning::
-
-   This is alpha quality code, it might behave in unexpected ways,
-   crash your system or just don't work at all.
-
-Binary installable packages are planned. requires
-using the command-line, but it is definitely easy.
-
-Documentation
-=============
-
-The :ref:`contents` includes both the user's manual and the
-developer's manual, and it is made with Sphinx_, as the whole website.
-
-.. _Sphinx: http://sphinx.pocoo.org/
-
-Help and support
-================
-
-If you're experiencing problems with TOPS, try first our :ref:`faq`.
-
-Community support is available through the `mailing list`_. Subscribe
-to request support for new models or submit bugs.
-
-.. _`mailing list`: https://lists.berlios.de/mailman/listinfo/tops-dev
-
-Who is doing this?
-==================
-
-Total Open Station is mainly developed as part of the IOSA_ project by
-Stefano Costa and Luca Bianconi, archaeologists.
-
-.. _IOSA: http://www.iosa.it/
-
-Total Open Station is licensed under the GNU General Public License
-version 3.
-
-The application icons are copyright by Lapo Calamandrei 2008.
diff --git a/docs/input_formats/general.txt b/docs/input_formats/general.rst
similarity index 100%
rename from docs/input_formats/general.txt
rename to docs/input_formats/general.rst
diff --git a/docs/input_formats/if_carlson_rw5.rst b/docs/input_formats/if_carlson_rw5.rst
new file mode 100644
index 0000000..a7fadb1
--- /dev/null
+++ b/docs/input_formats/if_carlson_rw5.rst
@@ -0,0 +1,42 @@
+=================================================================
+ :mod:`carlson_rw5` -- Carlson SurvCE Raw Data File Format (RW5)
+=================================================================
+
+.. module:: carlson_rw5
+    :platform: any
+    :synopsis: Read data in the Carlson RW5 data format
+.. moduleauthor:: Stefano Costa, Filip Kłosowski
+.. versionadded:: 0.4
+
+Carlson RW5 is an exchange format used by the Carlson SurvCE software.
+
+The official documentation about the format is provided on the
+`Carlson website`_.
+
+.. _Carlson website: http://update.carlsonsw.com/kbase_attach/372/
+
+RW5 is a rich format for raw data about the entire field operation of
+total stations and even GPS. At the moment, a minimal subset of the
+specification is supported, consisting of the ``OC``, ``BP``, ``LS``
+and ``SS`` record types.
+
+Each record is made of one line of text, with comma-separated fields::
+
+  OC,OP111,N 16556174.237,E 942130.662,EL 16.404
+  BK,OP111,BP108,BS0.00000,BC0.00000
+  LS,HI5.684,HR5.500
+  SS,OP111,FP108,AR0.00000,ZE0.00017,SD3.3566,--FENCE1
+
+The first field is a two-letter code of the type of record. All the
+following fields are composed with 1- or 2- letter field codes (such
+as ``OP``, ``N `` or ``FP``) and numeric values. The “Notes” field is
+introduced by the ``--`` code and contains a description of the
+record.
+
+*Sideshot* records (``SS``) reference the *Occupy point* record in the
+``OP`` field. In practice, each point has a unique number and can be
+referenced for various purposes from other records.
+
+TOPS is capable of converting raw measurement data into local
+coordinates, by performing a sequential processing of all records in
+their order.
diff --git a/docs/input_formats/if_leica_gsi.rst b/docs/input_formats/if_leica_gsi.rst
new file mode 100644
index 0000000..098b2ac
--- /dev/null
+++ b/docs/input_formats/if_leica_gsi.rst
@@ -0,0 +1,45 @@
+=========================
+ :mod:`leica_gsi` -- GSI
+=========================
+
+.. module:: leica_gsi
+    :platform: any
+    :synopsis: Read data in the GSI8 and GSI16 formats
+.. moduleauthor:: Stefano Costa
+.. versionadded:: 0.4
+
+GSI is a very popular data format, used by many Leica total stations. It is
+stored as ASCII text, with one line per measurement. In each line, there can
+be several *blocks* of data, with a blank space as a separation.
+
+There are two variants of GSI:
+
+- GSI8
+- GSI16
+
+but they only differ in the size of a single *block*.
+
+GSI is a very rich format, and it can hold both cartesian and polar coordinates
+with a detailed recording of all commands executed by the device and with
+explicit indication of the measurement units.
+
+Known limitations
+=================
+
+Support for raw measurements is still incomplete, namely it lacks support for
+base station points, except in some specific cases when the base point
+coordinates are directly associated with each measurement.
+
+Measurement units (both for distances and angles) are not supported yet.
+
+Acknowledgements
+================
+
+Support for this format was added thanks to Anna Hodgkinson and Hannah Petten
+at the University of Liverpool. Some details of the implementation are based
+on the SurveyTools QGIS plugin developed by Stefan Ziegler.
+
+.. seealso::
+
+   `GSI Online for Leica TPS <http://www.leica-geosystems.com/media/new/product_solution/gsi_manual.pdf>`_ 
+      Documentation for GSI from Leica.
diff --git a/docs/input_formats/if_leica_tcr_1205.txt b/docs/input_formats/if_leica_tcr_1205.rst
similarity index 100%
rename from docs/input_formats/if_leica_tcr_1205.txt
rename to docs/input_formats/if_leica_tcr_1205.rst
diff --git a/docs/input_formats/if_nikon_raw_v200.txt b/docs/input_formats/if_nikon_raw_v200.rst
similarity index 100%
rename from docs/input_formats/if_nikon_raw_v200.txt
rename to docs/input_formats/if_nikon_raw_v200.rst
diff --git a/docs/input_formats/if_sokkia_sdr33.rst b/docs/input_formats/if_sokkia_sdr33.rst
new file mode 100644
index 0000000..eee1924
--- /dev/null
+++ b/docs/input_formats/if_sokkia_sdr33.rst
@@ -0,0 +1,27 @@
+======================================
+ :mod:`sokkia_sdr33` -- Sokkia SDR 33
+======================================
+
+.. module:: sokkia_sdr33
+    :platform: any
+    :synopsis: Read data in the Sokkia SDR33 format
+.. moduleauthor:: Stefano Costa
+.. versionadded:: 0.4
+
+Sokkia SDR33 is a format used by older models such as Sokkia SET 5F.
+
+The format supports is based on fixed-position fields, with one record per
+line. SDR33 supports both polar (“raw”) measurements and cartesian
+coordinates (Northing, Easting, Elevation).
+
+The first four characters of a line are useful to separate the various
+type of measurements:
+
+- prism height is marked by code ``03NM``
+- polar measurements are marked by the ``09F1`` code
+- cartesian measurements are marked by ``08TP``
+- base stations are marked by ``02TP``, because their coordinates are
+  entered by hand as cartesian coordinates
+
+It is uncommon for polar and cartesian measurements to be found in the
+same dataset. 
diff --git a/docs/input_formats/if_trimble_are.txt b/docs/input_formats/if_trimble_are.rst
similarity index 100%
rename from docs/input_formats/if_trimble_are.txt
rename to docs/input_formats/if_trimble_are.rst
diff --git a/docs/input_formats/if_zeiss_rec_500.txt b/docs/input_formats/if_zeiss_rec_500.rst
similarity index 100%
rename from docs/input_formats/if_zeiss_rec_500.txt
rename to docs/input_formats/if_zeiss_rec_500.rst
diff --git a/docs/input_formats/new.txt b/docs/input_formats/new.rst
similarity index 100%
rename from docs/input_formats/new.txt
rename to docs/input_formats/new.rst
diff --git a/docs/input_formats/other.txt b/docs/input_formats/other.rst
similarity index 100%
rename from docs/input_formats/other.txt
rename to docs/input_formats/other.rst
diff --git a/docs/installing.rst b/docs/installing.rst
new file mode 100644
index 0000000..cfece28
--- /dev/null
+++ b/docs/installing.rst
@@ -0,0 +1,209 @@
+.. _installing:
+
+===============================
+ Installing Total Open Station
+===============================
+
+There are a few different ways to install Total Open Station,
+depending on your operating system.
+
+GNU/Linux distributions
+=======================
+
+OpenSUSE
+--------
+
+Total Open Station is packaged for OpenSUSE. Installing is as easy as::
+
+   $ sudo zypper ar http://download.opensuse.org/repositories/Application:/Geo/openSUSE_12.1/ GEO
+   $ sudo zypper refresh
+   $ sudo zypper install TotalOpenStation
+
+Debian and Ubuntu
+-----------------
+
+Total Open Station is included in Debian and Ubuntu, just::
+
+    sudo apt-get install totalopenstation
+
+as usual. Please note that the version provided by your distribution may not
+be the latest release.
+
+Mac OSX
+=======
+
+Download Python 2 from the official website, and follow `this document on the
+Python.org website <https://www.python.org/download/mac/tcltk/>`_, that will
+help you choosing the correct version of Python to use.
+
+.. warning::
+
+   Do not use the pre-installed Python that comes with the OSX operating system.
+
+Microsoft Windows
+=================
+
+Two packages need to be installed before the actual installation of
+Total Open Station, because the program is written in the Python
+programming language which is not installed by default on Windows.
+
+.. warning::
+
+   You might need administrator privileges to be able to install all
+   the programs.
+
+Install Python
+--------------
+
+Check whether your Windows is 32 bit (``x86``, common for older versions like
+Windows XP) or 64 bit (``x86-64``). Then download the latest Python installer
+for **Python 2** (not Python 3):
+
+- `Python Releases for Windows`_
+
+When you've got the installer donwloaded on your computer, install
+it. You don’t need to use Python directly, but it is needed for the
+program to work.
+
+.. _Python Releases for Windows: https://www.python.org/downloads/windows/
+
+Install pySerial
+----------------
+
+Download pySerial_ and install it. As with Python, you don’t need
+to use it directly, but it is needed for the program to work. Please make
+sure you are installing pySerial version 2.7 or a later version.
+
+.. _pySerial: http://pyserial.sourceforge.net/
+
+
+Install Total Open Station
+--------------------------
+
+Download the most recent version of Total Open Station from `PyPI`_ and install it.
+You will find the totalopenstation-gui script in :file:`C:/Python27/Scripts/`
+unless you have changed the standard installation options (not
+recommended). You can create a shortcut to the program on your desktop
+if you like.
+
+To upgrade to a newer version, just go to `PyPI`_ again, download the latest
+version and install it as with the first one. The old version will get
+overwritten. No data will be lost!
+
+.. _`PyPI`: https://pypi.python.org/pypi/totalopenstation/
+
+Install the Prolific PL2032 drivers
+-----------------------------------
+
+(optional, but recommended).
+
+Most USB-serial adapters are made with the Prolific chipset. If
+plugging the cable gives you errors about missing drivers for your
+hardware, drivers for Windows can be downloaded from the `Prolific
+website`_.
+
+.. _`Prolific website`:
+   http://www.prolific.com.tw/eng/downloads.asp?ID=31
+
+
+Using pip (for the latest version)
+==================================
+
+Until your operating system's packaging tools (e.g. apt or
+yum) allow you to install Total Open Station along with other
+programs, the recommended way to install is using pip_ (a package
+manager for Python) and virtualenv_ (which creates isolated
+software environments: basically you don't mix packages installed
+system-wise with your package manager and user-installed
+software). Here follows a detailed step-by-step guide.
+
+.. _pip: http://www.pip-installer.org/
+.. _virtualenv: http://pypi.python.org/pypi/virtualenv
+
+Install ``pip`` and ``virtualenv``
+----------------------------------
+
+First of all, make sure you have ``pip`` and ``virtualenv``
+installed. All major GNU/Linux distributions have them packaged:
+
+- Debian and derivatives (including Ubuntu): ``apt-get install
+  python-pip python-virtualenv``
+- Fedora: ``yum install python-pip python-virtualenv``
+
+Create a virtual environment
+----------------------------
+
+Creating a virtual environment is as easy as typing in a terminal::
+
+    virtualenv tops-environment
+
+A new directory named ``tops-environment`` was created. It contains a
+minimal set of files needed to manage a Python installation that is
+isolated from the one installed on your system, helping to keep things
+clean.
+
+Now activate the environment with::
+
+    source tops-environment/bin/activate
+
+From now on, all Python-related actions will be executed within the
+newly created environment, and not on the system-wide
+installation. You terminal should look a bit different when the
+virtual environment is active::
+
+    (tops-environment)steko at gibreel:$
+
+You can change directory freely, the environment will remain active.
+
+You *deactivate* the environment (that is, you exit from it), with the
+``deactivate`` command.
+
+Installing Total Open Station
+-----------------------------
+
+Once the virtual environment is *active*, you're ready to install
+Total Open Station, with::
+
+    pip install totalopenstation
+
+This will automatically download the latest released version from the
+Python Package Index (PyPI), and install all the other required Python
+packages as well.
+
+Installing development versions
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Sometimes it is useful to install development versions before they are
+released, to help with testing of new features and making sure that
+there are no new bugs.
+
+Using the procedure described above it is fairly easy to create
+another, separate environment. Once the new environment is *active*,
+the command for installing a development version is::
+
+    pip install -e git+https://github.com/steko/totalopenstation#egg=totalopenstation
+
+Developers may ask you to install from another repository, but the
+concept stays the same. This mechanism is very flexible and allows to
+install and test different versions safely.
+
+Running the program
+-------------------
+
+When the program is installed, you can use it from the command line or
+with a graphical interface (recommended for new users).
+
+From your terminal, type::
+
+    totalopenstation-gui.py
+
+and the program should start. Please report any errors to the `issue tracker`_.
+
+The next time you want to run the program, follow these steps:
+
+#. open a terminal
+#. ``cd`` to the directory where the virtual environment was created
+#. ``source tops-environment/bin/activate`` to enter the virtualenv
+#. ``totalopenstation-gui.py`` will start the program
+
+.. _issue tracker: https://github.com/steko/totalopenstation/issues
diff --git a/docs/installing.txt b/docs/installing.txt
deleted file mode 100644
index f22755c..0000000
--- a/docs/installing.txt
+++ /dev/null
@@ -1,59 +0,0 @@
-.. _installing:
-
-============
- Installing
-============
-
-There are a few different ways to install Total Open Station,
-depending on your operating system. If you are on GNU/Linux or Mac
-OSX, you should already have Python installed on your
-system. Instructions for Microsoft Windows are below.
-
-Using ``pip``
-=============
-
-Until your operating system's packaging tools (e.g. ``apt`` or
-``yum``) allow you to install Total Open Station along with other
-programs, the recommended way to install is using ``pip``, like::
-
-  pip install totalopenstation
-
-This will install all the other required Python packages as
-well. ``pip`` is complementary with virtualenv_, and it is encouraged
-that you use virtualenv to isolate your installation::
-
-  pip -E tops install totalopenstation
-
-where ``-E tops`` creates a virtual environment named ``tops`` and
-installs totalopenstation into it.
-
-.. _virtualenv: http://pypi.python.org/pypi/virtualenv
-
-Read more about ``pip`` at http://pip.openplans.org/ and
-http://guide.python-distribute.org/pip.html .
-
-Manual install with ``setup.py``
-================================
-
-If you manually download the source distribution file from PyPI or
-from the mercurial repository, first make sure you have installed all
-the :ref:`required packages <requirements>`. Then, just ``cd`` into
-the uncompressed directory and::
-
-  python setup.py install
-
-Again, it's strongly recommended to avoid a system-wide install. Use
-``virtualenv``.
-
-Windows
-=======
-
-There is a binary installer available at PyPI_. This requires you to
-install a Python_ distribution (latest available is 2.7.1 ‒ do not
-install Python 3 as we don't support it yet), and the pyserial_ and
-setuptools_ modules.
-
-.. _PyPI: http://pypi.python.org/pypi/totalopenstation#downloads
-.. _Python: http://www.python.org/getit/windows/
-.. _pyserial: http://pypi.python.org/pypi/pyserial#downloads
-.. _setuptools: http://pypi.python.org/pypi/setuptools#downloads
diff --git a/docs/library.txt b/docs/library.rst
similarity index 51%
rename from docs/library.txt
rename to docs/library.rst
index d63e6eb..08a7eaa 100644
--- a/docs/library.txt
+++ b/docs/library.rst
@@ -15,4 +15,12 @@ This is a feature.
 Example: a web app for converting total station data
 ====================================================
 
+If you want to see how to write a web app to convert total station
+data in 50 lines of Python code, check out `TOPS in the Cloud
+<https://bitbucket.org/steko/tops-cloud/overview>`_. It is made with
+`Flask <http://flask.pocoo.org/>`_ and shows how to use Total Open
+Station as a programming library.
 
+We think it's important to be able to use TOPS in this way as in any
+other way (GUI, command-line), and this is one of the reasons why
+there is no stable release yet: the TOPS API is still unstable.
diff --git a/docs/models.txt b/docs/models.rst
similarity index 100%
rename from docs/models.txt
rename to docs/models.rst
diff --git a/docs/models/general.txt b/docs/models/general.rst
similarity index 100%
rename from docs/models/general.txt
rename to docs/models/general.rst
diff --git a/docs/models/model_leica_tcr_1205.txt b/docs/models/model_leica_tcr_1205.rst
similarity index 100%
rename from docs/models/model_leica_tcr_1205.txt
rename to docs/models/model_leica_tcr_1205.rst
diff --git a/docs/models/model_nikon_npl_350.txt b/docs/models/model_nikon_npl_350.rst
similarity index 100%
rename from docs/models/model_nikon_npl_350.txt
rename to docs/models/model_nikon_npl_350.rst
diff --git a/docs/models/model_zeiss_elta_r55.txt b/docs/models/model_zeiss_elta_r55.rst
similarity index 100%
rename from docs/models/model_zeiss_elta_r55.txt
rename to docs/models/model_zeiss_elta_r55.rst
diff --git a/docs/models/other.txt b/docs/models/other.rst
similarity index 100%
rename from docs/models/other.txt
rename to docs/models/other.rst
diff --git a/docs/release.rst b/docs/release.rst
new file mode 100644
index 0000000..419d68a
--- /dev/null
+++ b/docs/release.rst
@@ -0,0 +1,70 @@
+.. _release:
+
+============================================
+ Releasing a new Total Open Station version
+============================================
+
+Translations
+============
+
+The main tool we use for translating Total Open Station is `Transifex`_.
+
+When the release is approaching and the source strings are not going
+to change, declare string freeze. Source messages should be updated
+with one of ``xgettext``, ``pygettext`` or Babel_ (with the
+``extract_messages`` command), producing ``totalopenstation.pot``, e.g.::
+
+    xgettext  scripts/*.py -o locale/totalopenstation.pot
+
+The resulting PO template file mut be uploaded to Transifex for translators
+to work with::
+
+    tx push -s
+
+If there is an existing translation, ``msgmerge`` or Babel
+``update_catalog`` should be used to update.
+
+Translators should be invited to submit new translations, either via
+``.po`` files or Transifex_.
+
+When the translation period is over, pull the updated ``.po`` files
+from Transifex with::
+
+    tx pull -r totalopenstation.totalopenstation-app -a
+
+and check that the files are updated. Commit new files separately from updates.
+
+.. _Babel: http://babel.edgewall.org/wiki/Documentation/0.9/setup.html
+.. _Transifex: https://www.transifex.com/projects/p/totalopenstation/resource/totalopenstation-app/
+
+If using Babel, compile the translated messages with::
+
+    python setup.py compile_catalog -d locale
+
+Documentation
+=============
+
+The documentation is included in the source tree, and is published
+online at <http://totalopenstation.readthedocs.org/>_.
+
+Manual pages for the three scripts provided with TOPS are not
+available at the moment.
+
+Release
+=======
+
+The version number is declared in ``totalopenstation/__init__.py`` and
+is propagated in other places from there, including ``setup.py`` and
+the “About” dialog.
+
+A *source distribution* is made using::
+
+  python setup.py sdist
+
+A *built distribution* is made using (e.g. for Windows installer)::
+
+  python setup.py bdist --formats wininst
+
+We are currently following the `Python Packaging User Guide
+<https://packaging.python.org/en/latest/distributing.html>`_ and
+distributing sources and *wheels*.
diff --git a/docs/requirements.txt b/docs/requirements.txt
deleted file mode 100644
index 6c3fd51..0000000
--- a/docs/requirements.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-.. _requirements:
-
-==============
- Requirements
-==============
-
-TotalOpenStation is written using the Python_ language. Thus you'll need to
-have a working installation of the current version of a Python of your choice.
-
-Across these pages we will refer to the standard Python_ distribution.
-
-.. _Python: http://www.python.org/
-
-Obviously, we're not going to reinvent the wheel, so we have chosen to use
-some Python libraries for some specific tasks:
-
-* the pySerial_ library
-* the Python Tkinter_ GUI library, which comes with the standard
-  Python setup
-
-.. _pySerial: http://pyserial.sourceforge.net/
-.. _Tkinter: http://wiki.python.org/moin/TkInter
-
-pySerial is needed for downloading data from the serial port (even
-through a :term:`serial-USB adapter`).
-
-Tkinter is at the moment responsible of the Graphical User
-Interface. This might change in future releases of Total Open
-Station.
-
-Getting Python
-==============
-
-If you're on GNU/Linux or a recent Mac OSX, Python should be already
-installed on your system, so you just need to get the mentioned
-libraries.
-
-On Windows, you can get an installer from the main Python website, in
-the download_ section.
-
-.. _download: http://www.python.org/download/
-
-Getting libraries
-=================
-
-Generally speaking, refer to the `pySerial website`_.
-
-.. _`pySerial website`: http://pyserial.sourceforge.net/pyserial.html#installation
-
-GNU/Linux
----------
-
-Use your package manager (``apt-get``, ``yum``) and look
-for a package named ``python-serial`` or ``pyserial`` and install
-it. To test whether the installation went fine, open a terminal, start
-the python interpreter with ``python`` and at the prompt type ``import
-serial`` then return. It should say nothing, like this:
-
->>> import serial
-
-If it complains, something went wrong::
-
-    >>> import serial
-    Traceback (most recent call last):
-      File "<stdin>", line 1, in <module>
-    ImportError: No module named serial
-
-and you need to check with your distribution package manager and bug
-reporting system.
-
-Mac OSX
--------
-
-The simplest way is probably to install setuptools and use::
-
-    easy_install -U pyserial
-
-Microsoft Windows
------------------
-
-The pySerial website has executable installers for various versions of
-this operating system. As pySerial's documentation says, you will need
-also the pywin32_ library by Mark Hammond.
-
-.. _pywin32: http://pypi.python.org/pypi/pywin32
diff --git a/docs/roadmap.txt b/docs/roadmap.rst
similarity index 59%
rename from docs/roadmap.txt
rename to docs/roadmap.rst
index 53ff201..b18c93c 100644
--- a/docs/roadmap.txt
+++ b/docs/roadmap.rst
@@ -7,16 +7,16 @@
 Present
 =======
 
-Total Open Station is at version 0.2, which is an **alpha** release.
+Total Open Station is at version |version|, which is an **alpha**
+release. We think it works quite well, but the number of supported
+formats is still too small for a beta release.
 
 Near Future
 ===========
 
-Total Open Station 0.3 will be released by June 2011. Planned
-features include:
-
-- more responsive download dialogs
-- more solid internal data format
+The next version of Total Open Station will be released in 2012. See
+what features are being `worked on
+<https://bitbucket.org/steko/totalopenstation/issues?milestone=0.4>`_.
 
 Future
 ======
diff --git a/docs/running.rst b/docs/running.rst
new file mode 100644
index 0000000..4f2fc4a
--- /dev/null
+++ b/docs/running.rst
@@ -0,0 +1,128 @@
+.. _running:
+
+==========================
+ Using Total Open Station
+==========================
+
+There are two ways to use Total Open Station, from the command line or
+as a user-friendly program. Each mode of operation has its drawbacks,
+and both are constantly used and tested.
+
+Graphical User Interface
+========================
+
+If you followed the guide about :ref:`installing`, you should be able
+to start Total Open Station.
+
+The basic usage of Total Open Station is made of the following steps:
+
+#. download raw data from the total station
+#. save raw data (optional, but recommended)
+#. export raw data to an output format
+
+Saving raw data enables you to open data files even at a later stage
+and process them when it's more appropriate.
+
+Downloading raw data
+--------------------
+
+To download raw data, your total station must be connected to the
+computer you are using, and the connection parameters must be known
+and set in the program. Total Open Station saves certain parameters
+across work sessions, but not all of them are saved, yet.
+
+The normal download procedure is a four-step operation:
+
+#. once the right parameters are set, click on the :guilabel:`Connect`
+   button
+#. a small window appears, telling that the program is ready to start
+   the download
+#. start the data transfer from the menu of the total station
+#. press the :guilabel:`OK` button in the small window (the order of
+   these two last steps matters)
+
+Downloaded data will be shown in real-time in the main program
+window. A short information dialog will appear at the end of the
+transfer. If any error blocks you in this procedure, please send a
+detailed description to the mailing list so we can help you.
+
+Saving raw data
+---------------
+
+Raw data shown in the main program window can be edited if you need,
+and saved to disk clicking the :guilabel:`Save raw data` button. We
+highly recommend to save all data to disk before any other action,
+because it prevents data loss and it is a very convenient way to have
+a backup of your work. Plus, raw data files are generally very small
+in size if compared to the exported files.
+
+By default saved files get a :file:`.tops` extension, but it is
+absolutely optional to have this extension.
+
+Opening previously saved data
+-----------------------------
+
+The :guilabel:`Open file` button lets you open any ASCII file you have on
+your disk for processing with Total Open Station, either previously
+saved with TOPS itself or not.
+
+Data can be edited in the text area. Editing patterns include:
+
+- removing lines of data that don't need to be processed
+- correcting errors in data
+- pasting more than one data file together
+
+Please note that if you do not know well the raw data format you are
+editing, data may become inconsistent, and it will not be possible to
+process them properly later. If you are unsure, do not edit raw data.
+
+Exporting data
+--------------
+
+The main purpose of Total Open Station is to export raw data in
+formats that are not read by GIS and CAD programs, to common formats
+that are easy to import.
+
+To start exporting data, make sure that the text area in the main
+program window contains the data you want to export. If this is not
+the case, you can either download data from your total station or open
+a previously-saved data file.
+
+Click the :guilabel:`Process data` button. A window will appear,
+allowing you to choose two processing options:
+
+- the input format
+- the output format
+
+Select the input format of the raw data you have (if you are using the
+same total station all the time, it will be probably the same -- we
+are working on adding a way to save the last used formats across
+different working sessions).
+
+Then select the output format you want to use, and proceed with the
+:guilabel:`OK` button. You will be asked where you want to save the
+exported file.
+
+You can now open your exported data in the GIS or CAD program of
+choice for further processing. Should you need to go back to the
+original data, you can always repeat the above procedure starting from
+the saved raw data file.
+
+Command-line
+============
+
+After :ref:`installing`, there will be three new executable programs
+in your path. Two of them are meant for being run in a terminal, and
+are extremely useful for batch operations and easy repeating of common
+tasks with minimum time effort.
+
+:program:`totalopenstation-cli-connector` and
+:program:`totalopenstation-cli-parser` are two command line programs
+that make the same features of the graphical interface available to
+those who prefer working in a terminal. They are well documented, and
+they make it possible to process large amounts of data files via shell
+scripting, or to drastically reduce the time needed for downloading
+raw data.
+
+These two programs also provide a basic but complete example of how to
+use Total Open Station as a programming library.
diff --git a/docs/running.txt b/docs/running.txt
deleted file mode 100644
index ddf69f4..0000000
--- a/docs/running.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-.. _running:
-
-============================
- Running Total Open Station
-============================
-
-There are two ways to use Total Open Station, from the command line or
-as a user-friendly program. Each mode of operation has its drawbacks,
-and both are constantly used and tested.
-
-Command-line
-============
-
-After :ref:`installing`, there will be three new executable programs
-in your path. Two of them are meant for being run in a terminal, and
-are extremely useful for batch operations and easy repeating of common
-tasks with minimum time effort.
-
-
diff --git a/docs/users.txt b/docs/users.rst
similarity index 57%
rename from docs/users.txt
rename to docs/users.rst
index df486f9..188223d 100644
--- a/docs/users.txt
+++ b/docs/users.rst
@@ -6,19 +6,21 @@
 
 So far, Total Open Station has been successfully used by:
 
-    * Università di Siena, `Dipartimento di Archeologia e Storia delle
+    * Università di Siena, Italy `Dipartimento di Archeologia e Storia delle
       Arti`_, for the excavations at Gortyna and Vignale
-    * `Oxford Archaeology`_, for fieldwork, using the OpenMoko_ mobile
+    * `Oxford Archaeology`_, UK, for fieldwork, using the OpenMoko_ mobile
       platform
-    * `Arke_Geomática`_ has blogged about TOPS
-    * Arc-Team_: we have added support for the Trimble “area” format
+    * `Arke_Geomática`_, Spain has blogged about TOPS
+    * Arc-Team_, Italy, we have added support for the Trimble “area” format
       after Arc-Team sent us some sample data
-    * Università di Padova
+    * Università di Padova, Italy (excavation in Montegrotto)
+    * `Gurob Harem Palace Project`_, Egypt
 
-.. _`Dipartimento di Archeologia e Storia delle Arti`: http://www.archeo.unisi.it
+.. _`Dipartimento di Archeologia e Storia delle Arti`: http://www.archeoarti.unisi.it
 .. _`Oxford Archaeology`: http://thehumanjourney.net/
 .. _OpenMoko: http://blogs.thehumanjourney.net/finds/entry/2
 .. _Arke_Geomática: http://arkeox.blogspot.com/2008/10/sistemas-electrnicosdigitales-de.html
 .. _Arc-Team: http://www.arc-team.com/
+.. _`Gurob Harem Palace Project`: http://www.gurob.org.uk/
 
 If you're in the number of happy users, let us know.
diff --git a/po/totalopenstation.pot b/locale/de/LC_MESSAGES/messages.po
similarity index 62%
copy from po/totalopenstation.pot
copy to locale/de/LC_MESSAGES/messages.po
index 87da2fe..1ac26e7 100644
--- a/po/totalopenstation.pot
+++ b/locale/de/LC_MESSAGES/messages.po
@@ -1,41 +1,44 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
+# 
+# Translators:
+# Stefano Costa <steko at iosa.it>, 2013
+# Wasilis <inactive+Wasilis at transifex.com>, 2013
 msgid ""
 msgstr ""
-"Project-Id-Version: Total Open Station 0.2\n"
-"Report-Msgid-Bugs-To: \n"
+"Project-Id-Version: Total Open Station\n"
+"Report-Msgid-Bugs-To: http://bitbucket.org/steko/totalopenstation/issues/\n"
 "POT-Creation-Date: 2010-02-08 16:07+0100\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
+"PO-Revision-Date: 2013-05-10 15:30+0000\n"
+"Last-Translator: Stefano Costa <steko at iosa.it>\n"
+"Language-Team: German (http://www.transifex.com/projects/p/totalopenstation/language/de/)\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: de\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: ../scripts/totalopenstation-cli-parser.py:31
 msgid "usage: %prog [option] arg1 [option] arg2 ..."
-msgstr ""
+msgstr "Nutzung: %prog [Option] arg1 [Option] arg2 ..."
 
 #: ../scripts/totalopenstation-cli-parser.py:39
 msgid "select input FILE  (do not specify for stdin)"
-msgstr ""
+msgstr "Wähleingang Datei (nicht für stdin angeben)"
 
 #: ../scripts/totalopenstation-cli-parser.py:46
 msgid "select output FILE (do not specify for stdout)"
-msgstr ""
+msgstr "Ausgabedatei auswählen (nicht für stdout angeben) "
 
 #: ../scripts/totalopenstation-cli-parser.py:53
 #: ../scripts/totalopenstation-cli-parser.py:60
 msgid "select input FORMAT"
-msgstr ""
+msgstr "Eingang wählen FORMAT "
 
 #: ../scripts/totalopenstation-cli-parser.py:67
 msgid "overwrite existing output file"
-msgstr ""
+msgstr " \t\nüberschreiben vorhandene Ausgabedatei "
 
 #: ../scripts/totalopenstation-cli-parser.py:79
 #, python-format
@@ -45,33 +48,33 @@ msgid ""
 "%s\n"
 "\n"
 "%s"
-msgstr ""
+msgstr "\nFehler:\n%s\n\n%s"
 
 #: ../scripts/totalopenstation-cli-parser.py:81
 msgid "Please specify an input format"
-msgstr ""
+msgstr "Bitte geben Sie ein Input-Format"
 
 #: ../scripts/totalopenstation-cli-parser.py:93
 msgid "Please specify an output format"
-msgstr ""
+msgstr "Bitte geben Sie ein Ausgabeformat "
 
 #: ../scripts/totalopenstation-cli-parser.py:117
 #, python-format
 msgid "Downloaded data saved to out file %s"
-msgstr ""
+msgstr "Heruntergeladene Daten aus Datei %s gespeichert "
 
 #: ../scripts/totalopenstation-cli-parser.py:121
 #, python-format
 msgid "Downloaded data saved to file %s,"
-msgstr ""
+msgstr "Heruntergeladene Daten gespeichert in Datei %s, "
 
 #: ../scripts/totalopenstation-cli-parser.py:122
 msgid "overwriting the existing file"
-msgstr ""
+msgstr "Überschreiben der vorhandenen Datei "
 
 #: ../scripts/totalopenstation-cli-parser.py:124
 msgid "Specified output file already exists\n"
-msgstr ""
+msgstr "Angegebene Ausgabedatei existiert bereits⏎\n"
 
 #: ../scripts/totalopenstation-gui.py:99
 msgid ""
@@ -82,7 +85,7 @@ msgid ""
 "http://tops.berlios.de/\n"
 "\n"
 "The application logo is copyright 2008 Lapo Calamandrei."
-msgstr ""
+msgstr "\nTotal Open Station is copyright 2008-2009 Luca Bianconi, Stefano Costa\nand the IOSA project.\n\nhttp://tops.berlios.de/\n\nThe application logo is copyright 2008 Lapo Calamandrei."
 
 #: ../scripts/totalopenstation-gui.py:131
 msgid ""
@@ -90,147 +93,147 @@ msgid ""
 "This dialog will guide you through the download procedure.\n"
 "\n"
 "Press OK when finished to proceed."
-msgstr ""
+msgstr "\nDieser Dialog wird Sie durch den Download-Vorgang zu führen.\n \nDrücken Sie OK, wenn Sie fertig sind , um fortzufahren. "
 
 #: ../scripts/totalopenstation-gui.py:164
 msgid "waiting for data from device"
-msgstr ""
+msgstr "Warten auf Daten vom Gerät "
 
 #: ../scripts/totalopenstation-gui.py:165
 msgid "Connection initialized with the following parameters:\n"
-msgstr ""
+msgstr "Verbindung mit den folgenden Parametern initialisiert:⏎\n"
 
 #: ../scripts/totalopenstation-gui.py:167
 msgid ""
 "\n"
 "Start the download procedure on the device.\n"
-msgstr ""
+msgstr "\nBeginn des Download-Vorgangs auf dem Gerät.\n"
 
 #: ../scripts/totalopenstation-gui.py:168
 msgid "Press OK when done."
-msgstr ""
+msgstr "Drücken Sie OK, wenn Sie fertig sind. "
 
 #: ../scripts/totalopenstation-gui.py:187
 msgid "Choose output format and destination file"
-msgstr ""
+msgstr "Wählen Sie das Ausgabeformat und die Zieldatei"
 
 #: ../scripts/totalopenstation-gui.py:188
 msgid "Output format:\n"
-msgstr ""
+msgstr "Ausgabeformat:⏎\n"
 
 #: ../scripts/totalopenstation-gui.py:201
 msgid "Data to be processed:\n"
-msgstr ""
+msgstr "Daten die verarbeitet werden:\n"
 
 #: ../scripts/totalopenstation-gui.py:204
 msgid "Input format"
-msgstr ""
+msgstr "Eingabeformat "
 
 #: ../scripts/totalopenstation-gui.py:209
 msgid "choose a model"
-msgstr ""
+msgstr "ein model auswählen"
 
 #: ../scripts/totalopenstation-gui.py:245
 msgid "Error"
-msgstr ""
+msgstr "Fehler"
 
 #: ../scripts/totalopenstation-gui.py:246
 msgid "Connection failed with the following error message:\n"
-msgstr ""
+msgstr "Die Verbindung wurde mit der folgenden Fehlermeldung unterbrochen::\n"
 
 #: ../scripts/totalopenstation-gui.py:247
 msgid ""
 "\n"
 "Check your connection parameters and try again.\n"
-msgstr ""
+msgstr "\nÜberprüfen Sie Ihre Verbindungsparameter und versuchen Sie es erneut. \n"
 
 #: ../scripts/totalopenstation-gui.py:259
 msgid "Cancel"
-msgstr ""
+msgstr "Abbrechen"
 
 #: ../scripts/totalopenstation-gui.py:325
 msgid "Port"
-msgstr ""
+msgstr "Port"
 
 #: ../scripts/totalopenstation-gui.py:362
 msgid "Total Station"
-msgstr ""
+msgstr "Total Station"
 
 #: ../scripts/totalopenstation-gui.py:393
 #: ../scripts/totalopenstation-gui.py:418
 #: ../scripts/totalopenstation-gui.py:449
 #: ../scripts/totalopenstation-gui.py:477
 msgid "choose a value"
-msgstr ""
+msgstr "wählen Sie einen Wert"
 
 #: ../scripts/totalopenstation-gui.py:412
 msgid "Bytesize"
-msgstr ""
+msgstr "Bytesize"
 
 #: ../scripts/totalopenstation-gui.py:443
 msgid "Parity setting"
-msgstr ""
+msgstr "Parity Einstellung"
 
 #: ../scripts/totalopenstation-gui.py:455
 msgid "Even"
-msgstr ""
+msgstr "Gerade "
 
 #: ../scripts/totalopenstation-gui.py:458
 msgid "None"
-msgstr ""
+msgstr "keiner "
 
 #: ../scripts/totalopenstation-gui.py:461
 msgid "Odd"
-msgstr ""
+msgstr "ungerade "
 
 #: ../scripts/totalopenstation-gui.py:471
 msgid "Stop bit"
-msgstr ""
+msgstr "Stopp-Bit "
 
 #: ../scripts/totalopenstation-gui.py:513
 msgid "Connect"
-msgstr ""
+msgstr "Verbinden"
 
 #: ../scripts/totalopenstation-gui.py:522
 msgid "Open file"
-msgstr ""
+msgstr "Datei öffnen"
 
 #: ../scripts/totalopenstation-gui.py:530
 msgid "Save raw data"
-msgstr ""
+msgstr "Rohdaten speichern"
 
 #: ../scripts/totalopenstation-gui.py:538
 msgid "Process data"
-msgstr ""
+msgstr "Prozedurdaten"
 
 #: ../scripts/totalopenstation-gui.py:547
 msgid "About TOPS"
-msgstr ""
+msgstr "Über TOPS"
 
 #: ../scripts/totalopenstation-gui.py:555
 msgid "Quit"
-msgstr ""
+msgstr "Beenden"
 
 #: ../scripts/totalopenstation-gui.py:567
 msgid ""
 "Welcome.\n"
 "Turn your device on."
-msgstr ""
+msgstr "Willkommen. \nSchalten Sie Ihr Gerät ein. "
 
 #: ../scripts/totalopenstation-gui.py:669
 msgid "The download has started..."
-msgstr ""
+msgstr "Das Herunterladen wurde gestartet..."
 
 #: ../scripts/totalopenstation-gui.py:671
 msgid ""
 "The download has finished.\n"
 "Press OK to proceed"
-msgstr ""
+msgstr "Das Herunterladen wurde beendet.\nDrücken sie auf OK um fortzufahren"
 
 #: ../scripts/totalopenstation-gui.py:712
 msgid "No output file specified"
-msgstr ""
+msgstr "Keine Ausgabe-Datei angegeben "
 
 #: ../scripts/totalopenstation-gui.py:713
 msgid "No processing settings entered!\n"
-msgstr ""
+msgstr "Keine Verarbeitung der eingegebenen Einstellungen! \n"
diff --git a/po/el.po b/locale/el/LC_MESSAGES/messages.po
similarity index 73%
rename from po/el.po
rename to locale/el/LC_MESSAGES/messages.po
index d9df838..1ddf1ca 100644
--- a/po/el.po
+++ b/locale/el/LC_MESSAGES/messages.po
@@ -1,33 +1,41 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# 
+# Translators:
+# Stefano Costa <steko at iosa.it>, 2013
+# Wasilis <m.wasilis at yahoo.de>, 2013
+# Konstantinos Papaspyrou <kotsos at gmail.com>, 2010
 msgid ""
 msgstr ""
-"Project-Id-Version: el v0.1\n"
-"Report-Msgid-Bugs-To: \n"
+"Project-Id-Version: Total Open Station\n"
+"Report-Msgid-Bugs-To: http://bitbucket.org/steko/totalopenstation/issues/\n"
 "POT-Creation-Date: 2010-02-08 16:07+0100\n"
-"PO-Revision-Date: 2010-02-28 20:29+0200\n"
-"Last-Translator: Konstantinos Papaspyrou <kotsos at gmail.com>\n"
-"Language-Team: Greek\n"
+"PO-Revision-Date: 2013-05-08 20:50+0000\n"
+"Last-Translator: Stefano Costa <steko at iosa.it>\n"
+"Language-Team: Greek (http://www.transifex.com/projects/p/totalopenstation/language/el/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Poedit-Language: Greek\n"
+"Language: el\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: ../scripts/totalopenstation-cli-parser.py:31
 msgid "usage: %prog [option] arg1 [option] arg2 ..."
-msgstr "usage: %prog [option] arg1 [option] arg2 ..."
+msgstr "Χρήση: %prog [επιλογή] arg1 [επιλογή] arg2 ..."
 
 #: ../scripts/totalopenstation-cli-parser.py:39
 msgid "select input FILE  (do not specify for stdin)"
-msgstr "select input FILE  (do not specify for stdin)"
+msgstr "επιλέξτε το αρχείο εισόδου (δεν προσδιορίζει για stdin) "
 
 #: ../scripts/totalopenstation-cli-parser.py:46
 msgid "select output FILE (do not specify for stdout)"
-msgstr "select output FILE (do not specify for stdout)"
+msgstr "επιλέξτε το αρχείο εξόδου (δεν προσδιορίζει για stdout)"
 
 #: ../scripts/totalopenstation-cli-parser.py:53
 #: ../scripts/totalopenstation-cli-parser.py:60
 msgid "select input FORMAT"
-msgstr "select input FORMAT"
+msgstr "Επιλέξτε τη μορφή εισόδου "
 
 #: ../scripts/totalopenstation-cli-parser.py:67
 msgid "overwrite existing output file"
@@ -41,12 +49,7 @@ msgid ""
 "%s\n"
 "\n"
 "%s"
-msgstr ""
-"\n"
-"Σφάλμα:\n"
-"%s\n"
-"\n"
-"%s"
+msgstr "\nΣφάλμα:\n%s\n\n%s"
 
 #: ../scripts/totalopenstation-cli-parser.py:81
 msgid "Please specify an input format"
@@ -59,7 +62,7 @@ msgstr "Παρακαλώ προσδιορίστε τον τύπο του αρχ
 #: ../scripts/totalopenstation-cli-parser.py:117
 #, python-format
 msgid "Downloaded data saved to out file %s"
-msgstr "Downloaded data saved to out file %s"
+msgstr "Τα ληφθέντα δεδομένα αποθηκεύτηκαν στο αρχείο %s,"
 
 #: ../scripts/totalopenstation-cli-parser.py:121
 #, python-format
@@ -83,14 +86,7 @@ msgid ""
 "http://tops.berlios.de/\n"
 "\n"
 "The application logo is copyright 2008 Lapo Calamandrei."
-msgstr ""
-"\n"
-"Total Open Station is copyright 2008-2009 Luca Bianconi, Stefano Costa\n"
-"and the IOSA project.\n"
-"\n"
-"http://tops.berlios.de/\n"
-"\n"
-"The application logo is copyright 2008 Lapo Calamandrei."
+msgstr "\nΠνευματικά δικαιώματα © 2008-2009 Οι συγγραφείς του Total Open Station.⏎\n\nhttp://tops.berlios.de/\n\nThe application logo is copyright 2008 Lapo Calamandrei."
 
 #: ../scripts/totalopenstation-gui.py:131
 msgid ""
@@ -98,11 +94,7 @@ msgid ""
 "This dialog will guide you through the download procedure.\n"
 "\n"
 "Press OK when finished to proceed."
-msgstr ""
-"\n"
-"Το παράθυρο διαλόγου θα σας καθοδηγήσει στη διαδικασία λήψης δεδομένων.\n"
-"\n"
-"Press OK when finished to proceed."
+msgstr "\nΤο παράθυρο διαλόγου θα σας καθοδηγήσει στη διαδικασία λήψης δεδομένων.\n\nPress OK when finished to proceed."
 
 #: ../scripts/totalopenstation-gui.py:164
 msgid "waiting for data from device"
@@ -116,9 +108,7 @@ msgstr "Η σύνδεση γίνεται με τις ακόλουθες παρα
 msgid ""
 "\n"
 "Start the download procedure on the device.\n"
-msgstr ""
-"\n"
-"Ξεκινήστε από το όργανο τη διαδικασία αποστολής αρχείου.\n"
+msgstr "\nΞεκινήστε από το όργανο τη διαδικασία αποστολής αρχείου.\n"
 
 #: ../scripts/totalopenstation-gui.py:168
 msgid "Press OK when done."
@@ -138,7 +128,7 @@ msgstr "Data to be processed:\n"
 
 #: ../scripts/totalopenstation-gui.py:204
 msgid "Input format"
-msgstr "Input format"
+msgstr "Μορφη εισαγωγης"
 
 #: ../scripts/totalopenstation-gui.py:209
 msgid "choose a model"
@@ -156,9 +146,7 @@ msgstr "Η επικοινωνία απέτυχε με το ακόλουθο μή
 msgid ""
 "\n"
 "Check your connection parameters and try again.\n"
-msgstr ""
-"\n"
-"Ελέγξτε τις παραμέτρους επικοινωνίας και δοκιμάστε ξανά.\n"
+msgstr "\nΕλέγξτε τις παραμέτρους επικοινωνίας και δοκιμάστε ξανά.\n"
 
 #: ../scripts/totalopenstation-gui.py:259
 msgid "Cancel"
@@ -185,7 +173,7 @@ msgstr "Bytesize"
 
 #: ../scripts/totalopenstation-gui.py:443
 msgid "Parity setting"
-msgstr "Parity setting"
+msgstr "Ρύθμιση ισοτιμιας"
 
 #: ../scripts/totalopenstation-gui.py:455
 msgid "Even"
@@ -213,11 +201,11 @@ msgstr "Άνοιγμα αρχείου"
 
 #: ../scripts/totalopenstation-gui.py:530
 msgid "Save raw data"
-msgstr "Save raw data"
+msgstr "Αποθήκευση ανεπεξέργαστων δεδομένων "
 
 #: ../scripts/totalopenstation-gui.py:538
 msgid "Process data"
-msgstr "Process data"
+msgstr "Τα στοιχεία της διαδικασίας "
 
 #: ../scripts/totalopenstation-gui.py:547
 msgid "About TOPS"
@@ -231,9 +219,7 @@ msgstr "Έξοδος"
 msgid ""
 "Welcome.\n"
 "Turn your device on."
-msgstr ""
-"Καλωσήρθατε.\n"
-"Ανοίξτε το Γεωδαιτικό σταθμό."
+msgstr "Καλωσήρθατε.\nΑνοίξτε το Γεωδαιτικό σταθμό."
 
 #: ../scripts/totalopenstation-gui.py:669
 msgid "The download has started..."
@@ -243,9 +229,7 @@ msgstr "Η λήψη δεδομένων ξεκίνησε..."
 msgid ""
 "The download has finished.\n"
 "Press OK to proceed"
-msgstr ""
-"Η λήψη ολοκληρώθηκε.\n"
-"Πατήστε OK για να συνεχίσετε"
+msgstr "Η λήψη ολοκληρώθηκε.\nΠατήστε OK για να συνεχίσετε"
 
 #: ../scripts/totalopenstation-gui.py:712
 msgid "No output file specified"
@@ -254,4 +238,3 @@ msgstr "Δεν καθορίσθηκε αρχείο προορισμού"
 #: ../scripts/totalopenstation-gui.py:713
 msgid "No processing settings entered!\n"
 msgstr "Δεν δόθηκαν παράμετροι επεξεργασίας!\n"
-
diff --git a/po/totalopenstation.pot b/locale/es_ES/LC_MESSAGES/messages.po
similarity index 92%
copy from po/totalopenstation.pot
copy to locale/es_ES/LC_MESSAGES/messages.po
index 87da2fe..6b7c558 100644
--- a/po/totalopenstation.pot
+++ b/locale/es_ES/LC_MESSAGES/messages.po
@@ -1,20 +1,22 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
+# 
+# Translators:
+# Stefano Costa <steko at iosa.it>, 2011
 msgid ""
 msgstr ""
-"Project-Id-Version: Total Open Station 0.2\n"
-"Report-Msgid-Bugs-To: \n"
+"Project-Id-Version: Total Open Station\n"
+"Report-Msgid-Bugs-To: http://bitbucket.org/steko/totalopenstation/issues/\n"
 "POT-Creation-Date: 2010-02-08 16:07+0100\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"PO-Revision-Date: 2011-03-22 15:12+0000\n"
+"Last-Translator: Stefano Costa <steko at iosa.it>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: es_ES\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
 #: ../scripts/totalopenstation-cli-parser.py:31
 msgid "usage: %prog [option] arg1 [option] arg2 ..."
@@ -132,7 +134,7 @@ msgstr ""
 
 #: ../scripts/totalopenstation-gui.py:245
 msgid "Error"
-msgstr ""
+msgstr "Error"
 
 #: ../scripts/totalopenstation-gui.py:246
 msgid "Connection failed with the following error message:\n"
diff --git a/po/totalopenstation.pot b/locale/fa/LC_MESSAGES/messages.po
similarity index 56%
copy from po/totalopenstation.pot
copy to locale/fa/LC_MESSAGES/messages.po
index 87da2fe..8159fa1 100644
--- a/po/totalopenstation.pot
+++ b/locale/fa/LC_MESSAGES/messages.po
@@ -1,41 +1,44 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
+# 
+# Translators:
+# Mohammad Dashtizadeh <mohammad at dashtizadeh.net>, 2012
+# Mohammad Hosseini <PersianPolaris at Gmail.com>, 2011, 2012
 msgid ""
 msgstr ""
-"Project-Id-Version: Total Open Station 0.2\n"
-"Report-Msgid-Bugs-To: \n"
+"Project-Id-Version: Total Open Station\n"
+"Report-Msgid-Bugs-To: http://bitbucket.org/steko/totalopenstation/issues/\n"
 "POT-Creation-Date: 2010-02-08 16:07+0100\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
+"PO-Revision-Date: 2012-07-08 13:08+0000\n"
+"Last-Translator: Mohammad Hosseini <PersianPolaris at Gmail.com>\n"
+"Language-Team: Persian <PersianPolaris at Gmail.com>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: fa\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
 
 #: ../scripts/totalopenstation-cli-parser.py:31
 msgid "usage: %prog [option] arg1 [option] arg2 ..."
-msgstr ""
+msgstr "استفاده : %prog [option] arg1 [option] arg2 ..."
 
 #: ../scripts/totalopenstation-cli-parser.py:39
 msgid "select input FILE  (do not specify for stdin)"
-msgstr ""
+msgstr "فایل ورودی را مشخص کنید (برای stin مشخص نکنید)"
 
 #: ../scripts/totalopenstation-cli-parser.py:46
 msgid "select output FILE (do not specify for stdout)"
-msgstr ""
+msgstr "فایل خروجی را مشخص کنید (برای stdout مشخص نکنید)"
 
 #: ../scripts/totalopenstation-cli-parser.py:53
 #: ../scripts/totalopenstation-cli-parser.py:60
 msgid "select input FORMAT"
-msgstr ""
+msgstr "انتخاب فرمت ورودی"
 
 #: ../scripts/totalopenstation-cli-parser.py:67
 msgid "overwrite existing output file"
-msgstr ""
+msgstr "بازنویسی روي فایل خروجی موجود"
 
 #: ../scripts/totalopenstation-cli-parser.py:79
 #, python-format
@@ -45,33 +48,33 @@ msgid ""
 "%s\n"
 "\n"
 "%s"
-msgstr ""
+msgstr "\nخطا:\n%s\n\n%s"
 
 #: ../scripts/totalopenstation-cli-parser.py:81
 msgid "Please specify an input format"
-msgstr ""
+msgstr "لطفا یک فرمت ورودی را مشخص نماييد"
 
 #: ../scripts/totalopenstation-cli-parser.py:93
 msgid "Please specify an output format"
-msgstr ""
+msgstr "لطفاً یک فرمت خروجی مشخص کنید"
 
 #: ../scripts/totalopenstation-cli-parser.py:117
 #, python-format
 msgid "Downloaded data saved to out file %s"
-msgstr ""
+msgstr "اطلاعات بارگیری شده در فایل خروجی %s ذخیره شد."
 
 #: ../scripts/totalopenstation-cli-parser.py:121
 #, python-format
 msgid "Downloaded data saved to file %s,"
-msgstr ""
+msgstr "اطلاعات دانلود شده به صورت فايل ذخيره شود %s,"
 
 #: ../scripts/totalopenstation-cli-parser.py:122
 msgid "overwriting the existing file"
-msgstr ""
+msgstr "بازنویسی فایل موجود"
 
 #: ../scripts/totalopenstation-cli-parser.py:124
 msgid "Specified output file already exists\n"
-msgstr ""
+msgstr "فایل خروجی مشخص شده وجود دارد.\n"
 
 #: ../scripts/totalopenstation-gui.py:99
 msgid ""
@@ -82,7 +85,7 @@ msgid ""
 "http://tops.berlios.de/\n"
 "\n"
 "The application logo is copyright 2008 Lapo Calamandrei."
-msgstr ""
+msgstr "\nحقوق Total Open Station در سال 2008-2009 توسط Luca Bianconi و Stefano Costa و پروژه IOSA محفوظ است.\n\nhttp://tops.berlios.de/\n\nحقوقِ نشان نرم‌افزار در سال 2008 متعلق به Lapo Calamandrei است."
 
 #: ../scripts/totalopenstation-gui.py:131
 msgid ""
@@ -90,147 +93,147 @@ msgid ""
 "This dialog will guide you through the download procedure.\n"
 "\n"
 "Press OK when finished to proceed."
-msgstr ""
+msgstr "\nاین گفت‌ و گو شما را در روند بارگیری راهنمایی می‌کند.\n\nزمانی که پردازش به اتمام رسید بر روی OK کلیک کنید."
 
 #: ../scripts/totalopenstation-gui.py:164
 msgid "waiting for data from device"
-msgstr ""
+msgstr "انتظار برای اطلاعات از دستگاه"
 
 #: ../scripts/totalopenstation-gui.py:165
 msgid "Connection initialized with the following parameters:\n"
-msgstr ""
+msgstr "اتصال با مقدار اولیه با پیروی از پارامترها:\n"
 
 #: ../scripts/totalopenstation-gui.py:167
 msgid ""
 "\n"
 "Start the download procedure on the device.\n"
-msgstr ""
+msgstr "\nروند بارگیری بر روی دستگاه شروع شده است.\n\n\n"
 
 #: ../scripts/totalopenstation-gui.py:168
 msgid "Press OK when done."
-msgstr ""
+msgstr "هنگامي که انجام شد دکمه OK را بزنيد."
 
 #: ../scripts/totalopenstation-gui.py:187
 msgid "Choose output format and destination file"
-msgstr ""
+msgstr "انتخاب فرمت خورجی و مقصد فایل"
 
 #: ../scripts/totalopenstation-gui.py:188
 msgid "Output format:\n"
-msgstr ""
+msgstr "فرمت خروجی:\n"
 
 #: ../scripts/totalopenstation-gui.py:201
 msgid "Data to be processed:\n"
-msgstr ""
+msgstr "اطلاعاتی که پردازش می‌شود:\n"
 
 #: ../scripts/totalopenstation-gui.py:204
 msgid "Input format"
-msgstr ""
+msgstr "فرمت ورودی"
 
 #: ../scripts/totalopenstation-gui.py:209
 msgid "choose a model"
-msgstr ""
+msgstr "انتخاب يک مدل"
 
 #: ../scripts/totalopenstation-gui.py:245
 msgid "Error"
-msgstr ""
+msgstr "خطا"
 
 #: ../scripts/totalopenstation-gui.py:246
 msgid "Connection failed with the following error message:\n"
-msgstr ""
+msgstr "اتصال بدلیل مشکلات زیر برقرار نشد:\n"
 
 #: ../scripts/totalopenstation-gui.py:247
 msgid ""
 "\n"
 "Check your connection parameters and try again.\n"
-msgstr ""
+msgstr "\nپارامترهای اتصال را چک کنید و دوباره امتحان کنید.\n"
 
 #: ../scripts/totalopenstation-gui.py:259
 msgid "Cancel"
-msgstr ""
+msgstr "لغو"
 
 #: ../scripts/totalopenstation-gui.py:325
 msgid "Port"
-msgstr ""
+msgstr "درگاه"
 
 #: ../scripts/totalopenstation-gui.py:362
 msgid "Total Station"
-msgstr ""
+msgstr "توتال استيشن"
 
 #: ../scripts/totalopenstation-gui.py:393
 #: ../scripts/totalopenstation-gui.py:418
 #: ../scripts/totalopenstation-gui.py:449
 #: ../scripts/totalopenstation-gui.py:477
 msgid "choose a value"
-msgstr ""
+msgstr "انتخاب يک مقدار"
 
 #: ../scripts/totalopenstation-gui.py:412
 msgid "Bytesize"
-msgstr ""
+msgstr "اندازه‌ی بایت"
 
 #: ../scripts/totalopenstation-gui.py:443
 msgid "Parity setting"
-msgstr ""
+msgstr "تنظیمات توازن"
 
 #: ../scripts/totalopenstation-gui.py:455
 msgid "Even"
-msgstr ""
+msgstr "حتی"
 
 #: ../scripts/totalopenstation-gui.py:458
 msgid "None"
-msgstr ""
+msgstr "هیچ یک"
 
 #: ../scripts/totalopenstation-gui.py:461
 msgid "Odd"
-msgstr ""
+msgstr "فرد"
 
 #: ../scripts/totalopenstation-gui.py:471
 msgid "Stop bit"
-msgstr ""
+msgstr "ذره‌ی ایست نما"
 
 #: ../scripts/totalopenstation-gui.py:513
 msgid "Connect"
-msgstr ""
+msgstr "اتصال"
 
 #: ../scripts/totalopenstation-gui.py:522
 msgid "Open file"
-msgstr ""
+msgstr "باز کردن فایل"
 
 #: ../scripts/totalopenstation-gui.py:530
 msgid "Save raw data"
-msgstr ""
+msgstr "ذخیره داده های خام"
 
 #: ../scripts/totalopenstation-gui.py:538
 msgid "Process data"
-msgstr ""
+msgstr "پردازش اطلاعات"
 
 #: ../scripts/totalopenstation-gui.py:547
 msgid "About TOPS"
-msgstr ""
+msgstr "درباره TOPS"
 
 #: ../scripts/totalopenstation-gui.py:555
 msgid "Quit"
-msgstr ""
+msgstr "خارج شدن"
 
 #: ../scripts/totalopenstation-gui.py:567
 msgid ""
 "Welcome.\n"
 "Turn your device on."
-msgstr ""
+msgstr "خوش آمدید.⏎\nدستگاه را روشن کنید."
 
 #: ../scripts/totalopenstation-gui.py:669
 msgid "The download has started..."
-msgstr ""
+msgstr "بارگیری آغاز شده است..."
 
 #: ../scripts/totalopenstation-gui.py:671
 msgid ""
 "The download has finished.\n"
 "Press OK to proceed"
-msgstr ""
+msgstr "بارگیری به اتمام رسیده است.⏎\nبرای ادامه روی دکمه‌ی تایید کلیک کنید."
 
 #: ../scripts/totalopenstation-gui.py:712
 msgid "No output file specified"
-msgstr ""
+msgstr "هیچ فایل خروجی مشخص نشده"
 
 #: ../scripts/totalopenstation-gui.py:713
 msgid "No processing settings entered!\n"
-msgstr ""
+msgstr "تنظیمات پردازشی وارد نشده است!\n"
diff --git a/po/totalopenstation.pot b/locale/fr/LC_MESSAGES/messages.po
similarity index 92%
copy from po/totalopenstation.pot
copy to locale/fr/LC_MESSAGES/messages.po
index 87da2fe..5339492 100644
--- a/po/totalopenstation.pot
+++ b/locale/fr/LC_MESSAGES/messages.po
@@ -1,20 +1,21 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
+# 
+# Translators:
 msgid ""
 msgstr ""
-"Project-Id-Version: Total Open Station 0.2\n"
-"Report-Msgid-Bugs-To: \n"
+"Project-Id-Version: Total Open Station\n"
+"Report-Msgid-Bugs-To: http://bitbucket.org/steko/totalopenstation/issues/\n"
 "POT-Creation-Date: 2010-02-08 16:07+0100\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"PO-Revision-Date: 2010-11-30 05:29+0000\n"
 "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
+"Language-Team: French (http://www.transifex.com/projects/p/totalopenstation/language/fr/)\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: fr\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
 #: ../scripts/totalopenstation-cli-parser.py:31
 msgid "usage: %prog [option] arg1 [option] arg2 ..."
diff --git a/po/it.po b/locale/it/LC_MESSAGES/messages.po
similarity index 100%
rename from po/it.po
rename to locale/it/LC_MESSAGES/messages.po
diff --git a/po/totalopenstation.pot b/locale/pl/LC_MESSAGES/messages.po
similarity index 65%
copy from po/totalopenstation.pot
copy to locale/pl/LC_MESSAGES/messages.po
index 87da2fe..1cd1edf 100644
--- a/po/totalopenstation.pot
+++ b/locale/pl/LC_MESSAGES/messages.po
@@ -1,41 +1,43 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
+# 
+# Translators:
+# fklosowski <filip at geoida.pl>, 2013
 msgid ""
 msgstr ""
-"Project-Id-Version: Total Open Station 0.2\n"
-"Report-Msgid-Bugs-To: \n"
+"Project-Id-Version: Total Open Station\n"
+"Report-Msgid-Bugs-To: http://bitbucket.org/steko/totalopenstation/issues/\n"
 "POT-Creation-Date: 2010-02-08 16:07+0100\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
-"Language-Team: LANGUAGE <LL at li.org>\n"
+"PO-Revision-Date: 2013-05-24 12:40+0000\n"
+"Last-Translator: fklosowski <filip at geoida.pl>\n"
+"Language-Team: Polish (http://www.transifex.com/projects/p/totalopenstation/language/pl/)\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: pl\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
 #: ../scripts/totalopenstation-cli-parser.py:31
 msgid "usage: %prog [option] arg1 [option] arg2 ..."
-msgstr ""
+msgstr "stosowanie: %prog [option] arg1 [option] arg2 ..."
 
 #: ../scripts/totalopenstation-cli-parser.py:39
 msgid "select input FILE  (do not specify for stdin)"
-msgstr ""
+msgstr "wybierz plik wejściowy (nie określaj dla stdin)"
 
 #: ../scripts/totalopenstation-cli-parser.py:46
 msgid "select output FILE (do not specify for stdout)"
-msgstr ""
+msgstr "wybierz plik wyjściowy (nie określaj dla stdout)"
 
 #: ../scripts/totalopenstation-cli-parser.py:53
 #: ../scripts/totalopenstation-cli-parser.py:60
 msgid "select input FORMAT"
-msgstr ""
+msgstr "wybierz format wejściowy"
 
 #: ../scripts/totalopenstation-cli-parser.py:67
 msgid "overwrite existing output file"
-msgstr ""
+msgstr "nadpisz plik wyjściowy"
 
 #: ../scripts/totalopenstation-cli-parser.py:79
 #, python-format
@@ -45,33 +47,33 @@ msgid ""
 "%s\n"
 "\n"
 "%s"
-msgstr ""
+msgstr "\nBłąd:\n%s\n%s"
 
 #: ../scripts/totalopenstation-cli-parser.py:81
 msgid "Please specify an input format"
-msgstr ""
+msgstr "Wybierz format wejsciowy"
 
 #: ../scripts/totalopenstation-cli-parser.py:93
 msgid "Please specify an output format"
-msgstr ""
+msgstr "Wybierz format wyjściowy"
 
 #: ../scripts/totalopenstation-cli-parser.py:117
 #, python-format
 msgid "Downloaded data saved to out file %s"
-msgstr ""
+msgstr "Dane zapisano do pliku %s"
 
 #: ../scripts/totalopenstation-cli-parser.py:121
 #, python-format
 msgid "Downloaded data saved to file %s,"
-msgstr ""
+msgstr "Dane zapisano do pliku %s"
 
 #: ../scripts/totalopenstation-cli-parser.py:122
 msgid "overwriting the existing file"
-msgstr ""
+msgstr "nadpisać istniejący plik"
 
 #: ../scripts/totalopenstation-cli-parser.py:124
 msgid "Specified output file already exists\n"
-msgstr ""
+msgstr "Plik o tej nazwie już istnieje\n"
 
 #: ../scripts/totalopenstation-gui.py:99
 msgid ""
@@ -82,7 +84,7 @@ msgid ""
 "http://tops.berlios.de/\n"
 "\n"
 "The application logo is copyright 2008 Lapo Calamandrei."
-msgstr ""
+msgstr "\n\nTotal Open Station is copyright 2008-2009 Luca Bianconi, Stefano Costa⏎\nand the IOSA project.\n\nhttp://tops.berlios.de/\n\nThe application logo is copyright 2008 Lapo Calamandrei."
 
 #: ../scripts/totalopenstation-gui.py:131
 msgid ""
@@ -90,147 +92,147 @@ msgid ""
 "This dialog will guide you through the download procedure.\n"
 "\n"
 "Press OK when finished to proceed."
-msgstr ""
+msgstr "\nTo okno przeprowadzi cię przez proces transmisji danych.\n\nNaciśnij OK aby kontynuować."
 
 #: ../scripts/totalopenstation-gui.py:164
 msgid "waiting for data from device"
-msgstr ""
+msgstr "czekam na dane z urządzenia"
 
 #: ../scripts/totalopenstation-gui.py:165
 msgid "Connection initialized with the following parameters:\n"
-msgstr ""
+msgstr "Połączenie z instrumentem zainicjowano z następującymi parametrami:\n"
 
 #: ../scripts/totalopenstation-gui.py:167
 msgid ""
 "\n"
 "Start the download procedure on the device.\n"
-msgstr ""
+msgstr "\nUruchom transmisję w urządzeniu.\n"
 
 #: ../scripts/totalopenstation-gui.py:168
 msgid "Press OK when done."
-msgstr ""
+msgstr "Naciśnij OK gdy gotowe."
 
 #: ../scripts/totalopenstation-gui.py:187
 msgid "Choose output format and destination file"
-msgstr ""
+msgstr "Wybierz format oraz plik docelowy"
 
 #: ../scripts/totalopenstation-gui.py:188
 msgid "Output format:\n"
-msgstr ""
+msgstr "Format wyjściowy:\n"
 
 #: ../scripts/totalopenstation-gui.py:201
 msgid "Data to be processed:\n"
-msgstr ""
+msgstr "Dane do konwersji:\n"
 
 #: ../scripts/totalopenstation-gui.py:204
 msgid "Input format"
-msgstr ""
+msgstr "Format wejściowy"
 
 #: ../scripts/totalopenstation-gui.py:209
 msgid "choose a model"
-msgstr ""
+msgstr "wybierz model"
 
 #: ../scripts/totalopenstation-gui.py:245
 msgid "Error"
-msgstr ""
+msgstr "Błąd"
 
 #: ../scripts/totalopenstation-gui.py:246
 msgid "Connection failed with the following error message:\n"
-msgstr ""
+msgstr "Połączenie z urządzeniem nieudane. Komunikat błędu:\n"
 
 #: ../scripts/totalopenstation-gui.py:247
 msgid ""
 "\n"
 "Check your connection parameters and try again.\n"
-msgstr ""
+msgstr "\nSprawdź parametry i spróbuj ponownie.\n"
 
 #: ../scripts/totalopenstation-gui.py:259
 msgid "Cancel"
-msgstr ""
+msgstr "Anuluj"
 
 #: ../scripts/totalopenstation-gui.py:325
 msgid "Port"
-msgstr ""
+msgstr "Port"
 
 #: ../scripts/totalopenstation-gui.py:362
 msgid "Total Station"
-msgstr ""
+msgstr "Total Station"
 
 #: ../scripts/totalopenstation-gui.py:393
 #: ../scripts/totalopenstation-gui.py:418
 #: ../scripts/totalopenstation-gui.py:449
 #: ../scripts/totalopenstation-gui.py:477
 msgid "choose a value"
-msgstr ""
+msgstr "wybierz wartość"
 
 #: ../scripts/totalopenstation-gui.py:412
 msgid "Bytesize"
-msgstr ""
+msgstr "Bytesize"
 
 #: ../scripts/totalopenstation-gui.py:443
 msgid "Parity setting"
-msgstr ""
+msgstr "Parzystość"
 
 #: ../scripts/totalopenstation-gui.py:455
 msgid "Even"
-msgstr ""
+msgstr "Even"
 
 #: ../scripts/totalopenstation-gui.py:458
 msgid "None"
-msgstr ""
+msgstr "None"
 
 #: ../scripts/totalopenstation-gui.py:461
 msgid "Odd"
-msgstr ""
+msgstr "Odd"
 
 #: ../scripts/totalopenstation-gui.py:471
 msgid "Stop bit"
-msgstr ""
+msgstr "Stop bit"
 
 #: ../scripts/totalopenstation-gui.py:513
 msgid "Connect"
-msgstr ""
+msgstr "Połącz"
 
 #: ../scripts/totalopenstation-gui.py:522
 msgid "Open file"
-msgstr ""
+msgstr "Otwórz plik"
 
 #: ../scripts/totalopenstation-gui.py:530
 msgid "Save raw data"
-msgstr ""
+msgstr "Zapisz surowe dane"
 
 #: ../scripts/totalopenstation-gui.py:538
 msgid "Process data"
-msgstr ""
+msgstr "Przetwarzanie danych"
 
 #: ../scripts/totalopenstation-gui.py:547
 msgid "About TOPS"
-msgstr ""
+msgstr "O TOPS"
 
 #: ../scripts/totalopenstation-gui.py:555
 msgid "Quit"
-msgstr ""
+msgstr "Zakończ"
 
 #: ../scripts/totalopenstation-gui.py:567
 msgid ""
 "Welcome.\n"
 "Turn your device on."
-msgstr ""
+msgstr "Witaj.\nWłącz urządzenie."
 
 #: ../scripts/totalopenstation-gui.py:669
 msgid "The download has started..."
-msgstr ""
+msgstr "Rozpoczęto trnasmisję..."
 
 #: ../scripts/totalopenstation-gui.py:671
 msgid ""
 "The download has finished.\n"
 "Press OK to proceed"
-msgstr ""
+msgstr "Transmisja zakończona pomyślnie.\nNaciśnij OK aby kontynuować"
 
 #: ../scripts/totalopenstation-gui.py:712
 msgid "No output file specified"
-msgstr ""
+msgstr "Nie wybrano pliku wyjściowego"
 
 #: ../scripts/totalopenstation-gui.py:713
 msgid "No processing settings entered!\n"
-msgstr ""
+msgstr "Nie wybrano ustawień!\n"
diff --git a/po/totalopenstation.pot b/locale/tr/LC_MESSAGES/messages.po
similarity index 92%
rename from po/totalopenstation.pot
rename to locale/tr/LC_MESSAGES/messages.po
index 87da2fe..0290774 100644
--- a/po/totalopenstation.pot
+++ b/locale/tr/LC_MESSAGES/messages.po
@@ -1,20 +1,22 @@
 # SOME DESCRIPTIVE TITLE.
 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
-#
-#, fuzzy
+# 
+# Translators:
+# Stefano Costa <steko at iosa.it>, 2011
 msgid ""
 msgstr ""
-"Project-Id-Version: Total Open Station 0.2\n"
-"Report-Msgid-Bugs-To: \n"
+"Project-Id-Version: Total Open Station\n"
+"Report-Msgid-Bugs-To: http://bitbucket.org/steko/totalopenstation/issues/\n"
 "POT-Creation-Date: 2010-02-08 16:07+0100\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"PO-Revision-Date: 2011-03-22 15:12+0000\n"
+"Last-Translator: Stefano Costa <steko at iosa.it>\n"
 "Language-Team: LANGUAGE <LL at li.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Language: tr\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
 #: ../scripts/totalopenstation-cli-parser.py:31
 msgid "usage: %prog [option] arg1 [option] arg2 ..."
@@ -132,7 +134,7 @@ msgstr ""
 
 #: ../scripts/totalopenstation-gui.py:245
 msgid "Error"
-msgstr ""
+msgstr "Hata"
 
 #: ../scripts/totalopenstation-gui.py:246
 msgid "Connection failed with the following error message:\n"
diff --git a/sample_data/Leica1200.rw5 b/sample_data/Leica1200.rw5
new file mode 100644
index 0000000..9c071b4
--- /dev/null
+++ b/sample_data/Leica1200.rw5
@@ -0,0 +1,32 @@
+-- TPS1200 RW5 format file
+-- Version 1.35 July 20 2004 Leica Geosystems
+JB,NMMY RW5 JOB,DT07-22-2004,TM13:13:51
+MO,AD0,UN0 SF1.00000000,EC1,EO0.0,AUO
+--SP,PN111,N 16556174.237,E 942130.662,EL 16.404
+--SP,PN108,N 16556174.237,E 942130.662,EL 17.945
+OC,OP111,N 16556174.237,E 942130.662,EL 16.404
+BK,OP111,BP108,BS0.00000,BC0.00000
+LS,HI5.684,HR5.500
+SS,OP111,FP108,AR0.00000,ZE0.00017,SD3.3566,--FENCE1
+LS,HI3.684,HR5.500
+SS,OP111,FP101,AR55.05521,ZE0.00014,SD3.3566,--LIGHT POLE
+--BEG
+LS,HI3.684,HR5.500
+SS,OP111,FP102,AR55.05517,ZE0.00010,SD3.3566,--FENCE1
+LS,HI3.684,HR5.500
+SS,OP111,FP103,AR55.05513,ZE0.00017,SD3.3566,--FENCE
+LS,HI3.684,HR5.500
+SS,OP111,FP104,AR55.05513,ZE0.00017,SD3.3566,--FENCE
+--BEG
+LS,HI3.684,HR5.500
+SS,OP111,FP105,AR55.05521,ZE0.00014,SD3.3566,--EP1
+LS,HI3.684,HR5.500
+SS,OP111,FP106,AR55.05513,ZE0.00017,SD3.3566,--EP
+LS,HI3.684,HR5.500
+SS,OP111,FP107,AR55.05521,ZE0.00014,SD3.3566,--EP
+--END
+LS,HI3.684,HR5.500
+SS,OP111,FP108,AR55.05521,ZE0.00014,SD3.3566,--FENCE1
+LS,HI3.684,HR5.500
+SS,OP111,FP109,AR55.05513,ZE0.00017,SD3.3566,--FENCE
+--JFS 
\ No newline at end of file
diff --git a/sample_data/Leica1200.rw5.csv b/sample_data/Leica1200.rw5.csv
new file mode 100644
index 0000000..6074485
--- /dev/null
+++ b/sample_data/Leica1200.rw5.csv
@@ -0,0 +1,11 @@
+Rec_Desc	Rec_Type	Point ID	Description	Inst_Height_	Rod Height	Horiz_ Angle	Vert_ Angle	Slope Dist	Local_N	Local_E	Local_Z	PC	EDM Mode	SF
+Side Shot	SS	108	FENCE1		5500	0	0.000525	3.3566	16556174237	942130662	16404			
+Side Shot	SS	101	LIGHT POLE		5500	61.219784	0.000432	3.3566						
+Side Shot	SS	102	FENCE1		5500	61.21966	0.000309	3.3566						
+Side Shot	SS	103	FENCE		5500	61.219537	0.000525	3.3566						
+Side Shot	SS	104	FENCE		5500	61.219537	0.000525	3.3566						
+Side Shot	SS	105	EP1		5500	61.219784	0.000432	3.3566						
+Side Shot	SS	106	EP		5500	61.219537	0.000525	3.3566						
+Side Shot	SS	107	EP		5500	61.219784	0.000432	3.3566						
+Side Shot	SS	108	FENCE1		5500	61.219784	0.000432	3.3566						
+Side Shot	SS	109	FENCE		5500	61.219537	0.000525	3.3566						
diff --git a/sample_data/leica_gsi/leica_gsi16_gurob.gsi b/sample_data/leica_gsi/leica_gsi16_gurob.gsi
new file mode 100644
index 0000000..946296f
--- /dev/null
+++ b/sample_data/leica_gsi/leica_gsi16_gurob.gsi
@@ -0,0 +1,344 @@
+*110002+00000000GDEM5415 21.024+0000000003545100 22.024+0000000009117510 31...0+0000000000013825 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110003+00000000GDEM5416 21.024+0000000003411240 22.024+0000000009248200 31...0+0000000000020527 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110004+00000000GDEM5417 21.024+0000000003349200 22.024+0000000009338510 31...0+0000000000028609 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110005+00000000GDEM5418 21.024+0000000003231250 22.024+0000000009247570 31...0+0000000000035487 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110006+00000000GDEM5419 21.024+0000000003225480 22.024+0000000009145240 31...0+0000000000042459 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110007+00000000GDEM5420 21.024+0000000003244000 22.024+0000000009102210 31...0+0000000000049880 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110008+00000000GDEM5421 21.024+0000000003240260 22.024+0000000009050110 31...0+0000000000056728 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110009+00000000GDEM5422 21.024+0000000003246280 22.024+0000000009043250 31...0+0000000000063095 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110010+00000000GDEM5423 21.024+0000000003226150 22.024+0000000009046130 31...0+0000000000070866 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110011+00000000GDEM5424 21.024+0000000003226450 22.024+0000000009047310 31...0+0000000000078201 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110012+00000000GDEM5425 21.024+0000000003226050 22.024+0000000009042380 31...0+0000000000085351 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110013+00000000GDEM5426 21.024+0000000003225380 22.024+0000000009044140 31...0+0000000000091842 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110014+00000000GDEM5427 21.024+0000000003230120 22.024+0000000009042510 31...0+0000000000098845 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110015+00000000GDEM5428 21.024+0000000003233480 22.024+0000000009037580 31...0+0000000000106230 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110016+00000000GDEM5429 21.024+0000000003236310 22.024+0000000009050560 31...0+0000000000111912 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110017+00000000GDEM5430 21.024+0000000003241510 22.024+0000000009054040 31...0+0000000000117913 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110018+00000000GDEM5431 21.024+0000000003239180 22.024+0000000009045120 31...0+0000000000125024 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110019+00000000GDEM5432 21.024+0000000003237560 22.024+0000000009057200 31...0+0000000000131865 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110020+00000000GDEM5433 21.024+0000000003232270 22.024+0000000009038240 31...0+0000000000138192 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110021+00000000GDEM5434 21.024+0000000003230160 22.024+0000000009035030 31...0+0000000000144301 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110022+00000000GDEM5435 21.024+0000000003232480 22.024+0000000009038470 31...0+0000000000150126 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110023+00000000GDEM5436 21.024+0000000003234150 22.024+0000000009042260 31...0+0000000000153311 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110024+00000000GDEM5437 21.024+0000000003459220 22.024+0000000009046550 31...0+0000000000154795 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110025+00000000GDEM5438 21.024+0000000003510230 22.024+0000000009043170 31...0+0000000000148108 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110026+00000000GDEM5439 21.024+0000000003518340 22.024+0000000009043240 31...0+0000000000141694 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110027+00000000GDEM5440 21.024+0000000003533270 22.024+0000000009101020 31...0+0000000000135391 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110028+00000000GDEM5441 21.024+0000000003548030 22.024+0000000009059450 31...0+0000000000128130 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110029+00000000GDEM5442 21.024+0000000003603000 22.024+0000000009103160 31...0+0000000000122116 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110030+00000000GDEM5443 21.024+0000000003617080 22.024+0000000009057200 31...0+0000000000115394 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110031+00000000GDEM5444 21.024+0000000003631540 22.024+0000000009103110 31...0+0000000000108438 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110032+00000000GDEM5445 21.024+0000000003648180 22.024+0000000009100170 31...0+0000000000102326 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110033+00000000GDEM5446 21.024+0000000003655430 22.024+0000000009053010 31...0+0000000000097167 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110034+00000000GDEM5447 21.024+0000000003710250 22.024+0000000009057470 31...0+0000000000090574 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110035+00000000GDEM5448 21.024+0000000003733580 22.024+0000000009104340 31...0+0000000000083918 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110036+00000000GDEM5449 21.024+0000000003807260 22.024+0000000009124380 31...0+0000000000078110 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110037+00000000GDEM5450 21.024+0000000003831470 22.024+0000000009123310 31...0+0000000000072919 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110038+00000000GDEM5451 21.024+0000000003919330 22.024+0000000009122580 31...0+0000000000067395 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110039+00000000GDEM5452 21.024+0000000004005300 22.024+0000000009152140 31...0+0000000000060961 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110040+00000000GDEM5453 21.024+0000000004054200 22.024+0000000009135390 31...0+0000000000054997 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110041+00000000GDEM5454 21.024+0000000004151140 22.024+0000000009142240 31...0+0000000000049119 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110042+00000000GDEM5455 21.024+0000000004316560 22.024+0000000009236020 31...0+0000000000043087 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110043+00000000GDEM5456 21.024+0000000004454520 22.024+0000000009333170 31...0+0000000000036839 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110044+00000000GDEM5457 21.024+0000000004726060 22.024+0000000009424180 31...0+0000000000030586 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110045+00000000GDEM5458 21.024+0000000005254090 22.024+0000000009324370 31...0+0000000000021343 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110046+00000000GDEM5459 21.024+0000000005850430 22.024+0000000009243500 31...0+0000000000016429 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110047+00000000GDEM5460 21.024+0000000007356300 22.024+0000000009340370 31...0+0000000000010210 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110048+00000000GDEM5461 21.024+0000000010921470 22.024+0000000009546500 31...0+0000000000006337 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110049+00000000GDEM5462 21.024+0000000011908360 22.024+0000000009524460 31...0+0000000000012827 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110050+00000000GDEM5463 21.024+0000000009208400 22.024+0000000009349190 31...0+0000000000014489 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110051+00000000GDEM5464 21.024+0000000007341000 22.024+0000000009409300 31...0+0000000000018464 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110052+00000000GDEM5465 21.024+0000000006316060 22.024+0000000009417250 31...0+0000000000023660 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110053+00000000GDEM5466 21.024+0000000005603050 22.024+0000000009455150 31...0+0000000000029811 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110054+00000000GDEM5467 21.024+0000000005215570 22.024+0000000009418030 31...0+0000000000035217 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110055+00000000GDEM5468 21.024+0000000004857250 22.024+0000000009254230 31...0+0000000000042143 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110056+00000000GDEM5469 21.024+0000000004643470 22.024+0000000009204020 31...0+0000000000048291 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110057+00000000GDEM5470 21.024+0000000004403030 22.024+0000000009146140 31...0+0000000000055590 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110058+00000000GDEM5471 21.024+0000000004231010 22.024+0000000009156030 31...0+0000000000063496 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110059+00000000GDEM5472 21.024+0000000004133390 22.024+0000000009131090 31...0+0000000000071749 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110060+00000000GDEM5473 21.024+0000000004106440 22.024+0000000009127120 31...0+0000000000079606 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110061+00000000GDEM5474 21.024+0000000004029420 22.024+0000000009114160 31...0+0000000000087154 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110062+00000000GDEM5475 21.024+0000000003951270 22.024+0000000009105210 31...0+0000000000094336 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110063+00000000GDEM5476 21.024+0000000003920500 22.024+0000000009114010 31...0+0000000000101918 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110064+00000000GDEM5477 21.024+0000000003854160 22.024+0000000009108580 31...0+0000000000110011 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110065+00000000GDEM5478 21.024+0000000003824400 22.024+0000000009111440 31...0+0000000000117775 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110066+00000000GDEM5479 21.024+0000000003803550 22.024+0000000009103140 31...0+0000000000124753 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110067+00000000GDEM5480 21.024+0000000003741040 22.024+0000000009101400 31...0+0000000000132434 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110068+00000000GDEM5481 21.024+0000000003727210 22.024+0000000009059280 31...0+0000000000139744 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110069+00000000GDEM5482 21.024+0000000003718500 22.024+0000000009048390 31...0+0000000000147089 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110070+00000000GDEM5483 21.024+0000000003709490 22.024+0000000009054290 31...0+0000000000155483 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110071+00000000GDEM5484 21.024+0000000003912410 22.024+0000000009106220 31...0+0000000000157432 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110072+00000000GDEM5485 21.024+0000000003918560 22.024+0000000009056230 31...0+0000000000152866 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110073+00000000GDEM5486 21.024+0000000003950320 22.024+0000000009100330 31...0+0000000000145540 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110074+00000000GDEM5487 21.024+0000000004024460 22.024+0000000009106160 31...0+0000000000138373 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110075+00000000GDEM5488 21.024+0000000004057230 22.024+0000000009114420 31...0+0000000000131145 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110076+00000000GDEM5489 21.024+0000000004120260 22.024+0000000009119240 31...0+0000000000125336 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110077+00000000GDEM5490 21.024+0000000004156520 22.024+0000000009131310 31...0+0000000000119043 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110078+00000000GDEM5491 21.024+0000000004237330 22.024+0000000009119500 31...0+0000000000112479 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110079+00000000GDEM5492 21.024+0000000004328270 22.024+0000000009119020 31...0+0000000000105008 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110080+00000000GDEM5493 21.024+0000000004415010 22.024+0000000009104560 31...0+0000000000097772 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110081+00000000GDEM5494 21.024+0000000004520120 22.024+0000000009125050 31...0+0000000000092533 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110082+00000000GDEM5495 21.024+0000000004617210 22.024+0000000009124130 31...0+0000000000086694 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110083+00000000GDEM5496 21.024+0000000004717240 22.024+0000000009203050 31...0+0000000000081584 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110084+00000000GDEM5497 21.024+0000000004857370 22.024+0000000009226380 31...0+0000000000074896 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110085+00000000GDEM5498 21.024+0000000005047580 22.024+0000000009229580 31...0+0000000000068496 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110086+00000000GDEM5499 21.024+0000000005228390 22.024+0000000009231320 31...0+0000000000062792 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110087+00000000GDEM5500 21.024+0000000005409030 22.024+0000000009155580 31...0+0000000000057944 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110088+00000000GDEM5501 21.024+0000000005624310 22.024+0000000009222470 31...0+0000000000051745 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110089+00000000GDEM5502 21.024+0000000005939380 22.024+0000000009303120 31...0+0000000000045723 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110090+00000000GDEM5503 21.024+0000000006324060 22.024+0000000009353550 31...0+0000000000040336 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110091+00000000GDEM5504 21.024+0000000006952370 22.024+0000000009452270 31...0+0000000000033821 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110092+00000000GDEM5505 21.024+0000000007617520 22.024+0000000009441160 31...0+0000000000029028 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110093+00000000GDEM5506 21.024+0000000008452370 22.024+0000000009440020 31...0+0000000000024524 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110094+00000000GDEM5507 21.024+0000000009730150 22.024+0000000009532170 31...0+0000000000021877 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110095+00000000GDEM5508 21.024+0000000011124160 22.024+0000000009457390 31...0+0000000000019701 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110096+00000000GDEM5509 21.024+0000000011211220 22.024+0000000009544490 31...0+0000000000025032 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110097+00000000GDEM5510 21.024+0000000009823420 22.024+0000000009524120 31...0+0000000000026732 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110098+00000000GDEM5511 21.024+0000000008622310 22.024+0000000009453020 31...0+0000000000029955 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110099+00000000GDEM5512 21.024+0000000007726130 22.024+0000000009508000 31...0+0000000000033983 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110100+00000000GDEM5513 21.024+0000000007037570 22.024+0000000009443360 31...0+0000000000038853 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110101+00000000GDEM5514 21.024+0000000006552060 22.024+0000000009333040 31...0+0000000000043375 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110102+00000000GDEM5515 21.024+0000000006121370 22.024+0000000009257030 31...0+0000000000049281 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110103+00000000GDEM5516 21.024+0000000005812300 22.024+0000000009210340 31...0+0000000000054792 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110104+00000000GDEM5517 21.024+0000000005529260 22.024+0000000009155530 31...0+0000000000060101 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110105+00000000GDEM5518 21.024+0000000005301580 22.024+0000000009220380 31...0+0000000000066205 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110106+00000000GDEM5519 21.024+0000000005048040 22.024+0000000009225130 31...0+0000000000072712 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110107+00000000GDEM5520 21.024+0000000004937100 22.024+0000000009225080 31...0+0000000000078355 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110108+00000000GDEM5521 21.024+0000000004842390 22.024+0000000009157390 31...0+0000000000083621 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110109+00000000GDEM5522 21.024+0000000004738190 22.024+0000000009124580 31...0+0000000000088793 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110110+00000000GDEM5523 21.024+0000000004629040 22.024+0000000009135590 31...0+0000000000095478 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110111+00000000GDEM5524 21.024+0000000004549520 22.024+0000000009119530 31...0+0000000000100715 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110112+00000000GDEM5525 21.024+0000000004507070 22.024+0000000009120580 31...0+0000000000106933 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110113+00000000GDEM5526 21.024+0000000004416360 22.024+0000000009122320 31...0+0000000000113619 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110114+00000000GDEM5527 21.024+0000000004327380 22.024+0000000009134460 31...0+0000000000120698 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110115+00000000GDEM5528 21.024+0000000004252030 22.024+0000000009132560 31...0+0000000000127623 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110116+00000000GDEM5529 21.024+0000000004224260 22.024+0000000009122070 31...0+0000000000133298 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110117+00000000GDEM5530 21.024+0000000004203540 22.024+0000000009119300 31...0+0000000000139162 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110118+00000000GDEM5531 21.024+0000000004145160 22.024+0000000009118210 31...0+0000000000145579 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110119+00000000GDEM5532 21.024+0000000004133140 22.024+0000000009108050 31...0+0000000000151847 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110120+00000000GDEM5533 21.024+0000000004116390 22.024+0000000009104540 31...0+0000000000158690 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110098+00000000GDEM5511 21.024+0000000008622310 22.024+0000000009453020 31...0+0000000000029955 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110099+00000000GDEM5512 21.024+0000000007726130 22.024+0000000009508000 31...0+0000000000033983 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110100+00000000GDEM5513 21.024+0000000007037570 22.024+0000000009443360 31...0+0000000000038853 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110101+00000000GDEM5514 21.024+0000000006552060 22.024+0000000009333040 31...0+0000000000043375 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110102+00000000GDEM5515 21.024+0000000006121370 22.024+0000000009257030 31...0+0000000000049281 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110103+00000000GDEM5516 21.024+0000000005812300 22.024+0000000009210340 31...0+0000000000054792 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110104+00000000GDEM5517 21.024+0000000005529260 22.024+0000000009155530 31...0+0000000000060101 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110105+00000000GDEM5518 21.024+0000000005301580 22.024+0000000009220380 31...0+0000000000066205 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110106+00000000GDEM5519 21.024+0000000005048040 22.024+0000000009225130 31...0+0000000000072712 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110107+00000000GDEM5520 21.024+0000000004937100 22.024+0000000009225080 31...0+0000000000078355 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110108+00000000GDEM5521 21.024+0000000004842390 22.024+0000000009157390 31...0+0000000000083621 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110109+00000000GDEM5522 21.024+0000000004738190 22.024+0000000009124580 31...0+0000000000088793 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110110+00000000GDEM5523 21.024+0000000004629040 22.024+0000000009135590 31...0+0000000000095478 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110111+00000000GDEM5524 21.024+0000000004549520 22.024+0000000009119530 31...0+0000000000100715 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110112+00000000GDEM5525 21.024+0000000004507070 22.024+0000000009120580 31...0+0000000000106933 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110113+00000000GDEM5526 21.024+0000000004416360 22.024+0000000009122320 31...0+0000000000113619 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110114+00000000GDEM5527 21.024+0000000004327380 22.024+0000000009134460 31...0+0000000000120698 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110115+00000000GDEM5528 21.024+0000000004252030 22.024+0000000009132560 31...0+0000000000127623 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110116+00000000GDEM5529 21.024+0000000004224260 22.024+0000000009122070 31...0+0000000000133298 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110117+00000000GDEM5530 21.024+0000000004203540 22.024+0000000009119300 31...0+0000000000139162 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110118+00000000GDEM5531 21.024+0000000004145160 22.024+0000000009118210 31...0+0000000000145579 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110119+00000000GDEM5532 21.024+0000000004133140 22.024+0000000009108050 31...0+0000000000151847 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110120+00000000GDEM5533 21.024+0000000004116390 22.024+0000000009104540 31...0+0000000000158690 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110121+00000000GDEM5534 21.024+0000000004316120 22.024+0000000009106360 31...0+0000000000160807 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110122+00000000GDEM5535 21.024+0000000004333560 22.024+0000000009111020 31...0+0000000000154541 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110123+00000000GDEM5536 21.024+0000000004348310 22.024+0000000009125430 31...0+0000000000148046 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110124+00000000GDEM5537 21.024+0000000004409300 22.024+0000000009128360 31...0+0000000000141416 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110125+00000000GDEM5538 21.024+0000000004429440 22.024+0000000009129410 31...0+0000000000135213 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110126+00000000GDEM5539 21.024+0000000004455190 22.024+0000000009148480 31...0+0000000000129100 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110127+00000000GDEM5540 21.024+0000000004524350 22.024+0000000009151470 31...0+0000000000123442 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110128+00000000GDEM5541 21.024+0000000004547330 22.024+0000000009135550 31...0+0000000000118169 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110129+00000000GDEM5542 21.024+0000000004641570 22.024+0000000009126140 31...0+0000000000111882 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110130+00000000GDEM5543 21.024+0000000004722490 22.024+0000000009130500 31...0+0000000000105529 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110131+00000000GDEM5544 21.024+0000000004812480 22.024+0000000009119200 31...0+0000000000100584 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110132+00000000GDEM5545 21.024+0000000004937060 22.024+0000000009119310 31...0+0000000000095027 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110133+00000000GDEM5546 21.024+0000000005037150 22.024+0000000009132530 31...0+0000000000089968 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110134+00000000GDEM5547 21.024+0000000005129370 22.024+0000000009131410 31...0+0000000000084231 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110135+00000000GDEM5548 21.024+0000000005241000 22.024+0000000009223140 31...0+0000000000080119 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110136+00000000GDEM5549 21.024+0000000005435350 22.024+0000000009244330 31...0+0000000000074704 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110137+00000000GDEM5550 21.024+0000000005640080 22.024+0000000009224440 31...0+0000000000069808 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110138+00000000GDEM5551 21.024+0000000005858070 22.024+0000000009208240 31...0+0000000000064417 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110139+00000000GDEM5552 21.024+0000000006139490 22.024+0000000009217430 31...0+0000000000059185 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110140+00000000GDEM5553 21.024+0000000006523100 22.024+0000000009227110 31...0+0000000000053031 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110141+00000000GDEM5554 21.024+0000000006954560 22.024+0000000009312530 31...0+0000000000047765 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110142+00000000GDEM5555 21.024+0000000007510330 22.024+0000000009436540 31...0+0000000000043008 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110143+00000000GDEM5556 21.024+0000000008053400 22.024+0000000009529200 31...0+0000000000039042 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110144+00000000GDEM5557 21.024+0000000008914090 22.024+0000000009620500 31...0+0000000000035368 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110145+00000000GDEM5558 21.024+0000000009749530 22.024+0000000009633080 31...0+0000000000032655 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110146+00000000GDEM5559 21.024+0000000010756430 22.024+0000000009648520 31...0+0000000000030659 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110147+00000000GDEM5560 21.024+0000000011445040 22.024+0000000009709480 31...0+0000000000033605 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110148+00000000GDEM5561 21.024+0000000010629230 22.024+0000000009535080 31...0+0000000000034399 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110149+00000000GDEM5562 21.024+0000000009759100 22.024+0000000009537310 31...0+0000000000036292 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110150+00000000GDEM5563 21.024+0000000009000500 22.024+0000000009444000 31...0+0000000000039677 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110151+00000000GDEM5564 21.024+0000000008345000 22.024+0000000009335280 31...0+0000000000043413 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110152+00000000GDEM5565 21.024+0000000007844340 22.024+0000000009413470 31...0+0000000000047213 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110153+00000000GDEM5566 21.024+0000000007429370 22.024+0000000009258390 31...0+0000000000051614 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110154+00000000GDEM5567 21.024+0000000007130430 22.024+0000000009148250 31...0+0000000000054245 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110155+00000000GDEM5568 21.024+0000000006754040 22.024+0000000009149400 31...0+0000000000059449 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110156+00000000GDEM5569 21.024+0000000006522310 22.024+0000000009222280 31...0+0000000000063708 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110157+00000000GDEM5570 21.024+0000000006315590 22.024+0000000009200400 31...0+0000000000068142 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110158+00000000GDEM5571 21.024+0000000006028370 22.024+0000000009218290 31...0+0000000000074735 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110159+00000000GDEM5572 21.024+0000000005758130 22.024+0000000009236440 31...0+0000000000081611 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110160+00000000GDEM5573 21.024+0000000005550510 22.024+0000000009141190 31...0+0000000000090233 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110161+00000000GDEM5574 21.024+0000000005444040 22.024+0000000009112550 31...0+0000000000094763 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110162+00000000GDEM5575 21.024+0000000005302130 22.024+0000000009123540 31...0+0000000000101806 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110163+00000000GDEM5576 21.024+0000000005205100 22.024+0000000009155140 31...0+0000000000107078 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110164+00000000GDEM5577 21.024+0000000005049510 22.024+0000000009145280 31...0+0000000000114104 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110165+00000000GDEM5578 21.024+0000000004941540 22.024+0000000009151090 31...0+0000000000120263 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110166+00000000GDEM5579 21.024+0000000004839140 22.024+0000000009147050 31...0+0000000000127501 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110167+00000000GDEM5580 21.024+0000000004801310 22.024+0000000009135220 31...0+0000000000133079 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110168+00000000GDEM5581 21.024+0000000004718000 22.024+0000000009133040 31...0+0000000000139349 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110169+00000000GDEM5582 21.024+0000000004637320 22.024+0000000009122180 31...0+0000000000145856 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110170+00000000GDEM5583 21.024+0000000004604340 22.024+0000000009109120 31...0+0000000000151454 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110171+00000000GDEM5584 21.024+0000000004534590 22.024+0000000009102550 31...0+0000000000157733 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110172+00000000GDEM5585 21.024+0000000004515460 22.024+0000000009049480 31...0+0000000000161473 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110173+00000000GDEM5586 21.024+0000000004636060 22.024+0000000009115140 31...0+0000000000163316 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110174+00000000GDEM5587 21.024+0000000004705590 22.024+0000000009104500 31...0+0000000000158425 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110175+00000000GDEM5588 21.024+0000000004738310 22.024+0000000009117010 31...0+0000000000153535 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110176+00000000GDEM5589 21.024+0000000004759350 22.024+0000000009110470 31...0+0000000000148989 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110177+00000000GDEM5590 21.024+0000000004813260 22.024+0000000009127070 31...0+0000000000144457 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110178+00000000GDEM5591 21.024+0000000004914220 22.024+0000000009136370 31...0+0000000000139542 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110179+00000000GDEM5592 21.024+0000000004956400 22.024+0000000009145030 31...0+0000000000134525 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110180+00000000GDEM5593 21.024+0000000005054530 22.024+0000000009149280 31...0+0000000000127899 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110181+00000000GDEM5594 21.024+0000000005220070 22.024+0000000009154580 31...0+0000000000120682 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110182+00000000GDEM5595 21.024+0000000005318550 22.024+0000000009205410 31...0+0000000000114118 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110183+00000000GDEM5596 21.024+0000000005402400 22.024+0000000009211070 31...0+0000000000108656 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110184+00000000GDEM5597 21.024+0000000005524550 22.024+0000000009202020 31...0+0000000000103190 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110185+00000000GDEM5598 21.024+0000000005645120 22.024+0000000009148500 31...0+0000000000098181 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110186+00000000GDEM5599 21.024+0000000005758370 22.024+0000000009141580 31...0+0000000000093672 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110187+00000000GDEM5600 21.024+0000000005925280 22.024+0000000009200520 31...0+0000000000089306 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110188+00000000GDEM5601 21.024+0000000006103100 22.024+0000000009249580 31...0+0000000000084745 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110189+00000000GDEM5602 21.024+0000000006330380 22.024+0000000009253570 31...0+0000000000079325 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110190+00000000GDEM5603 21.024+0000000006553490 22.024+0000000009256240 31...0+0000000000074364 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110191+00000000GDEM5604 21.024+0000000006852560 22.024+0000000009300540 31...0+0000000000068985 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110192+00000000GDEM5605 21.024+0000000007132550 22.024+0000000009326240 31...0+0000000000065641 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110193+00000000GDEM5606 21.024+0000000007407290 22.024+0000000009333420 31...0+0000000000062071 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110194+00000000GDEM5607 21.024+0000000007745070 22.024+0000000009409000 31...0+0000000000057914 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110195+00000000GDEM5608 21.024+0000000008208310 22.024+0000000009509310 31...0+0000000000053863 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110196+00000000GDEM5609 21.024+0000000008700250 22.024+0000000009511320 31...0+0000000000050162 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110197+00000000GDEM5610 21.024+0000000009039050 22.024+0000000009428540 31...0+0000000000047699 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110198+00000000GDEM5611 21.024+0000000009736220 22.024+0000000009443150 31...0+0000000000044189 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110199+00000000GDEM5612 21.024+0000000010509030 22.024+0000000009528590 31...0+0000000000041892 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110200+00000000GDEM5613 21.024+0000000011329140 22.024+0000000009705530 31...0+0000000000039888 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110201+00000000GDEM5614 21.024+0000000011625520 22.024+0000000009624120 31...0+0000000000045390 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110202+00000000GDEM5615 21.024+0000000010819200 22.024+0000000009530260 31...0+0000000000046720 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110203+00000000GDEM5616 21.024+0000000010053050 22.024+0000000009453530 31...0+0000000000048824 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110204+00000000GDEM5617 21.024+0000000009424450 22.024+0000000009431180 31...0+0000000000051448 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110205+00000000GDEM5618 21.024+0000000008837130 22.024+0000000009536210 31...0+0000000000054577 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110206+00000000GDEM5619 21.024+0000000008326590 22.024+0000000009522340 31...0+0000000000058545 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110207+00000000GDEM5620 21.024+0000000007902480 22.024+0000000009442330 31...0+0000000000062837 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110208+00000000GDEM5621 21.024+0000000007527120 22.024+0000000009342300 31...0+0000000000066772 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110209+00000000GDEM5622 21.024+0000000007202520 22.024+0000000009325170 31...0+0000000000071463 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110210+00000000GDEM5623 21.024+0000000006902430 22.024+0000000009325180 31...0+0000000000076235 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110211+00000000GDEM5624 21.024+0000000006615220 22.024+0000000009319280 31...0+0000000000081457 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110212+00000000GDEM5625 21.024+0000000006348310 22.024+0000000009255390 31...0+0000000000087530 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110213+00000000GDEM5626 21.024+0000000006158270 22.024+0000000009225340 31...0+0000000000092807 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110214+00000000GDEM5627 21.024+0000000006002460 22.024+0000000009214110 31...0+0000000000098995 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110215+00000000GDEM5628 21.024+0000000005830110 22.024+0000000009207490 31...0+0000000000103957 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110216+00000000GDEM5629 21.024+0000000005649460 22.024+0000000009218420 31...0+0000000000110149 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110217+00000000GDEM5630 21.024+0000000005521180 22.024+0000000009203380 31...0+0000000000116129 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110218+00000000GDEM5631 21.024+0000000005409300 22.024+0000000009157240 31...0+0000000000121709 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110219+00000000GDEM5632 21.024+0000000005253390 22.024+0000000009151170 31...0+0000000000128058 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110220+00000000GDEM5633 21.024+0000000005148560 22.024+0000000009153260 31...0+0000000000134404 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110221+00000000GDEM5634 21.024+0000000005052200 22.024+0000000009148440 31...0+0000000000142369 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110222+00000000GDEM5635 21.024+0000000005012230 22.024+0000000009132220 31...0+0000000000148882 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110223+00000000GDEM5636 21.024+0000000004936470 22.024+0000000009129230 31...0+0000000000155096 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110224+00000000GDEM5637 21.024+0000000004904150 22.024+0000000009123080 31...0+0000000000160202 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110225+00000000GDEM5638 21.024+0000000004834340 22.024+0000000009124560 31...0+0000000000165380 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110226+00000000GDEM5639 21.024+0000000005010410 22.024+0000000009117260 31...0+0000000000166379 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110227+00000000GDEM5640 21.024+0000000005036580 22.024+0000000009125190 31...0+0000000000160404 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110228+00000000GDEM5641 21.024+0000000005118590 22.024+0000000009125550 31...0+0000000000153850 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110229+00000000GDEM5642 21.024+0000000005148500 22.024+0000000009112310 31...0+0000000000150220 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110230+00000000GDEM5643 21.024+0000000005234310 22.024+0000000009114440 31...0+0000000000145491 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110231+00000000GDEM5644 21.024+0000000005324130 22.024+0000000009123430 31...0+0000000000139924 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110232+00000000GDEM5645 21.024+0000000005354130 22.024+0000000009140150 31...0+0000000000134863 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110233+00000000GDEM5646 21.024+0000000005438080 22.024+0000000009141040 31...0+0000000000129657 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110234+00000000GDEM5647 21.024+0000000005537140 22.024+0000000009146310 31...0+0000000000124860 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110235+00000000GDEM5648 21.024+0000000005640380 22.024+0000000009202300 31...0+0000000000119190 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110236+00000000GDEM5649 21.024+0000000005823430 22.024+0000000009219160 31...0+0000000000113731 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110237+00000000GDEM5650 21.024+0000000006012190 22.024+0000000009224440 31...0+0000000000107870 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110238+00000000GDEM5651 21.024+0000000006149450 22.024+0000000009228010 31...0+0000000000102194 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110239+00000000GDEM5652 21.024+0000000006355290 22.024+0000000009238330 31...0+0000000000095886 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110240+00000000GDEM5653 21.024+0000000006608110 22.024+0000000009254500 31...0+0000000000089899 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110241+00000000GDEM5654 21.024+0000000006838420 22.024+0000000009318060 31...0+0000000000084368 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110242+00000000GDEM5655 21.024+0000000007200570 22.024+0000000009321480 31...0+0000000000079361 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110243+00000000GDEM5656 21.024+0000000007602460 22.024+0000000009347450 31...0+0000000000074370 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110244+00000000GDEM5657 21.024+0000000008021520 22.024+0000000009415490 31...0+0000000000069857 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110245+00000000GDEM5658 21.024+0000000008517020 22.024+0000000009441230 31...0+0000000000065835 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110246+00000000GDEM5659 21.024+0000000009012500 22.024+0000000009455490 31...0+0000000000062834 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110247+00000000GDEM5660 21.024+0000000009449490 22.024+0000000009437560 31...0+0000000000059910 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110248+00000000GDEM5661 21.024+0000000010008170 22.024+0000000009436280 31...0+0000000000056836 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110249+00000000GDEM5662 21.024+0000000010625080 22.024+0000000009506190 31...0+0000000000054241 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110250+00000000GDEM5663 21.024+0000000011257350 22.024+0000000009524470 31...0+0000000000052386 51....+000000000017+000 87...0+0000000000002150 88...0+0000000000001324 
+*110251+00000000GDEM5664 21.024+0000000011707220 22.024+0000000009555530 31...0+0000000000057377 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110252+00000000GDEM5665 21.024+0000000011041540 22.024+0000000009520160 31...0+0000000000058651 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110253+00000000GDEM5666 21.024+0000000010458420 22.024+0000000009504490 31...0+0000000000060448 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110254+00000000GDEM5667 21.024+0000000009915400 22.024+0000000009455190 31...0+0000000000062682 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110255+00000000GDEM5668 21.024+0000000009336510 22.024+0000000009502560 31...0+0000000000065692 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110256+00000000GDEM5669 21.024+0000000008918120 22.024+0000000009451550 31...0+0000000000068900 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110257+00000000GDEM5670 21.024+0000000008632360 22.024+0000000009402510 31...0+0000000000071756 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110258+00000000GDEM5671 21.024+0000000008341540 22.024+0000000009347250 31...0+0000000000074610 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110259+00000000GDEM5672 21.024+0000000008020230 22.024+0000000009340200 31...0+0000000000078934 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110260+00000000GDEM5673 21.024+0000000007718310 22.024+0000000009317310 31...0+0000000000082988 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110261+00000000GDEM5674 21.024+0000000007428400 22.024+0000000009307110 31...0+0000000000087617 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110262+00000000GDEM5675 21.024+0000000007153130 22.024+0000000009251340 31...0+0000000000092154 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110263+00000000GDEM5676 21.024+0000000006931130 22.024+0000000009241280 31...0+0000000000096756 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110264+00000000GDEM5677 21.024+0000000006733150 22.024+0000000009234370 31...0+0000000000101101 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110265+00000000GDEM5678 21.024+0000000006558130 22.024+0000000009232310 31...0+0000000000104728 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110266+00000000GDEM5679 21.024+0000000006355340 22.024+0000000009215590 31...0+0000000000110370 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110267+00000000GDEM5680 21.024+0000000006207320 22.024+0000000009208460 31...0+0000000000115852 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110268+00000000GDEM5681 21.024+0000000006056200 22.024+0000000009204510 31...0+0000000000119503 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110269+00000000GDEM5682 21.024+0000000005934120 22.024+0000000009154570 31...0+0000000000125078 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110270+00000000GDEM5683 21.024+0000000005809400 22.024+0000000009147560 31...0+0000000000129959 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110271+00000000GDEM5684 21.024+0000000005705500 22.024+0000000009143300 31...0+0000000000136300 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110272+00000000GDEM5685 21.024+0000000005610000 22.024+0000000009137210 31...0+0000000000142182 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110273+00000000GDEM5686 21.024+0000000005518200 22.024+0000000009132250 31...0+0000000000147244 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110274+00000000GDEM5687 21.024+0000000005433490 22.024+0000000009145370 31...0+0000000000152979 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110275+00000000GDEM5688 21.024+0000000005339000 22.024+0000000009146580 31...0+0000000000158991 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110276+00000000GDEM5689 21.024+0000000005250280 22.024+0000000009135330 31...0+0000000000164888 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110277+00000000GDEM5690 21.024+0000000005524550 22.024+0000000009133500 31...0+0000000000163939 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110278+00000000GDEM5691 21.024+0000000005623360 22.024+0000000009140070 31...0+0000000000157560 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110279+00000000GDEM5692 21.024+0000000005653010 22.024+0000000009140010 31...0+0000000000154123 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110280+00000000GDEM5693 21.024+0000000005803180 22.024+0000000009142590 31...0+0000000000150339 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110281+00000000GDEM5694 21.024+0000000005906130 22.024+0000000009149160 31...0+0000000000145360 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110282+00000000GDEM5695 21.024+0000000006026100 22.024+0000000009155490 31...0+0000000000139838 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110283+00000000GDEM5696 21.024+0000000006137550 22.024+0000000009201260 31...0+0000000000134833 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110284+00000000GDEM5697 21.024+0000000006324480 22.024+0000000009204180 31...0+0000000000129249 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110285+00000000GDEM5698 21.024+0000000006448510 22.024+0000000009216430 31...0+0000000000125048 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110286+00000000GDEM5699 21.024+0000000006520050 22.024+0000000009214080 31...0+0000000000120293 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110287+00000000GDEM5700 21.024+0000000006610450 22.024+0000000009211050 31...0+0000000000115208 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110288+00000000GDEM5701 21.024+0000000006751280 22.024+0000000009230490 31...0+0000000000110266 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110289+00000000GDEM5702 21.024+0000000006953160 22.024+0000000009240200 31...0+0000000000104791 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110290+00000000GDEM5703 21.024+0000000007200360 22.024+0000000009238240 31...0+0000000000100270 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110291+00000000GDEM5704 21.024+0000000007550100 22.024+0000000009256280 31...0+0000000000094747 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110292+00000000GDEM5705 21.024+0000000007836280 22.024+0000000009317370 31...0+0000000000089439 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110293+00000000GDEM5706 21.024+0000000008045450 22.024+0000000009324050 31...0+0000000000085164 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110294+00000000GDEM5707 21.024+0000000008412340 22.024+0000000009342200 31...0+0000000000081270 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110295+00000000GDEM5708 21.024+0000000008830280 22.024+0000000009356330 31...0+0000000000077452 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110296+00000000GDEM5709 21.024+0000000009304000 22.024+0000000009412460 31...0+0000000000073078 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110297+00000000GDEM5710 21.024+0000000009800370 22.024+0000000009421460 31...0+0000000000069518 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110298+00000000GDEM5711 21.024+0000000010139370 22.024+0000000009435300 31...0+0000000000067452 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110299+00000000GDEM5712 21.024+0000000010637070 22.024+0000000009441520 31...0+0000000000065821 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110300+00000000GDEM5713 21.024+0000000011142300 22.024+0000000009438080 31...0+0000000000063808 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110301+00000000GDEM5714 21.024+0000000011520070 22.024+0000000009546220 31...0+0000000000062986 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110302+00000000GDEM5715 21.024+0000000011706590 22.024+0000000009517590 31...0+0000000000068081 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110303+00000000GDEM5716 21.024+0000000011226540 22.024+0000000009433320 31...0+0000000000069145 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110304+00000000GDEM5717 21.024+0000000010704480 22.024+0000000009440120 31...0+0000000000070554 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110305+00000000GDEM5718 21.024+0000000010147480 22.024+0000000009421460 31...0+0000000000073511 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110306+00000000GDEM5719 21.024+0000000009704240 22.024+0000000009405530 31...0+0000000000076379 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110307+00000000GDEM5720 21.024+0000000009403330 22.024+0000000009404330 31...0+0000000000078771 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110308+00000000GDEM5721 21.024+0000000009041180 22.024+0000000009350240 31...0+0000000000081774 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110309+00000000GDEM5722 21.024+0000000008658110 22.024+0000000009335300 31...0+0000000000085533 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110310+00000000GDEM5723 21.024+0000000008313550 22.024+0000000009321010 31...0+0000000000089293 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110311+00000000GDEM5724 21.024+0000000008020110 22.024+0000000009311480 31...0+0000000000092724 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110312+00000000GDEM5725 21.024+0000000007724430 22.024+0000000009259310 31...0+0000000000096557 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110313+00000000GDEM5726 21.024+0000000007534400 22.024+0000000009248330 31...0+0000000000099972 51....+000000000017+000 87...0+0000000000001300 88...0+0000000000001324 
+*110409+00000000GDEM5822 21.024+0000000027756290 22.024+0000000009009510 31...0+0000000000380667 51....+000000000017+000 87...0+0000000000001500 88...0+0000000000001324 
+*110410+00000000GDEM5823 21.024+0000000027653170 22.024+0000000009006540 31...0+0000000000379796 51....+000000000017+000 87...0+0000000000001500 88...0+0000000000001324 
+*110411+00000000GDEM5824 21.024+0000000027552490 22.024+0000000009004350 31...0+0000000000377833 51....+000000000017+000 87...0+0000000000001500 88...0+0000000000001324 
+*110412+00000000GDEM5825 21.024+0000000027451450 22.024+0000000009002330 31...0+0000000000376681 51....+000000000017+000 87...0+0000000000001500 88...0+0000000000001324 
+*110413+00000000GDEM5826 21.024+0000000027350420 22.024+0000000009002130 31...0+0000000000375410 51....+000000000017+000 87...0+0000000000001500 88...0+0000000000001324 
+*110414+00000000GDEM5827 21.024+0000000027248520 22.024+0000000009001350 31...0+0000000000375194 51....+000000000017+000 87...0+0000000000001500 88...0+0000000000001324 
+*110415+00000000GDEM5828 21.024+0000000027149200 22.024+0000000009001130 31...0+0000000000375871 51....+000000000017+000 87...0+0000000000001500 88...0+0000000000001324 
+*110416+00000000GDEM5829 21.024+0000000027056590 22.024+0000000009000430 31...0+0000000000375995 51....+000000000017+000 87...0+0000000000001500 88...0+0000000000001324 
+
diff --git a/sample_data/leica_gsi/leica_gsi8_ertola.gsi b/sample_data/leica_gsi/leica_gsi8_ertola.gsi
new file mode 100644
index 0000000..bbe363c
--- /dev/null
+++ b/sample_data/leica_gsi/leica_gsi8_ertola.gsi
@@ -0,0 +1,699 @@
+110001+00000001 21.322+03496940 22.322+09364360 31..00+00030485 51..1.+0000+000 87..10+00001500 81..00+00515836 82..00+00525871 83..00+00003079 71....+00000001 32..10+00030333 
+110002+00000002 21.322+02179330 22.322+09442590 31..00+00030596 51..1.+0000+000 87..10+00001500 81..00+00510231 82..00+00528710 83..00+00002716 71....+00000001 32..10+00030479 
+110003+00000003 21.322+01386450 22.322+09390160 31..00+00032850 51..1.+0000+000 87..10+00001500 81..00+00507065 82..00+00531927 83..00+00003182 71....+00000001 32..10+00032700 
+110004+00000004 21.322+00438870 22.322+09497400 31..00+00031858 51..1.+0000+000 87..10+00001500 81..00+00502188 82..00+00531683 83..00+00002553 71....+00000001 32..10+00031758 
+110005+00000005 21.322+39544000 22.322+09616900 31..00+00030738 51..1.+0000+000 87..10+00001500 81..00+00497804 82..00+00530604 83..00+00001889 71....+00000001 32..10+00030683 
+110006+00000006 21.322+36391690 22.322+09526600 31..00+00033861 51..1.+0000+000 87..10+00001800 81..00+00481869 82..00+00528487 83..00+00002256 71....+00000001 32..10+00033768 
+110007+00000007 21.322+35615990 22.322+09406160 31..00+00040522 51..1.+0000+000 87..10+00001500 81..00+00474361 82..00+00531151 83..00+00003815 71....+00000001 32..10+00040346 
+110008+00000008 21.322+34849160 22.322+09454670 31..00+00039742 51..1.+0000+000 87..10+00001500 81..00+00471346 82..00+00527327 83..00+00003440 71....+00000001 32..10+00039596 
+110009+00000009 21.322+34309220 22.322+09449740 31..00+00041051 51..1.+0000+000 87..10+00001500 81..00+00468119 82..00+00525617 83..00+00003584 71....+00000001 32..10+00040898 
+110010+00000010 21.322+33350500 22.322+09493760 31..00+00040770 51..1.+0000+000 87..10+00002150 81..00+00464859 82..00+00520415 83..00+00002629 71....+00000001 32..10+00040641 
+110011+00000011 21.322+32541310 22.322+09660590 31..00+00040522 51..1.+0000+000 87..10+00001350 81..00+00462717 82..00+00515727 83..00+00002349 71....+00000001 32..10+00040464 
+110012+00000012 21.322+31724390 22.322+09719820 31..00+00041547 51..1.+0000+000 87..10+00001480 81..00+00460007 82..00+00511106 83..00+00001888 71....+00000001 32..10+00041506 
+110013+00000013 21.322+31160930 22.322+09798310 31..00+00045062 51..1.+0000+000 87..10+00001500 81..00+00455707 82..00+00508168 83..00+00001468 71....+00000001 32..10+00045040 
+110014+00000014 21.322+30703600 22.322+09807870 31..00+00048653 51..1.+0000+000 87..10+00001500 81..00+00451666 82..00+00505364 83..00+00001508 71....+00000001 32..10+00048631 
+110015+00000015 21.322+30293830 22.322+09813200 31..00+00052038 51..1.+0000+000 87..10+00001500 81..00+00448039 82..00+00502400 83..00+00001567 71....+00000001 32..10+00052016 
+110016+00000016 21.322+29866850 22.322+09790610 31..00+00054781 51..1.+0000+000 87..10+00001500 81..00+00445260 82..00+00498855 83..00+00001842 71....+00000001 32..10+00054752 
+110017+00000017 21.322+29638590 22.322+09708330 31..00+00060246 51..1.+0000+000 87..10+00001500 81..00+00439914 82..00+00496585 83..00+00002799 71....+00000001 32..10+00060183 
+110018+00000018 21.322+29015170 22.322+09745760 31..00+00059016 51..1.+0000+000 87..10+00001500 81..00+00441735 82..00+00490914 83..00+00002396 71....+00000001 32..10+00058969 
+110019+00000019 21.322+28501740 22.322+09765890 31..00+00060109 51..1.+0000+000 87..10+00001500 81..00+00441587 82..00+00485993 83..00+00002250 71....+00000001 32..10+00060069 
+110020+00000020 21.322+28160260 22.322+09757860 31..00+00063258 51..1.+0000+000 87..10+00001500 81..00+00439409 82..00+00481986 83..00+00002446 71....+00000001 32..10+00063212 
+110021+00000021 21.322+27758200 22.322+09746660 31..00+00066816 51..1.+0000+000 87..10+00001800 81..00+00437334 82..00+00476973 83..00+00002398 71....+00000001 32..10+00066763 
+110022+00000022 21.322+27557570 22.322+09737640 31..00+00070852 51..1.+0000+000 87..10+00001800 81..00+00434354 82..00+00473502 83..00+00002659 71....+00000001 32..10+00070792 
+110023+00000023 21.322+27498070 22.322+09744050 31..00+00075713 51..1.+0000+000 87..10+00001300 81..00+00430116 82..00+00471028 83..00+00003284 71....+00000001 32..10+00075652 
+110024+00000024 21.322+27357080 22.322+09692520 31..00+00081201 51..1.+0000+000 87..10+00001300 81..00+00425783 82..00+00467288 83..00+00004161 71....+00000001 32..10+00081106 
+110025+00000025 21.322+27083790 22.322+09688240 31..00+00084040 51..1.+0000+000 87..10+00001450 81..00+00424714 82..00+00462880 83..00+00004204 71....+00000001 32..10+00083939 
+110026+00000026 21.322+27330920 22.322+09553460 31..00+00092443 51..1.+0000+000 87..10+00001950 81..00+00415771 82..00+00462461 83..00+00006069 71....+00000001 32..10+00092215 
+110027+00000027 21.322+27329070 22.322+09528530 31..00+00098507 51..1.+0000+000 87..10+00001600 81..00+00410283 82..00+00459983 83..00+00007229 71....+00000001 32..10+00098237 
+110028+00000028 21.322+27186610 22.322+09512520 31..00+00102971 51..1.+0000+000 87..10+00001700 81..00+00407194 82..00+00456090 83..00+00007718 71....+00000001 32..10+00102669 
+110029+00000029 21.322+26762700 22.322+09482910 31..00+00116020 51..1.+0000+000 87..10+00001650 81..00+00398994 82..00+00443698 83..00+00009304 71....+00000001 32..10+00115638 
+110030+00000030 21.322+26511550 22.322+09470350 31..00+00118445 51..1.+0000+000 87..10+00001650 81..00+00399246 82..00+00438509 83..00+00009734 71....+00000001 32..10+00118036 
+110031+00000031 21.322+26564830 22.322+09449610 31..00+00129206 51..1.+0000+000 87..10+00001650 81..00+00389566 82..00+00433864 83..00+00011048 71....+00000001 32..10+00128723 
+110032+00000032 21.322+26485940 22.322+09455640 31..00+00132819 51..1.+0000+000 87..10+00001650 81..00+00387320 82..00+00430607 83..00+00011235 71....+00000001 32..10+00132334 
+110033+00000033 21.322+26311670 22.322+09479060 31..00+00130513 51..1.+0000+000 87..10+00001300 81..00+00391151 82..00+00428785 83..00+00010909 71....+00000001 32..10+00130076 
+110034+00000034 21.322+26106560 22.322+09473530 31..00+00124253 51..1.+0000+000 87..10+00001700 81..00+00398617 82..00+00428903 83..00+00010105 71....+00000001 32..10+00123828 
+110035+00000035 21.322+26305620 22.322+09482180 31..00+00117597 51..1.+0000+000 87..10+00001300 81..00+00401980 82..00+00435736 83..00+00009796 71....+00000001 32..10+00117209 
+110036+00000036 21.322+26404130 22.322+09498070 31..00+00109502 51..1.+0000+000 87..10+00001300 81..00+00407794 82..00+00441568 83..00+00008865 71....+00000001 32..10+00109162 
+110037+00000037 21.322+26232650 22.322+09537400 31..00+00104009 51..1.+0000+000 87..10+00001300 81..00+00413905 82..00+00442133 83..00+00007792 71....+00000001 32..10+00103735 
+110038+00000038 21.322+26003250 22.322+09599850 31..00+00101927 51..1.+0000+000 87..10+00001300 81..00+00417671 82..00+00440249 83..00+00006643 71....+00000001 32..10+00101726 
+110039+00000039 21.322+25781440 22.322+09666060 31..00+00100819 51..1.+0000+000 87..10+00001300 81..00+00420627 82..00+00438061 83..00+00005527 71....+00000001 32..10+00100680 
+110040+00000040 21.322+25547980 22.322+09715120 31..00+00102542 51..1.+0000+000 87..10+00001300 81..00+00421606 82..00+00434060 83..00+00004828 71....+00000001 32..10+00102439 
+110041+00000041 21.322+25465850 22.322+09709420 31..00+00104794 51..1.+0000+000 87..10+00001300 81..00+00420763 82..00+00431586 83..00+00005022 71....+00000001 32..10+00104685 
+110042+00000042 21.322+25283660 22.322+09671570 31..00+00107433 51..1.+0000+000 87..10+00002000 81..00+00420831 82..00+00427589 83..00+00005081 71....+00000001 32..10+00107290 
+110043+00000043 21.322+25107360 22.322+09678230 31..00+00110695 51..1.+0000+000 87..10+00002000 81..00+00420519 82..00+00423156 83..00+00005133 71....+00000001 32..10+00110554 
+110044+00000044 21.322+25266440 22.322+09680810 31..00+00112557 51..1.+0000+000 87..10+00001360 81..00+00417254 82..00+00423906 83..00+00005822 71....+00000001 32..10+00112416 
+110045+00000045 21.322+25266020 22.322+09689490 31..00+00119170 51..1.+0000+000 87..10+00001300 81..00+00412392 82..00+00419424 83..00+00006051 71....+00000001 32..10+00119028 
+110046+00000046 21.322+25111450 22.322+09723800 31..00+00120142 51..1.+0000+000 87..10+00001300 81..00+00413654 82..00+00416625 83..00+00005452 71....+00000001 32..10+00120029 
+110047+00000047 21.322+24967740 22.322+09746540 31..00+00119674 51..1.+0000+000 87..10+00001300 81..00+00415874 82..00+00415017 83..00+00005004 71....+00000001 32..10+00119579 
+110048+00000048 21.322+24971040 22.322+09733670 31..00+00113354 51..1.+0000+000 87..10+00001300 81..00+00420282 82..00+00419554 83..00+00004982 71....+00000001 32..10+00113254 
+110049+00000049 21.322+24922110 22.322+09742220 31..00+00109688 51..1.+0000+000 87..10+00001300 81..00+00423457 82..00+00421560 83..00+00004681 71....+00000001 32..10+00109598 
+110050+00000050 21.322+24677710 22.322+09760020 31..00+00110513 51..1.+0000+000 87..10+00001300 81..00+00425963 82..00+00418060 83..00+00004406 71....+00000001 32..10+00110434 
+110051+00000051 21.322+24439660 22.322+09766250 31..00+00111806 51..1.+0000+000 87..10+00001300 81..00+00428246 82..00+00414356 83..00+00004345 71....+00000001 32..10+00111730 
+110052+00000052 21.322+24284740 22.322+09775980 31..00+00111640 51..1.+0000+000 87..10+00001300 81..00+00430450 82..00+00412760 83..00+00004169 71....+00000001 32..10+00111571 
+110053+00000053 21.322+24027050 22.322+09793440 31..00+00112222 51..1.+0000+000 87..10+00001300 81..00+00433688 82..00+00409540 83..00+00003881 71....+00000001 32..10+00112162 
+110054+00000054 21.322+23865220 22.322+09800170 31..00+00111337 51..1.+0000+000 87..10+00001300 81..00+00436511 82..00+00408607 83..00+00003735 71....+00000001 32..10+00111282 
+110055+00000055 21.322+23856810 22.322+09783780 31..00+00116442 51..1.+0000+000 87..10+00002100 81..00+00433731 82..00+00404336 83..00+00003395 71....+00000001 32..10+00116375 
+110056+00000056 21.322+23821530 22.322+09814050 31..00+00123166 51..1.+0000+000 87..10+00002150 81..00+00430456 82..00+00398410 83..00+00002988 71....+00000001 32..10+00123113 
+110057+00000057 21.322+23707710 22.322+09842710 31..00+00128679 51..1.+0000+000 87..10+00002150 81..00+00429244 82..00+00392568 83..00+00002570 71....+00000001 32..10+00128639 
+110058+00000058 21.322+23711000 22.322+09805030 31..00+00109818 51..1.+0000+000 87..10+00001300 81..00+00439577 82..00+00408360 83..00+00003604 71....+00000001 32..10+00109767 
+110059+00000059 21.322+23493450 22.322+09817490 31..00+00107285 51..1.+0000+000 87..10+00001300 81..00+00444061 82..00+00408504 83..00+00003316 71....+00000001 32..10+00107241 
+110060+00000060 21.322+23198680 22.322+09831360 31..00+00108693 51..1.+0000+000 87..10+00001300 81..00+00447675 82..00+00404774 83..00+00003120 71....+00000001 32..10+00108655 
+110061+00000061 21.322+22987450 22.322+09848530 31..00+00111091 51..1.+0000+000 87..10+00001300 81..00+00449775 82..00+00400946 83..00+00002884 71....+00000001 32..10+00111060 
+110062+00000062 21.322+22724040 22.322+09840510 31..00+00111446 51..1.+0000+000 87..10+00001300 81..00+00453770 82..00+00398634 83..00+00003032 71....+00000001 32..10+00111411 
+110063+00000063 21.322+22533020 22.322+09849740 31..00+00112932 51..1.+0000+000 87..10+00001710 81..00+00456254 82..00+00395919 83..00+00002496 71....+00000001 32..10+00112900 
+110064+00000064 21.322+22325960 22.322+09860980 31..00+00114875 51..1.+0000+000 87..10+00001710 81..00+00458967 82..00+00392733 83..00+00002339 71....+00000001 32..10+00114847 
+110065+00000065 21.322+22098360 22.322+09875060 31..00+00116025 51..1.+0000+000 87..10+00001710 81..00+00462453 82..00+00390242 83..00+00002108 71....+00000001 32..10+00116003 
+110066+00000066 21.322+21925640 22.322+09884010 31..00+00115314 51..1.+0000+000 87..10+00001710 81..00+00465655 82..00+00389939 83..00+00001932 71....+00000001 32..10+00115295 
+110067+00000067 21.322+21727730 22.322+09891900 31..00+00115928 51..1.+0000+000 87..10+00001710 81..00+00468927 82..00+00388332 83..00+00001799 71....+00000001 32..10+00115911 
+110068+00000068 21.322+21484930 22.322+09908410 31..00+00116438 51..1.+0000+000 87..10+00001710 81..00+00473089 82..00+00386727 83..00+00001506 71....+00000001 32..10+00116426 
+110069+00000069 21.322+21318460 22.322+09926470 31..00+00118636 51..1.+0000+000 87..10+00001710 81..00+00475607 82..00+00383907 83..00+00001201 71....+00000001 32..10+00118628 
+110070+00000070 21.322+21130120 22.322+09931020 31..00+00118866 51..1.+0000+000 87..10+00001710 81..00+00479011 82..00+00383009 83..00+00001119 71....+00000001 32..10+00118859 
+110071+00000071 21.322+21018170 22.322+09929510 31..00+00118075 51..1.+0000+000 87..10+00001710 81..00+00481197 82..00+00383439 83..00+00001138 71....+00000001 32..10+00118068 
+110072+00000072 21.322+20930390 22.322+09937400 31..00+00115217 51..1.+0000+000 87..10+00001500 81..00+00483222 82..00+00386017 83..00+00001174 71....+00000001 32..10+00115211 
+110073+00000073 21.322+20919440 22.322+09922820 31..00+00109306 51..1.+0000+000 87..10+00001500 81..00+00484269 82..00+00391840 83..00+00001366 71....+00000001 32..10+00109298 
+110074+00000074 21.322+20892570 22.322+09916000 31..00+00104646 51..1.+0000+000 87..10+00001500 81..00+00485377 82..00+00396390 83..00+00001422 71....+00000001 32..10+00104637 
+110075+00000075 21.322+20892050 22.322+09906050 31..00+00099495 51..1.+0000+000 87..10+00001500 81..00+00486105 82..00+00401491 83..00+00001509 71....+00000001 32..10+00099484 
+110076+00000076 21.322+20932150 22.322+09900550 31..00+00093938 51..1.+0000+000 87..10+00001500 81..00+00486296 82..00+00407079 83..00+00001508 71....+00000001 32..10+00093926 
+110077+00000077 21.322+20902720 22.322+09900510 31..00+00089877 51..1.+0000+000 87..10+00001500 81..00+00487300 82..00+00411035 83..00+00001445 71....+00000001 32..10+00089867 
+110078+00000078 21.322+20834120 22.322+09903190 31..00+00086234 51..1.+0000+000 87..10+00001500 81..00+00488735 82..00+00414515 83..00+00001352 71....+00000001 32..10+00086224 
+110079+00000079 21.322+20922740 22.322+09925130 31..00+00081002 51..1.+0000+000 87..10+00001500 81..00+00488301 82..00+00419853 83..00+00000993 71....+00000001 32..10+00080996 
+110080+00000080 21.322+20700720 22.322+09943820 31..00+00078389 51..1.+0000+000 87..10+00001500 81..00+00491390 82..00+00422088 83..00+00000732 71....+00000001 32..10+00078386 
+110081+00000081 21.322+20418190 22.322+09924340 31..00+00080392 51..1.+0000+000 87..10+00001500 81..00+00494723 82..00+00419787 83..00+00000996 71....+00000001 32..10+00080387 
+110082+00000082 21.322+20164200 22.322+09900420 31..00+00082193 51..1.+0000+000 87..10+00001500 81..00+00497881 82..00+00417844 83..00+00001326 71....+00000001 32..10+00082183 
+110083+00000083 21.322+19847200 22.322+09915740 31..00+00080046 51..1.+0000+000 87..10+00001500 81..00+00501921 82..00+00419984 83..00+00001100 71....+00000001 32..10+00080039 
+110084+00000084 21.322+19904100 22.322+09969390 31..00+00075165 51..1.+0000+000 87..10+00001500 81..00+00501132 82..00+00424844 83..00+00000402 71....+00000001 32..10+00075165 
+110085+00000085 21.322+19800180 22.322+10046370 31..00+00070700 51..1.+0000+000 87..10+00001500 81..00+00502219 82..00+00429337 83..00-00000475 71....+00000001 32..10+00070698 
+110086+00000086 21.322+19803360 22.322+10089720 31..00+00065750 51..1.+0000+000 87..10+00001500 81..00+00502030 82..00+00434288 83..00-00000886 71....+00000001 32..10+00065743 
+110087+00000087 21.322+19686440 22.322+10101830 31..00+00061590 51..1.+0000+000 87..10+00001500 81..00+00503032 82..00+00438493 83..00-00000945 71....+00000001 32..10+00061582 
+110088+00000088 21.322+19484440 22.322+10111180 31..00+00057328 51..1.+0000+000 87..10+00001500 81..00+00504637 82..00+00442868 83..00-00000961 71....+00000001 32..10+00057319 
+110089+00000089 21.322+19118540 22.322+10130890 31..00+00054886 51..1.+0000+000 87..10+00001500 81..00+00507574 82..00+00445651 83..00-00001088 71....+00000001 32..10+00054874 
+110090+00000090 21.322+18643650 22.322+10135840 31..00+00054485 51..1.+0000+000 87..10+00001500 81..00+00511518 82..00+00446759 83..00-00001122 71....+00000001 32..10+00054473 
+110091+00000091 21.322+18156720 22.322+10134850 31..00+00052416 51..1.+0000+000 87..10+00001500 81..00+00514962 82..00+00449777 83..00-00001070 71....+00000001 32..10+00052404 
+110092+00000092 21.322+17570050 22.322+10085810 31..00+00052895 51..1.+0000+000 87..10+00001500 81..00+00519701 82..00+00450916 83..00-00000673 71....+00000001 32..10+00052890 
+110093+00000093 21.322+17907710 22.322+10053160 31..00+00058916 51..1.+0000+000 87..10+00001300 81..00+00519016 82..00+00444239 83..00-00000252 71....+00000001 32..10+00058914 
+110094+00000094 21.322+18118450 22.322+10058760 31..00+00065457 51..1.+0000+000 87..10+00001600 81..00+00519065 82..00+00437384 83..00-00000664 71....+00000001 32..10+00065455 
+110095+00000095 21.322+17895210 22.322+10086590 31..00+00072087 51..1.+0000+000 87..10+00001600 81..00+00523399 82..00+00431824 83..00-00001040 71....+00000001 32..10+00072080 
+110096+00000096 21.322+17579460 22.322+10051770 31..00+00075815 51..1.+0000+000 87..10+00002150 81..00+00528136 82..00+00429602 83..00-00001226 71....+00000001 32..10+00075813 
+110097+00000097 21.322+17261550 22.322+09996760 31..00+00076518 51..1.+0000+000 87..10+00002150 81..00+00531909 82..00+00430453 83..00-00000571 71....+00000001 32..10+00076518 
+110098+00000098 21.322+17032760 22.322+09965830 31..00+00074290 51..1.+0000+000 87..10+00001800 81..00+00533386 82..00+00433635 83..00+00000139 71....+00000001 32..10+00074289 
+110099+00000099 21.322+16666680 22.322+09916950 31..00+00071014 51..1.+0000+000 87..10+00001800 81..00+00535504 82..00+00438505 83..00+00000667 71....+00000001 32..10+00071008 
+110100+00000100 21.322+16241580 22.322+09886910 31..00+00069434 51..1.+0000+000 87..10+00001800 81..00+00538646 82..00+00442328 83..00+00000974 71....+00000001 32..10+00069423 
+110101+00000101 21.322+15869780 22.322+09833350 31..00+00067026 51..1.+0000+000 87..10+00001800 81..00+00540484 82..00+00446611 83..00+00001495 71....+00000001 32..10+00067003 
+110102+00000102 21.322+15843100 22.322+09863310 31..00+00057270 51..1.+0000+000 87..10+00001300 81..00+00534786 82..00+00454522 83..00+00001470 71....+00000001 32..10+00057257 
+110103+00000103 21.322+15805140 22.322+09838420 31..00+00050474 51..1.+0000+000 87..10+00001800 81..00+00530894 82..00+00460106 83..00+00001021 71....+00000001 32..10+00050458 
+110104+00000104 21.322+15842430 22.322+09919180 31..00+00045533 51..1.+0000+000 87..10+00001800 81..00+00527665 82..00+00463839 83..00+00000318 71....+00000001 32..10+00045530 
+110105+00000105 21.322+15776110 22.322+09972340 31..00+00041498 51..1.+0000+000 87..10+00001800 81..00+00525557 82..00+00467306 83..00-00000080 71....+00000001 32..10+00041498 
+110106+00000106 21.322+15462150 22.322+09966800 31..00+00037136 51..1.+0000+000 87..10+00001800 81..00+00524285 82..00+00471906 83..00-00000066 71....+00000001 32..10+00037136 
+110107+00000107 21.322+15235420 22.322+09949240 31..00+00032705 51..1.+0000+000 87..10+00001800 81..00+00522255 82..00+00476035 83..00+00000001 71....+00000001 32..10+00032704 
+110108+00000108 21.322+14863460 22.322+09992820 31..00+00028418 51..1.+0000+000 87..10+00001800 81..00+00520521 82..00+00480341 83..00-00000228 71....+00000001 32..10+00028418 
+110109+00000109 21.322+14426120 22.322+09986540 31..00+00024089 51..1.+0000+000 87..10+00001800 81..00+00518497 82..00+00484569 83..00-00000209 71....+00000001 32..10+00024089 
+110110+00000110 21.322+13585250 22.322+09938800 31..00+00020284 51..1.+0000+000 87..10+00001800 81..00+00517151 82..00+00489171 83..00-00000065 71....+00000001 32..10+00020283 
+110111+00000111 21.322+12465610 22.322+09901070 31..00+00016152 51..1.+0000+000 87..10+00001800 81..00+00514954 82..00+00493900 83..00-00000009 71....+00000001 32..10+00016150 
+110112+00000112 21.322+10964870 22.322+09760890 31..00+00013729 51..1.+0000+000 87..10+00001800 81..00+00513562 82..00+00497929 83..00+00000256 71....+00000001 32..10+00013720 
+110113+00000113 21.322+08777430 22.322+09619770 31..00+00011964 51..1.+0000+000 87..10+00001800 81..00+00511723 82..00+00502279 83..00+00000454 71....+00000001 32..10+00011942 
+110114+00000114 21.322+06734110 22.322+09454150 31..00+00013836 51..1.+0000+000 87..10+00001800 81..00+00512010 82..00+00506766 83..00+00000925 71....+00000001 32..10+00013785 
+110115+00000115 21.322+05892570 22.322+09371220 31..00+00017254 51..1.+0000+000 87..10+00001800 81..00+00513719 82..00+00510325 83..00+00001441 71....+00000001 32..10+00017170 
+110116+00000116 21.322+05668590 22.322+09235970 31..00+00021048 51..1.+0000+000 87..10+00001800 81..00+00516244 82..00+00513146 83..00+00002260 71....+00000001 32..10+00020897 
+110117+00000117 21.322+05751660 22.322+09124330 31..00+00025788 51..1.+0000+000 87..10+00001800 81..00+00520065 82..00+00515809 83..00+00003276 71....+00000001 32..10+00025545 
+110118+00000118 21.322+05429370 22.322+09186040 31..00+00030303 51..1.+0000+000 87..10+00001800 81..00+00522637 82..00+00519772 83..00+00003604 71....+00000001 32..10+00030056 
+110119+00000119 21.322+04605860 22.322+09221790 31..00+00032707 51..1.+0000+000 87..10+00001800 81..00+00521491 82..00+00524331 83..00+00003728 71....+00000001 32..10+00032463 
+110120+00000120 21.322+03798260 22.322+09246930 31..00+00033408 51..1.+0000+000 87..10+00001800 81..00+00518639 82..00+00527443 83..00+00003683 71....+00000001 32..10+00033174 
+110121+00000121 21.322+02513190 22.322+09344850 31..00+00030160 51..1.+0000+000 87..10+00001800 81..00+00511538 82..00+00527693 83..00+00002838 71....+00000001 32..10+00030001 
+110122+00000122 21.322+16755920 22.322+10070270 31..00+00047844 51..1.+0000+000 87..10+00001300 81..00+00523337 82..00+00458237 83..00-00000288 71....+00000099 32..10+00047841 
+110123+00000123 21.322+16905020 22.322+10084450 31..00+00047423 51..1.+0000+000 87..10+00001300 81..00+00522155 82..00+00458076 83..00-00000389 71....+00000099 32..10+00047418 
+110124+00000124 21.322+17062010 22.322+10101570 31..00+00047007 51..1.+0000+000 87..10+00001300 81..00+00520929 82..00+00457916 83..00-00000510 71....+00000099 32..10+00047001 
+110125+00000125 21.322+17220340 22.322+10122390 31..00+00046649 51..1.+0000+000 87..10+00001300 81..00+00519723 82..00+00457736 83..00-00000657 71....+00000099 32..10+00046640 
+110126+00000126 21.322+17434070 22.322+10152630 31..00+00046206 51..1.+0000+000 87..10+00001300 81..00+00518118 82..00+00457508 83..00-00000868 71....+00000099 32..10+00046193 
+110127+00000127 21.322+17633340 22.322+10114690 31..00+00045863 51..1.+0000+000 87..10+00001850 81..00+00516657 82..00+00457276 83..00-00001136 71....+00000099 32..10+00045856 
+110128+00000128 21.322+17799420 22.322+10117520 31..00+00045605 51..1.+0000+000 87..10+00001850 81..00+00515450 82..00+00457099 83..00-00001152 71....+00000099 32..10+00045598 
+110129+00000129 21.322+17927050 22.322+10116040 31..00+00045412 51..1.+0000+000 87..10+00001850 81..00+00514525 82..00+00456981 83..00-00001138 71....+00000099 32..10+00045405 
+110130+00000130 21.322+18105120 22.322+10129470 31..00+00045239 51..1.+0000+000 87..10+00001850 81..00+00513264 82..00+00456759 83..00-00001230 71....+00000099 32..10+00045229 
+110131+00000131 21.322+18263220 22.322+10106340 31..00+00045084 51..1.+0000+000 87..10+00001850 81..00+00512146 82..00+00456589 83..00-00001063 71....+00000099 32..10+00045078 
+110132+00000132 21.322+18415800 22.322+10075390 31..00+00000000 51..1.+0000+000 87..10+00001850 81..00+00000000 82..00+00000000 83..00+00000000 71....+00000099 32..10+00000000 
+110133+00000133 21.322+18416020 22.322+10075160 31..00+00044938 51..1.+0000+000 87..10+00001850 81..00+00511065 82..00+00456448 83..00-00000840 71....+00000099 32..10+00044935 
+110134+00000134 21.322+18564400 22.322+10067800 31..00+00044813 51..1.+0000+000 87..10+00001850 81..00+00510020 82..00+00456324 83..00-00000787 71....+00000099 32..10+00044810 
+110135+00000135 21.322+18638890 22.322+10064450 31..00+00044786 51..1.+0000+000 87..10+00001850 81..00+00509502 82..00+00456236 83..00-00000763 71....+00000099 32..10+00044783 
+110136+00000136 21.322+18652500 22.322+10059230 31..00+00045999 51..1.+0000+000 87..10+00001850 81..00+00509664 82..00+00455029 83..00-00000738 71....+00000099 32..10+00045998 
+110137+00000137 21.322+18663950 22.322+10056380 31..00+00047144 51..1.+0000+000 87..10+00001850 81..00+00509821 82..00+00453892 83..00-00000727 71....+00000099 32..10+00047142 
+110138+00000138 21.322+18673320 22.322+10056940 31..00+00048313 51..1.+0000+000 87..10+00001850 81..00+00509995 82..00+00452734 83..00-00000742 71....+00000099 32..10+00048312 
+110139+00000139 21.322+18675450 22.322+10053570 31..00+00049105 51..1.+0000+000 87..10+00001850 81..00+00510143 82..00+00451956 83..00-00000723 71....+00000099 32..10+00049103 
+110140+00000140 21.322+18683360 22.322+10053210 31..00+00049821 51..1.+0000+000 87..10+00001850 81..00+00510230 82..00+00451243 83..00-00000726 71....+00000099 32..10+00049819 
+110141+00000141 21.322+18552370 22.322+10056600 31..00+00049889 51..1.+0000+000 87..10+00001850 81..00+00511246 82..00+00451397 83..00-00000753 71....+00000099 32..10+00049887 
+110142+00000142 21.322+18401400 22.322+10059390 31..00+00050013 51..1.+0000+000 87..10+00001850 81..00+00512427 82..00+00451558 83..00-00000776 71....+00000099 32..10+00050011 
+110143+00000143 21.322+18259720 22.322+10106760 31..00+00050178 51..1.+0000+000 87..10+00001550 81..00+00513545 82..00+00451691 83..00-00000851 71....+00000099 32..10+00050171 
+110144+00000144 21.322+18142240 22.322+10118140 31..00+00050157 51..1.+0000+000 87..10+00001550 81..00+00514427 82..00+00451971 83..00-00000941 71....+00000099 32..10+00050149 
+110145+00000145 21.322+18045420 22.322+10131320 31..00+00050353 51..1.+0000+000 87..10+00001550 81..00+00515215 82..00+00452012 83..00-00001048 71....+00000099 32..10+00050342 
+110146+00000146 21.322+18016560 22.322+10113660 31..00+00049513 51..1.+0000+000 87..10+00001550 81..00+00515175 82..00+00452878 83..00-00000894 71....+00000099 32..10+00049505 
+110147+00000147 21.322+18006310 22.322+10106410 31..00+00048641 51..1.+0000+000 87..10+00001550 81..00+00514983 82..00+00453731 83..00-00000823 71....+00000099 32..10+00048634 
+110148+00000148 21.322+17981530 22.322+10111510 31..00+00047895 51..1.+0000+000 87..10+00001550 81..00+00514930 82..00+00454499 83..00-00000849 71....+00000099 32..10+00047888 
+110149+00000149 21.322+17975570 22.322+10125380 31..00+00047358 51..1.+0000+000 87..10+00001550 81..00+00514804 82..00+00455025 83..00-00000942 71....+00000099 32..10+00047348 
+110150+00000150 21.322+17872230 22.322+10206500 31..00+00047493 51..1.+0000+000 87..10+00001550 81..00+00515571 82..00+00455159 83..00-00001550 71....+00000099 32..10+00047468 
+110151+00000151 21.322+17788170 22.322+10231620 31..00+00047578 51..1.+0000+000 87..10+00001550 81..00+00516189 82..00+00455294 83..00-00001740 71....+00000099 32..10+00047547 
+110152+00000152 21.322+17698090 22.322+10191110 31..00+00047709 51..1.+0000+000 87..10+00001550 81..00+00516870 82..00+00455397 83..00-00001442 71....+00000099 32..10+00047687 
+110153+00000153 21.322+17579590 22.322+10145530 31..00+00047865 51..1.+0000+000 87..10+00001550 81..00+00517758 82..00+00455565 83..00-00001104 71....+00000099 32..10+00047852 
+110154+00000154 21.322+17457010 22.322+10114730 31..00+00048071 51..1.+0000+000 87..10+00001550 81..00+00518692 82..00+00455721 83..00-00000876 71....+00000099 32..10+00048063 
+110155+00000155 21.322+17326380 22.322+10093310 31..00+00048333 51..1.+0000+000 87..10+00001550 81..00+00519705 82..00+00455872 83..00-00000718 71....+00000099 32..10+00048328 
+110156+00000156 21.322+17210530 22.322+10071950 31..00+00048561 51..1.+0000+000 87..10+00001550 81..00+00520602 82..00+00456029 83..00-00000559 71....+00000099 32..10+00048558 
+110157+00000157 21.322+17097820 22.322+10056120 31..00+00048852 51..1.+0000+000 87..10+00001550 81..00+00521506 82..00+00456139 83..00-00000440 71....+00000099 32..10+00048850 
+110158+00000158 21.322+16925380 22.322+10032190 31..00+00049335 51..1.+0000+000 87..10+00001550 81..00+00522911 82..00+00456308 83..00-00000259 71....+00000099 32..10+00049335 
+110159+00000159 21.322+16830930 22.322+10025670 31..00+00049515 51..1.+0000+000 87..10+00001550 81..00+00523643 82..00+00456495 83..00-00000209 71....+00000099 32..10+00049515 
+110160+00000160 21.322+16787860 22.322+10030090 31..00+00048619 51..1.+0000+000 87..10+00001550 81..00+00523503 82..00+00457440 83..00-00000240 71....+00000099 32..10+00048619 
+110161+00000161 21.322+16641770 22.322+09997350 31..00+00048856 51..1.+0000+000 87..10+00001550 81..00+00524593 82..00+00457785 83..00+00000010 71....+00000098 32..10+00048856 
+110162+00000162 21.322+17076440 22.322+10072800 31..00+00049494 51..1.+0000+000 87..10+00001300 81..00+00521937 82..00+00455637 83..00-00000326 71....+00000098 32..10+00049491 
+110163+00000163 21.322+19356910 22.322+10103760 31..00+00049956 51..1.+0000+000 87..10+00001300 81..00+00505037 82..00+00450306 83..00-00000574 71....+00000098 32..10+00049949 
+110164+00000164 21.322+15561340 22.322+10037400 31..00+00036708 51..1.+0000+000 87..10+00001300 81..00+00523569 82..00+00471859 83..00+00000024 71....+00000098 32..10+00036707 
+110165+00000165 21.322+17639460 22.322+10058670 31..00+00043380 51..1.+0000+000 87..10+00001210 81..00+00515718 82..00+00459570 83..00-00000070 71....+00000040 32..10+00043378 
+110166+00000166 21.322+18097660 22.322+10035640 31..00+00041797 51..1.+0000+000 87..10+00001210 81..00+00512304 82..00+00460056 83..00+00000096 71....+00000040 32..10+00041796 
+110167+00000167 21.322+18556110 22.322+10035050 31..00+00039118 51..1.+0000+000 87..10+00001210 81..00+00508796 82..00+00461884 83..00+00000115 71....+00000040 32..10+00039117 
+110168+00000168 21.322+18888020 22.322+10020510 31..00+00035423 51..1.+0000+000 87..10+00001210 81..00+00506156 82..00+00465116 83..00+00000216 71....+00000040 32..10+00035423 
+110169+00000169 21.322+19360740 22.322+10017060 31..00+00033382 51..1.+0000+000 87..10+00001210 81..00+00503346 82..00+00466786 83..00+00000241 71....+00000040 32..10+00033382 
+110170+00000170 21.322+20027800 22.322+10006110 31..00+00032963 51..1.+0000+000 87..10+00001210 81..00+00499856 82..00+00467037 83..00+00000298 71....+00000040 32..10+00032963 
+110171+00000171 21.322+17585970 22.322+10048180 31..00+00044259 51..1.+0000+000 87..10+00002100 81..00+00516383 82..00+00458886 83..00-00000895 71....+00000044 32..10+00044258 
+110172+00000172 21.322+17904620 22.322+10043940 31..00+00042348 51..1.+0000+000 87..10+00002100 81..00+00513688 82..00+00459926 83..00-00000852 71....+00000044 32..10+00042347 
+110173+00000173 21.322+18232590 22.322+10050120 31..00+00041497 51..1.+0000+000 87..10+00002100 81..00+00511373 82..00+00460093 83..00-00000887 71....+00000044 32..10+00041496 
+110174+00000174 21.322+18525660 22.322+10030960 31..00+00039515 51..1.+0000+000 87..10+00002100 81..00+00509069 82..00+00461541 83..00-00000752 71....+00000044 32..10+00039514 
+110175+00000175 21.322+18691620 22.322+10019600 31..00+00037322 51..1.+0000+000 87..10+00002100 81..00+00507617 82..00+00463464 83..00-00000675 71....+00000044 32..10+00037322 
+110176+00000176 21.322+18924210 22.322+10017690 31..00+00035174 51..1.+0000+000 87..10+00002100 81..00+00505916 82..00+00465327 83..00-00000658 71....+00000044 32..10+00035174 
+110177+00000177 21.322+19355780 22.322+10018670 31..00+00033435 51..1.+0000+000 87..10+00002100 81..00+00503378 82..00+00466736 83..00-00000658 71....+00000044 32..10+00033435 
+110178+00000178 21.322+19979610 22.322+10004830 31..00+00032982 51..1.+0000+000 87..10+00002100 81..00+00500106 82..00+00467019 83..00-00000585 71....+00000044 32..10+00032982 
+110179+00000179 21.322+20472900 22.322+09988540 31..00+00030603 51..1.+0000+000 87..10+00002100 81..00+00497729 82..00+00469482 83..00-00000505 71....+00000044 32..10+00030603 
+110180+00000180 21.322+21037380 22.322+09975270 31..00+00028576 51..1.+0000+000 87..10+00002100 81..00+00495364 82..00+00471803 83..00-00000449 71....+00000044 32..10+00028575 
+110181+00000181 21.322+21514960 22.322+09953690 31..00+00026034 51..1.+0000+000 87..10+00002100 81..00+00493863 82..00+00474700 83..00-00000371 71....+00000044 32..10+00026033 
+110182+00000182 21.322+22665520 22.322+09934390 31..00+00023772 51..1.+0000+000 87..10+00002100 81..00+00490336 82..00+00478283 83..00-00000315 71....+00000044 32..10+00023771 
+110183+00000183 21.322+23148740 22.322+09916650 31..00+00020447 51..1.+0000+000 87..10+00002100 81..00+00490295 82..00+00482005 83..00-00000292 71....+00000044 32..10+00020446 
+110184+00000184 21.322+23635570 22.322+09883040 31..00+00017039 51..1.+0000+000 87..10+00002100 81..00+00490791 82..00+00485667 83..00-00000247 71....+00000044 32..10+00017036 
+110185+00000185 21.322+24731010 22.322+09848950 31..00+00014245 51..1.+0000+000 87..10+00002100 81..00+00490364 82..00+00489514 83..00-00000222 71....+00000044 32..10+00014241 
+110186+00000186 21.322+26696700 22.322+09823080 31..00+00013906 51..1.+0000+000 87..10+00002100 81..00+00487929 82..00+00493107 83..00-00000174 71....+00000044 32..10+00013900 
+110187+00000187 21.322+28556120 22.322+09856670 31..00+00015964 51..1.+0000+000 87..10+00002100 81..00+00484449 82..00+00496411 83..00-00000201 71....+00000044 32..10+00015960 
+110188+00000188 21.322+30154110 22.322+09827980 31..00+00016582 51..1.+0000+000 87..10+00002100 81..00+00483429 82..00+00500401 83..00-00000112 71....+00000044 32..10+00016576 
+110189+00000189 21.322+31732130 22.322+09780200 31..00+00017210 51..1.+0000+000 87..10+00002100 81..00+00483433 82..00+00504622 83..00+00000034 71....+00000044 32..10+00017200 
+110190+00000190 21.322+32515540 22.322+09755790 31..00+00020235 51..1.+0000+000 87..10+00002100 81..00+00481338 82..00+00507783 83..00+00000216 71....+00000044 32..10+00020220 
+110191+00000191 21.322+31950730 22.322+09761370 31..00+00023257 51..1.+0000+000 87..10+00002100 81..00+00477842 82..00+00507010 83..00+00000312 71....+00000044 32..10+00023240 
+110192+00000192 21.322+31325260 22.322+09786670 31..00+00024581 51..1.+0000+000 87..10+00002100 81..00+00475964 82..00+00505077 83..00+00000264 71....+00000044 32..10+00024567 
+110193+00000193 21.322+30989920 22.322+09755690 31..00+00028625 51..1.+0000+000 87..10+00002100 81..00+00471742 82..00+00504430 83..00+00000538 71....+00000044 32..10+00028603 
+110194+00000194 21.322+30484590 22.322+09751600 31..00+00030683 51..1.+0000+000 87..10+00002100 81..00+00469429 82..00+00502332 83..00+00000637 71....+00000044 32..10+00030660 
+110195+00000195 21.322+30413790 22.322+09763800 31..00+00033961 51..1.+0000+000 87..10+00002100 81..00+00466134 82..00+00502204 83..00+00000700 71....+00000044 32..10+00033938 
+110196+00000196 21.322+29866880 22.322+09791560 31..00+00033649 51..1.+0000+000 87..10+00002100 81..00+00466377 82..00+00499297 83..00+00000542 71....+00000044 32..10+00033631 
+110197+00000197 21.322+29322660 22.322+09825020 31..00+00033774 51..1.+0000+000 87..10+00002100 81..00+00466430 82..00+00496415 83..00+00000368 71....+00000044 32..10+00033761 
+110198+00000198 21.322+28559700 22.322+09864720 31..00+00030411 51..1.+0000+000 87..10+00002100 81..00+00470371 82..00+00493180 83..00+00000086 71....+00000044 32..10+00030404 
+110199+00000199 21.322+27974410 22.322+09897050 31..00+00027530 51..1.+0000+000 87..10+00002100 81..00+00473855 82..00+00491389 83..00-00000115 71....+00000044 32..10+00027527 
+110200+00000200 21.322+27442200 22.322+09888120 31..00+00029506 51..1.+0000+000 87..10+00002100 81..00+00472848 82..00+00488463 83..00-00000041 71....+00000044 32..10+00029502 
+110201+00000201 21.322+27801780 22.322+09845100 31..00+00033509 51..1.+0000+000 87..10+00002100 81..00+00468479 82..00+00488662 83..00+00000255 71....+00000044 32..10+00033499 
+110202+00000202 21.322+28434550 22.322+09827470 31..00+00035252 51..1.+0000+000 87..10+00002100 81..00+00465821 82..00+00491422 83..00+00000395 71....+00000044 32..10+00035239 
+110203+00000203 21.322+28209080 22.322+09835130 31..00+00039576 51..1.+0000+000 87..10+00002100 81..00+00461993 82..00+00489017 83..00+00000465 71....+00000044 32..10+00039563 
+110204+00000204 21.322+28402490 22.322+09806620 31..00+00043654 51..1.+0000+000 87..10+00002100 81..00+00457732 82..00+00489165 83..00+00000766 71....+00000044 32..10+00043634 
+110205+00000205 21.322+27943200 22.322+09782810 31..00+00047194 51..1.+0000+000 87..10+00002100 81..00+00455274 82..00+00485025 83..00+00001050 71....+00000044 32..10+00047167 
+110206+00000206 21.322+27515960 22.322+09778740 31..00+00050851 51..1.+0000+000 87..10+00002100 81..00+00453000 82..00+00480670 83..00+00001207 71....+00000044 32..10+00050820 
+110207+00000207 21.322+27129170 22.322+09799900 31..00+00049656 51..1.+0000+000 87..10+00002100 81..00+00455330 82..00+00478369 83..00+00001001 71....+00000044 32..10+00049632 
+110208+00000208 21.322+26857330 22.322+09771870 31..00+00052333 51..1.+0000+000 87..10+00002100 81..00+00453944 82..00+00475218 83..00+00001315 71....+00000044 32..10+00052300 
+110209+00000209 21.322+26672300 22.322+09770760 31..00+00056408 51..1.+0000+000 87..10+00002100 81..00+00451156 82..00+00471857 83..00+00001471 71....+00000044 32..10+00056372 
+110210+00000210 21.322+26226950 22.322+09798290 31..00+00055394 51..1.+0000+000 87..10+00002100 81..00+00454077 82..00+00469074 83..00+00001195 71....+00000044 32..10+00055366 
+110211+00000211 21.322+25940640 22.322+09797940 31..00+00057719 51..1.+0000+000 87..10+00002100 81..00+00453646 82..00+00465657 83..00+00001272 71....+00000044 32..10+00057690 
+110212+00000212 21.322+25641250 22.322+09810640 31..00+00055523 51..1.+0000+000 87..10+00002100 81..00+00457009 82..00+00464902 83..00+00001091 71....+00000044 32..10+00055499 
+110213+00000213 21.322+25582330 22.322+09791970 31..00+00059041 51..1.+0000+000 87..10+00002100 81..00+00454637 82..00+00462260 83..00+00001369 71....+00000044 32..10+00059009 
+110214+00000214 21.322+25166660 22.322+09800310 31..00+00058528 51..1.+0000+000 87..10+00002100 81..00+00457566 82..00+00459732 83..00+00001276 71....+00000044 32..10+00058499 
+110215+00000215 21.322+25420960 22.322+09821250 31..00+00054153 51..1.+0000+000 87..10+00002100 81..00+00459277 82..00+00464336 83..00+00000961 71....+00000044 32..10+00054132 
+110216+00000216 21.322+25796180 22.322+09813500 31..00+00051156 51..1.+0000+000 87..10+00002100 81..00+00459615 82..00+00468636 83..00+00000939 71....+00000044 32..10+00051134 
+110217+00000217 21.322+25980310 22.322+09830250 31..00+00047244 51..1.+0000+000 87..10+00002100 81..00+00461878 82..00+00472122 83..00+00000700 71....+00000044 32..10+00047228 
+110218+00000218 21.322+25816790 22.322+09862520 31..00+00044492 51..1.+0000+000 87..10+00002100 81..00+00464781 82..00+00472830 83..00+00000401 71....+00000044 32..10+00044481 
+110219+00000219 21.322+25403470 22.322+09853800 31..00+00045072 51..1.+0000+000 87..10+00002100 81..00+00466183 82..00+00470219 83..00+00000475 71....+00000044 32..10+00045061 
+110220+00000220 21.322+25266700 22.322+09857880 31..00+00047223 51..1.+0000+000 87..10+00002100 81..00+00465248 82..00+00468044 83..00+00000494 71....+00000044 32..10+00047211 
+110221+00000221 21.322+25198090 22.322+09859350 31..00+00043930 51..1.+0000+000 87..10+00002100 81..00+00467993 82..00+00469925 83..00+00000411 71....+00000044 32..10+00043920 
+110222+00000222 21.322+24772930 22.322+09867870 31..00+00042797 51..1.+0000+000 87..10+00002100 81..00+00470842 82..00+00468685 83..00+00000328 71....+00000044 32..10+00042788 
+110223+00000223 21.322+24431380 22.322+09872340 31..00+00044540 51..1.+0000+000 87..10+00002100 81..00+00471446 82..00+00465829 83..00+00000333 71....+00000044 32..10+00044531 
+110224+00000224 21.322+24093070 22.322+09901970 31..00+00041255 51..1.+0000+000 87..10+00002100 81..00+00475268 82..00+00466986 83..00+00000075 71....+00000044 32..10+00041250 
+110225+00000225 21.322+23914860 22.322+09885450 31..00+00044509 51..1.+0000+000 87..10+00002100 81..00+00474326 82..00+00463651 83..00+00000241 71....+00000044 32..10+00044502 
+110226+00000226 21.322+23080920 22.322+09911210 31..00+00042020 51..1.+0000+000 87..10+00002100 81..00+00480451 82..00+00462809 83..00+00000026 71....+00000044 32..10+00042016 
+110227+00000227 21.322+22786100 22.322+09923310 31..00+00039475 51..1.+0000+000 87..10+00002100 81..00+00483272 82..00+00464248 83..00-00000084 71....+00000044 32..10+00039472 
+110228+00000228 21.322+23235340 22.322+09925420 31..00+00036872 51..1.+0000+000 87..10+00002100 81..00+00482059 82..00+00467790 83..00-00000128 71....+00000044 32..10+00036870 
+110229+00000229 21.322+23289470 22.322+09937630 31..00+00033461 51..1.+0000+000 87..10+00002100 81..00+00483471 82..00+00470909 83..00-00000232 71....+00000044 32..10+00033459 
+110230+00000230 21.322+22712990 22.322+09960370 31..00+00030781 51..1.+0000+000 87..10+00002100 81..00+00487276 82..00+00471972 83..00-00000368 71....+00000044 32..10+00030781 
+110231+00000231 21.322+22205560 22.322+09952850 31..00+00030664 51..1.+0000+000 87..10+00002100 81..00+00489588 82..00+00471158 83..00-00000333 71....+00000044 32..10+00030664 
+110232+00000232 21.322+21771860 22.322+09962270 31..00+00030963 51..1.+0000+000 87..10+00002100 81..00+00491493 82..00+00470229 83..00-00000376 71....+00000044 32..10+00030962 
+110233+00000233 21.322+21372300 22.322+09978370 31..00+00031440 51..1.+0000+000 87..10+00002100 81..00+00493275 82..00+00469288 83..00-00000453 71....+00000044 32..10+00031440 
+110234+00000234 21.322+21076880 22.322+09986010 31..00+00032695 51..1.+0000+000 87..10+00002100 81..00+00494496 82..00+00467772 83..00-00000488 71....+00000044 32..10+00032695 
+110235+00000235 21.322+20778470 22.322+09994220 31..00+00033703 51..1.+0000+000 87..10+00002100 81..00+00495889 82..00+00466548 83..00-00000529 71....+00000044 32..10+00033703 
+110236+00000236 21.322+20553420 22.322+09999230 31..00+00034896 51..1.+0000+000 87..10+00002100 81..00+00496970 82..00+00465235 83..00-00000556 71....+00000044 32..10+00034896 
+110237+00000237 21.322+20267460 22.322+10006820 31..00+00035826 51..1.+0000+000 87..10+00002100 81..00+00498495 82..00+00464206 83..00-00000598 71....+00000044 32..10+00035826 
+110238+00000238 21.322+19967060 22.322+10009030 31..00+00036545 51..1.+0000+000 87..10+00002100 81..00+00500189 82..00+00463456 83..00-00000612 71....+00000044 32..10+00036545 
+110239+00000239 21.322+19655610 22.322+10015870 31..00+00036734 51..1.+0000+000 87..10+00002100 81..00+00501986 82..00+00463320 83..00-00000651 71....+00000044 32..10+00036733 
+110240+00000240 21.322+19422680 22.322+10012860 31..00+00037468 51..1.+0000+000 87..10+00002100 81..00+00503393 82..00+00462686 83..00-00000636 71....+00000044 32..10+00037468 
+110241+00000241 21.322+19298970 22.322+10028100 31..00+00038432 51..1.+0000+000 87..10+00002100 81..00+00504223 82..00+00461802 83..00-00000730 71....+00000044 32..10+00038431 
+110242+00000242 21.322+19168910 22.322+10040190 31..00+00039742 51..1.+0000+000 87..10+00002100 81..00+00505173 82..00+00460597 83..00-00000811 71....+00000044 32..10+00039742 
+110243+00000243 21.322+19019380 22.322+10032630 31..00+00041194 51..1.+0000+000 87..10+00002100 81..00+00506320 82..00+00459294 83..00-00000771 71....+00000044 32..10+00041194 
+110244+00000244 21.322+19040890 22.322+10033690 31..00+00042581 51..1.+0000+000 87..10+00002100 81..00+00506391 82..00+00457902 83..00-00000785 71....+00000044 32..10+00042581 
+110245+00000245 21.322+18940270 22.322+10033740 31..00+00042977 51..1.+0000+000 87..10+00002100 81..00+00507121 82..00+00457618 83..00-00000788 71....+00000044 32..10+00042976 
+110246+00000246 21.322+18747130 22.322+10033800 31..00+00043331 51..1.+0000+000 87..10+00002100 81..00+00508473 82..00+00457506 83..00-00000790 71....+00000044 32..10+00043331 
+110247+00000247 21.322+18559180 22.322+10049460 31..00+00043686 51..1.+0000+000 87..10+00002100 81..00+00509803 82..00+00457429 83..00-00000899 71....+00000044 32..10+00043685 
+110248+00000248 21.322+18366160 22.322+10056090 31..00+00044176 51..1.+0000+000 87..10+00002100 81..00+00511213 82..00+00457273 83..00-00000949 71....+00000044 32..10+00044174 
+110249+00000249 21.322+18401920 22.322+10054170 31..00+00044918 51..1.+0000+000 87..10+00002100 81..00+00511157 82..00+00456492 83..00-00000942 71....+00000044 32..10+00044916 
+110250+00000250 21.322+24817960 22.322+10025990 31..00+00015841 51..1.+0000+000 87..10+00001800 81..00+00489124 82..00+00488483 83..00-00000325 71....+00000045 32..10+00015841 
+110251+00000251 21.322+25430860 22.322+10007520 31..00+00015800 51..1.+0000+000 87..10+00001800 81..00+00488097 82..00+00489609 83..00-00000279 71....+00000045 32..10+00015800 
+110252+00000252 21.322+26050920 22.322+09999870 31..00+00015547 51..1.+0000+000 87..10+00001800 81..00+00487349 82..00+00490962 83..00-00000260 71....+00000045 32..10+00015547 
+110253+00000253 21.322+26435740 22.322+10015560 31..00+00015340 51..1.+0000+000 87..10+00001800 81..00+00487002 82..00+00491853 83..00-00000297 71....+00000045 32..10+00015340 
+110254+00000254 21.322+27029190 22.322+10015630 31..00+00015437 51..1.+0000+000 87..10+00001800 81..00+00486214 82..00+00493055 83..00-00000298 71....+00000045 32..10+00015437 
+110255+00000255 21.322+27401890 22.322+10026440 31..00+00016166 51..1.+0000+000 87..10+00001800 81..00+00485161 82..00+00493584 83..00-00000327 71....+00000045 32..10+00016166 
+110256+00000256 21.322+27446050 22.322+10016040 31..00+00017130 51..1.+0000+000 87..10+00001800 81..00+00484230 82..00+00493311 83..00-00000303 71....+00000045 32..10+00017130 
+110257+00000257 21.322+27649480 22.322+09964410 31..00+00018173 51..1.+0000+000 87..10+00001800 81..00+00483052 82..00+00493442 83..00-00000158 71....+00000045 32..10+00018173 
+110258+00000258 21.322+28050610 22.322+09982040 31..00+00019399 51..1.+0000+000 87..10+00001800 81..00+00481503 82..00+00494152 83..00-00000205 71....+00000045 32..10+00019399 
+110259+00000259 21.322+28305470 22.322+09973890 31..00+00020180 51..1.+0000+000 87..10+00001800 81..00+00480531 82..00+00494692 83..00-00000177 71....+00000045 32..10+00020180 
+110260+00000260 21.322+28590520 22.322+09990280 31..00+00020669 51..1.+0000+000 87..10+00001800 81..00+00479836 82..00+00495461 83..00-00000228 71....+00000045 32..10+00020669 
+110261+00000261 21.322+28428310 22.322+10001150 31..00+00021939 51..1.+0000+000 87..10+00001800 81..00+00478726 82..00+00494639 83..00-00000264 71....+00000045 32..10+00021939 
+110262+00000262 21.322+28286530 22.322+09987910 31..00+00023292 51..1.+0000+000 87..10+00001800 81..00+00477546 82..00+00493806 83..00-00000216 71....+00000045 32..10+00023292 
+110263+00000263 21.322+27860760 22.322+09975770 31..00+00023528 51..1.+0000+000 87..10+00001800 81..00+00477788 82..00+00492242 83..00-00000170 71....+00000045 32..10+00023528 
+110264+00000264 21.322+27495720 22.322+09978500 31..00+00025312 51..1.+0000+000 87..10+00001800 81..00+00476622 82..00+00490298 83..00-00000174 71....+00000045 32..10+00025312 
+110265+00000265 21.322+27508080 22.322+09963400 31..00+00027313 51..1.+0000+000 87..10+00001800 81..00+00474753 82..00+00489580 83..00-00000103 71....+00000045 32..10+00027313 
+110266+00000266 21.322+27386000 22.322+09946370 31..00+00029356 51..1.+0000+000 87..10+00001800 81..00+00473085 82..00+00488282 83..00-00000013 71....+00000045 32..10+00029355 
+110267+00000267 21.322+27439710 22.322+09926630 31..00+00031092 51..1.+0000+000 87..10+00001800 81..00+00471391 82..00+00487831 83..00+00000098 71....+00000045 32..10+00031090 
+110268+00000268 21.322+26938620 22.322+09937010 31..00+00030693 51..1.+0000+000 87..10+00001800 81..00+00472789 82..00+00485803 83..00+00000044 71....+00000045 32..10+00030692 
+110269+00000269 21.322+26614020 22.322+09960900 31..00+00029534 51..1.+0000+000 87..10+00001800 81..00+00474547 82..00+00485022 83..00-00000079 71....+00000045 32..10+00029533 
+110270+00000270 21.322+26304490 22.322+09985350 31..00+00028473 51..1.+0000+000 87..10+00001800 81..00+00476191 82..00+00484384 83..00-00000194 71....+00000045 32..10+00028473 
+110271+00000271 21.322+26063390 22.322+09997620 31..00+00028474 51..1.+0000+000 87..10+00001800 81..00+00476799 82..00+00483494 83..00-00000249 71....+00000045 32..10+00028474 
+110272+00000272 21.322+25774960 22.322+10006340 31..00+00028508 51..1.+0000+000 87..10+00001800 81..00+00477543 82..00+00482439 83..00-00000288 71....+00000045 32..10+00028508 
+110273+00000273 21.322+25511000 22.322+09993040 31..00+00028415 51..1.+0000+000 87..10+00001800 81..00+00478361 82..00+00481583 83..00-00000229 71....+00000045 32..10+00028415 
+110274+00000274 21.322+25135430 22.322+10000910 31..00+00027976 51..1.+0000+000 87..10+00001800 81..00+00479802 82..00+00480644 83..00-00000264 71....+00000045 32..10+00027976 
+110275+00000275 21.322+24636040 22.322+10012920 31..00+00028099 51..1.+0000+000 87..10+00001800 81..00+00481299 82..00+00479028 83..00-00000317 71....+00000045 32..10+00028099 
+110276+00000276 21.322+24178460 22.322+09995140 31..00+00027639 51..1.+0000+000 87..10+00001800 81..00+00483134 82..00+00478103 83..00-00000239 71....+00000045 32..10+00027639 
+110277+00000277 21.322+23739980 22.322+10015670 31..00+00027321 51..1.+0000+000 87..10+00001800 81..00+00484857 82..00+00477260 83..00-00000327 71....+00000045 32..10+00027321 
+110278+00000278 21.322+23625560 22.322+10015400 31..00+00026212 51..1.+0000+000 87..10+00001800 81..00+00485866 82..00+00477925 83..00-00000323 71....+00000045 32..10+00026212 
+110279+00000279 21.322+23564390 22.322+10021230 31..00+00024466 51..1.+0000+000 87..10+00001800 81..00+00487006 82..00+00479270 83..00-00000342 71....+00000045 32..10+00024466 
+110280+00000280 21.322+23779390 22.322+09998480 31..00+00022514 51..1.+0000+000 87..10+00001800 81..00+00487405 82..00+00481338 83..00-00000255 71....+00000045 32..10+00022514 
+110281+00000281 21.322+24121310 22.322+09991940 31..00+00020017 51..1.+0000+000 87..10+00001800 81..00+00487928 82..00+00484033 83..00-00000235 71....+00000045 32..10+00020017 
+110282+00000282 21.322+24251760 22.322+09976870 31..00+00018073 51..1.+0000+000 87..10+00001800 81..00+00488807 82..00+00485810 83..00-00000194 71....+00000045 32..10+00018073 
+110283+00000283 21.322+24444350 22.322+10001540 31..00+00016897 51..1.+0000+000 87..10+00001800 81..00+00489139 82..00+00487056 83..00-00000264 71....+00000045 32..10+00016897 
+110284+00000284 21.322+24776900 22.322+10000050 31..00+00015722 51..1.+0000+000 87..10+00001800 81..00+00489279 82..00+00488500 83..00-00000260 71....+00000045 32..10+00015722 
+110285+00000285 21.322+22419920 22.322+09981260 31..00+00039132 51..1.+0000+000 87..10+00001800 81..00+00485481 82..00+00463661 83..00-00000145 71....+00000046 32..10+00039132 
+110286+00000286 21.322+22042080 22.322+09983200 31..00+00039612 51..1.+0000+000 87..10+00001800 81..00+00487511 82..00+00462409 83..00-00000155 71....+00000046 32..10+00039612 
+110287+00000287 21.322+21867100 22.322+09992940 31..00+00039929 51..1.+0000+000 87..10+00001800 81..00+00488457 82..00+00461776 83..00-00000216 71....+00000046 32..10+00039929 
+110288+00000288 21.322+21719720 22.322+09990980 31..00+00041253 51..1.+0000+000 87..10+00001800 81..00+00488991 82..00+00460243 83..00-00000201 71....+00000046 32..10+00041253 
+110289+00000289 21.322+21720040 22.322+09983550 31..00+00042309 51..1.+0000+000 87..10+00001800 81..00+00488707 82..00+00459226 83..00-00000151 71....+00000046 32..10+00042309 
+110290+00000290 21.322+21815050 22.322+09983500 31..00+00043609 51..1.+0000+000 87..10+00001800 81..00+00487734 82..00+00458151 83..00-00000147 71....+00000046 32..10+00043609 
+110291+00000291 21.322+21979940 22.322+09976120 31..00+00044119 51..1.+0000+000 87..10+00001800 81..00+00486499 82..00+00457998 83..00-00000094 71....+00000046 32..10+00044119 
+110292+00000292 21.322+22115390 22.322+09973780 31..00+00044193 51..1.+0000+000 87..10+00001800 81..00+00485584 82..00+00458224 83..00-00000078 71....+00000046 32..10+00044193 
+110293+00000293 21.322+22243810 22.322+09970320 31..00+00044867 51..1.+0000+000 87..10+00001800 81..00+00484512 82..00+00457892 83..00-00000051 71....+00000046 32..10+00044866 
+110294+00000294 21.322+22463490 22.322+09963930 31..00+00044704 51..1.+0000+000 87..10+00001800 81..00+00483130 82..00+00458602 83..00-00000007 71....+00000046 32..10+00044704 
+110295+00000295 21.322+22562450 22.322+09964030 31..00+00043356 51..1.+0000+000 87..10+00001800 81..00+00483017 82..00+00460110 83..00-00000015 71....+00000046 32..10+00043355 
+110296+00000296 21.322+22695870 22.322+09968750 31..00+00042060 51..1.+0000+000 87..10+00001800 81..00+00482717 82..00+00461656 83..00-00000053 71....+00000046 32..10+00042059 
+110297+00000297 21.322+22554000 22.322+09964030 31..00+00041136 51..1.+0000+000 87..10+00001800 81..00+00483936 82..00+00462131 83..00-00000027 71....+00000046 32..10+00041135 
+110298+00000298 21.322+22439600 22.322+09980880 31..00+00040303 51..1.+0000+000 87..10+00001800 81..00+00484931 82..00+00462620 83..00-00000139 71....+00000046 32..10+00040303 
+110299+00000299 21.322+22434420 22.322+09978000 31..00+00039475 51..1.+0000+000 87..10+00001800 81..00+00485270 82..00+00463376 83..00-00000123 71....+00000046 32..10+00039475 
+110300+00000300 21.322+16804990 22.322+09955890 31..00+00073552 51..1.+0000+000 87..10+00001800 81..00+00535383 82..00+00435519 83..00+00000250 71....+00000021 32..10+00073551 
+110301+00000301 21.322+16807910 22.322+09955880 31..00+00073521 51..1.+0000+000 87..10+00001800 81..00+00535338 82..00+00435531 83..00+00000250 71....+00000021 32..10+00073519 
+110302+00000302 21.322+16856170 22.322+09947280 31..00+00071706 51..1.+0000+000 87..10+00001800 81..00+00533988 82..00+00436864 83..00+00000334 71....+00000021 32..10+00071703 
+110303+00000303 21.322+16940780 22.322+09921700 31..00+00067641 51..1.+0000+000 87..10+00001800 81..00+00531265 82..00+00440024 83..00+00000572 71....+00000021 32..10+00067636 
+110304+00000304 21.322+17044170 22.322+09919740 31..00+00063972 51..1.+0000+000 87..10+00001800 81..00+00528644 82..00+00442805 83..00+00000547 71....+00000021 32..10+00063967 
+110305+00000305 21.322+17112880 22.322+09930920 31..00+00059524 51..1.+0000+000 87..10+00001800 81..00+00526077 82..00+00446496 83..00+00000386 71....+00000021 32..10+00059521 
+110306+00000306 21.322+17015860 22.322+09946230 31..00+00055897 51..1.+0000+000 87..10+00001800 81..00+00525252 82..00+00450134 83..00+00000212 71....+00000021 32..10+00055895 
+110307+00000307 21.322+16648330 22.322+09968830 31..00+00050332 51..1.+0000+000 87..10+00001800 81..00+00525291 82..00+00456484 83..00-00000013 71....+00000021 32..10+00050332 
+110308+00000308 21.322+16298740 22.322+09986680 31..00+00045289 51..1.+0000+000 87..10+00001800 81..00+00524872 82..00+00462152 83..00-00000165 71....+00000021 32..10+00045289 
+110309+00000309 21.322+16184370 22.322+10006430 31..00+00042209 51..1.+0000+000 87..10+00001800 81..00+00523811 82..00+00465148 83..00-00000302 71....+00000021 32..10+00042209 
+110310+00000310 21.322+06150940 22.322+09147150 31..00+00023070 51..1.+0000+000 87..10+00001800 81..00+00518810 82..00+00512996 83..00+00002821 71....+00000022 32..10+00022863 
+110311+00000311 21.322+05775360 22.322+09179060 31..00+00022623 51..1.+0000+000 87..10+00001800 81..00+00517674 82..00+00513819 83..00+00002649 71....+00000022 32..10+00022435 
+110312+00000312 21.322+05083400 22.322+09279020 31..00+00022091 51..1.+0000+000 87..10+00001800 81..00+00515723 82..00+00515316 83..00+00002237 71....+00000022 32..10+00021950 
+110313+00000313 21.322+03828560 22.322+09335860 31..00+00022397 51..1.+0000+000 87..10+00001800 81..00+00512603 82..00+00518367 83..00+00002072 71....+00000022 32..10+00022276 
+110314+00000314 21.322+02558470 22.322+09384020 31..00+00022070 51..1.+0000+000 87..10+00001800 81..00+00508592 82..00+00520216 83..00+00001872 71....+00000022 32..10+00021966 
+110315+00000315 21.322+01697300 22.322+09460950 31..00+00022258 51..1.+0000+000 87..10+00001800 81..00+00505843 82..00+00521394 83..00+00001622 71....+00000022 32..10+00022178 
+110316+00000316 21.322+00821490 22.322+09499000 31..00+00021941 51..1.+0000+000 87..10+00001800 81..00+00502815 82..00+00521691 83..00+00001465 71....+00000022 32..10+00021873 
+110317+00000317 21.322+39533010 22.322+09527960 31..00+00021196 51..1.+0000+000 87..10+00001800 81..00+00498451 82..00+00521081 83..00+00001310 71....+00000022 32..10+00021138 
+110318+00000318 21.322+38664590 22.322+09602130 31..00+00020443 51..1.+0000+000 87..10+00001800 81..00+00495751 82..00+00519956 83..00+00001017 71....+00000022 32..10+00020403 
+110319+00000319 21.322+16753130 22.322+10047570 31..00+00038771 51..1.+0000+000 87..10+00001800 81..00+00518927 82..00+00466164 83..00-00000550 71....+00000047 32..10+00038770 
+110320+00000320 21.322+16716110 22.322+10047630 31..00+00035787 51..1.+0000+000 87..10+00001800 81..00+00517652 82..00+00468870 83..00-00000528 71....+00000047 32..10+00035786 
+110321+00000321 21.322+15946520 22.322+10001110 31..00+00036917 51..1.+0000+000 87..10+00001800 81..00+00521950 82..00+00470317 83..00-00000266 71....+00000047 32..10+00036917 
+110322+00000322 21.322+15956350 22.322+09999660 31..00+00041093 51..1.+0000+000 87..10+00001800 81..00+00524381 82..00+00466922 83..00-00000258 71....+00000047 32..10+00041093 
+110323+00000323 21.322+36346340 22.322+09687700 31..00+00021581 51..1.+0000+000 87..10+00001800 81..00+00488297 82..00+00518102 83..00+00000798 71....+00000022 32..10+00021555 
+110324+00000324 21.322+35213890 22.322+09742090 31..00+00023504 51..1.+0000+000 87..10+00001800 81..00+00483961 82..00+00517155 83..00+00000692 71....+00000022 32..10+00023485 
+110325+00000325 21.322+34070590 22.322+09764190 31..00+00025977 51..1.+0000+000 87..10+00001800 81..00+00479169 82..00+00515490 83..00+00000702 71....+00000022 32..10+00025959 
+110326+00000326 21.322+33135310 22.322+09793780 31..00+00028562 51..1.+0000+000 87..10+00001800 81..00+00474846 82..00+00513498 83..00+00000665 71....+00000022 32..10+00028547 
+110327+00000327 21.322+32329480 22.322+09797190 31..00+00030006 51..1.+0000+000 87..10+00001800 81..00+00471995 82..00+00510731 83..00+00000696 71....+00000022 32..10+00029991 
+110328+00000328 21.322+32102850 22.322+09775020 31..00+00030453 51..1.+0000+000 87..10+00001800 81..00+00471212 82..00+00509871 83..00+00000816 71....+00000022 32..10+00030434 
+110329+00000329 21.322+32257800 22.322+09762680 31..00+00031528 51..1.+0000+000 87..10+00001800 81..00+00470455 82..00+00510941 83..00+00000915 71....+00000022 32..10+00031506 
+110330+00000330 21.322+32254140 22.322+09764870 31..00+00031512 51..1.+0000+000 87..10+00001800 81..00+00470463 82..00+00510919 83..00+00000904 71....+00000022 32..10+00031491 
+110331+00000331 21.322+31638810 22.322+09741720 31..00+00031420 51..1.+0000+000 87..10+00001800 81..00+00469640 82..00+00507993 83..00+00001014 71....+00000022 32..10+00031394 
+110332+00000332 21.322+31807980 22.322+09738740 31..00+00032813 51..1.+0000+000 87..10+00001800 81..00+00468528 82..00+00509186 83..00+00001086 71....+00000022 32..10+00032785 
+110333+00000333 21.322+31333100 22.322+09756080 31..00+00034030 51..1.+0000+000 87..10+00001800 81..00+00466738 82..00+00507069 83..00+00001044 71....+00000022 32..10+00034005 
+110334+00000334 21.322+30788630 22.322+09785250 31..00+00036898 51..1.+0000+000 87..10+00001800 81..00+00463406 82..00+00504557 83..00+00000984 71....+00000022 32..10+00036877 
+110335+00000335 21.322+30472670 22.322+09809900 31..00+00040274 51..1.+0000+000 87..10+00001800 81..00+00459855 82..00+00502986 83..00+00000943 71....+00000022 32..10+00040256 
+110336+00000336 21.322+30124540 22.322+09810580 31..00+00043702 51..1.+0000+000 87..10+00001800 81..00+00456325 82..00+00500855 83..00+00001040 71....+00000022 32..10+00043683 
+110337+00000337 21.322+29709290 22.322+09807720 31..00+00047215 51..1.+0000+000 87..10+00001800 81..00+00452855 82..00+00497846 83..00+00001166 71....+00000022 32..10+00047194 
+110338+00000338 21.322+29424170 22.322+09800520 31..00+00049196 51..1.+0000+000 87..10+00001800 81..00+00451029 82..00+00495558 83..00+00001281 71....+00000022 32..10+00049172 
+110339+00000339 21.322+29122300 22.322+09779420 31..00+00051309 51..1.+0000+000 87..10+00001800 81..00+00449209 82..00+00492953 83..00+00001518 71....+00000022 32..10+00051278 
+110340+00000340 21.322+28732500 22.322+09766560 31..00+00053402 51..1.+0000+000 87..10+00001800 81..00+00447688 82..00+00489445 83..00+00001698 71....+00000022 32..10+00053366 
+110341+00000341 21.322+28311940 22.322+09750570 31..00+00055743 51..1.+0000+000 87..10+00001800 81..00+00446246 82..00+00485403 83..00+00001924 71....+00000022 32..10+00055700 
+110342+00000342 21.322+27593710 22.322+09761450 31..00+00059990 51..1.+0000+000 87..10+00001800 81..00+00444283 82..00+00477877 83..00+00001988 71....+00000022 32..10+00059948 
+110343+00000343 21.322+27253210 22.322+09758910 31..00+00063913 51..1.+0000+000 87..10+00001800 81..00+00441986 82..00+00473291 83..00+00002160 71....+00000022 32..10+00063867 
+110344+00000344 21.322+27057440 22.322+09747500 31..00+00068176 51..1.+0000+000 87..10+00001800 81..00+00439026 82..00+00469622 83..00+00002444 71....+00000022 32..10+00068122 
+110345+00000345 21.322+26950760 22.322+09772870 31..00+00073036 51..1.+0000+000 87..10+00001300 81..00+00435224 82..00+00466361 83..00+00002846 71....+00000022 32..10+00072990 
+110346+00000346 21.322+26939220 22.322+09773690 31..00+00072988 51..1.+0000+000 87..10+00001300 81..00+00435328 82..00+00466266 83..00+00002834 71....+00000022 32..10+00072942 
+110347+00000347 21.322+26856290 22.322+09761570 31..00+00077564 51..1.+0000+000 87..10+00001300 81..00+00431750 82..00+00463261 83..00+00003145 71....+00000022 32..10+00077510 
+110348+00000348 21.322+26753430 22.322+09749130 31..00+00081949 51..1.+0000+000 87..10+00001300 81..00+00428534 82..00+00460028 83..00+00003469 71....+00000022 32..10+00081885 
+110349+00000349 21.322+26711690 22.322+09739840 31..00+00084537 51..1.+0000+000 87..10+00001300 81..00+00426553 82..00+00458285 83..00+00003694 71....+00000022 32..10+00084467 
+110350+00000350 21.322+26701230 22.322+09728200 31..00+00085727 51..1.+0000+000 87..10+00001300 81..00+00425595 82..00+00457579 83..00+00003899 71....+00000022 32..10+00085649 
+110351+00000351 21.322+26702740 22.322+09692470 31..00+00088386 51..1.+0000+000 87..10+00001300 81..00+00423296 82..00+00456293 83..00+00004509 71....+00000022 32..10+00088283 
+110352+00000352 21.322+26673300 22.322+09669260 31..00+00090504 51..1.+0000+000 87..10+00001300 81..00+00421680 82..00+00454891 83..00+00004940 71....+00000022 32..10+00090381 
+110353+00000353 21.322+26671560 22.322+09670910 31..00+00089332 51..1.+0000+000 87..10+00001300 81..00+00422706 82..00+00455453 83..00+00004856 71....+00000022 32..10+00089212 
+110354+00000354 21.322+26657250 22.322+09650080 31..00+00092376 51..1.+0000+000 87..10+00001300 81..00+00420189 82..00+00453764 83..00+00005315 71....+00000022 32..10+00092236 
+110355+00000355 21.322+26646600 22.322+09620120 31..00+00095829 51..1.+0000+000 87..10+00001300 81..00+00417309 82..00+00451910 83..00+00005956 71....+00000022 32..10+00095658 
+110356+00000356 21.322+26650450 22.322+09594380 31..00+00099763 51..1.+0000+000 87..10+00001300 81..00+00413906 82..00+00450000 83..00+00006593 71....+00000022 32..10+00099560 
+110357+00000357 21.322+26602690 22.322+09562940 31..00+00102552 51..1.+0000+000 87..10+00001300 81..00+00411915 82..00+00447957 83..00+00007276 71....+00000022 32..10+00102311 
+110358+00000358 21.322+26556150 22.322+09525530 31..00+00106300 51..1.+0000+000 87..10+00001300 81..00+00409131 82..00+00445412 83..00+00008156 71....+00000022 32..10+00106005 
+110359+00000359 21.322+26492900 22.322+09502360 31..00+00110742 51..1.+0000+000 87..10+00001300 81..00+00405930 82..00+00442209 83..00+00008889 71....+00000022 32..10+00110404 
+110360+00000360 21.322+26436980 22.322+09492530 31..00+00115060 51..1.+0000+000 87..10+00001300 81..00+00402805 82..00+00439107 83..00+00009403 71....+00000022 32..10+00114694 
+110361+00000361 21.322+26378460 22.322+09441420 31..00+00120117 51..1.+0000+000 87..10+00002150 81..00+00399190 82..00+00435544 83..00+00009917 71....+00000022 32..10+00119655 
+110362+00000362 21.322+26355220 22.322+09463110 31..00+00124840 51..1.+0000+000 87..10+00001750 81..00+00395440 82..00+00432608 83..00+00010307 71....+00000022 32..10+00124396 
+110363+00000363 21.322+26353500 22.322+09466040 31..00+00129666 51..1.+0000+000 87..10+00001700 81..00+00391413 82..00+00429971 83..00+00010704 71....+00000022 32..10+00129210 
+110364+00000364 21.322+26365230 22.322+09461380 31..00+00127381 51..1.+0000+000 87..10+00001700 81..00+00393207 82..00+00431406 83..00+00010606 71....+00000030 32..10+00126925 
+110365+00000365 21.322+26429120 22.322+09462230 31..00+00125872 51..1.+0000+000 87..10+00001700 81..00+00393796 82..00+00433280 83..00+00010461 71....+00000030 32..10+00125423 
+110366+00000366 21.322+26422210 22.322+09464100 31..00+00123280 51..1.+0000+000 87..10+00001700 81..00+00396051 82..00+00434540 83..00+00010206 71....+00000030 32..10+00122843 
+110367+00000367 21.322+26451690 22.322+09467590 31..00+00119926 51..1.+0000+000 87..10+00001700 81..00+00398581 82..00+00436787 83..00+00009859 71....+00000030 32..10+00119507 
+110368+00000368 21.322+26536380 22.322+09473440 31..00+00116883 51..1.+0000+000 87..10+00001700 81..00+00400335 82..00+00439706 83..00+00009498 71....+00000030 32..10+00116484 
+110369+00000369 21.322+26615680 22.322+09482220 31..00+00114181 51..1.+0000+000 87..10+00001700 81..00+00401902 82..00+00442311 83..00+00009117 71....+00000030 32..10+00113804 
+110370+00000370 21.322+26678940 22.322+09492470 31..00+00111404 51..1.+0000+000 87..10+00001700 81..00+00403721 82..00+00444661 83..00+00008713 71....+00000030 32..10+00111050 
+110371+00000371 21.322+26744040 22.322+09506090 31..00+00109510 51..1.+0000+000 87..10+00001700 81..00+00404790 82..00+00446563 83..00+00008328 71....+00000030 32..10+00109181 
+110372+00000372 21.322+26829470 22.322+09503670 31..00+00102852 51..1.+0000+000 87..10+00002150 81..00+00409916 82..00+00451018 83..00+00007401 71....+00000030 32..10+00102540 
+110373+00000373 21.322+26854550 22.322+09503950 31..00+00099852 51..1.+0000+000 87..10+00002150 81..00+00412357 82..00+00452791 83..00+00007163 71....+00000030 32..10+00099549 
+110374+00000374 21.322+26883480 22.322+09522810 31..00+00099078 51..1.+0000+000 87..10+00002150 81..00+00412805 82..00+00453542 83..00+00006810 71....+00000030 32..10+00098800 
+110375+00000375 21.322+26879280 22.322+09548000 31..00+00098200 51..1.+0000+000 87..10+00001850 81..00+00413582 82..00+00453883 83..00+00006657 71....+00000030 32..10+00097953 
+110376+00000376 21.322+26883700 22.322+09550090 31..00+00097401 51..1.+0000+000 87..10+00001850 81..00+00414252 82..00+00454318 83..00+00006568 71....+00000030 32..10+00097157 
+110377+00000377 21.322+26612160 22.322+09621270 31..00+00092338 51..1.+0000+000 87..10+00001500 81..00+00420572 82..00+00453231 83..00+00005531 71....+00000030 32..10+00092175 
+110378+00000378 21.322+26514790 22.322+09644150 31..00+00091386 51..1.+0000+000 87..10+00001500 81..00+00422092 82..00+00452506 83..00+00005146 71....+00000030 32..10+00091243 
+110379+00000379 21.322+26461800 22.322+09663440 31..00+00090739 51..1.+0000+000 87..10+00001500 81..00+00423026 82..00+00452193 83..00+00004835 71....+00000030 32..10+00090612 
+110380+00000380 21.322+26382130 22.322+09703980 31..00+00089058 51..1.+0000+000 87..10+00001500 81..00+00425021 82..00+00452121 83..00+00004180 71....+00000030 32..10+00088962 
+110381+00000381 21.322+26245240 22.322+09740960 31..00+00087812 51..1.+0000+000 87..10+00001500 81..00+00427084 82..00+00451200 83..00+00003613 71....+00000030 32..10+00087739 
+110382+00000382 21.322+26213310 22.322+09771780 31..00+00085047 51..1.+0000+000 87..10+00001500 81..00+00429605 82..00+00452374 83..00+00003089 71....+00000030 32..10+00084992 
+110383+00000383 21.322+26225930 22.322+09776000 31..00+00082543 51..1.+0000+000 87..10+00001500 81..00+00431584 82..00+00453911 83..00+00002944 71....+00000030 32..10+00082492 
+110384+00000001 21.322+16207840 22.322+10078240 31..00+00036418 51..1.+0000+000 87..10+00001300 81..00+00520431 82..00+00469857 83..00-00000357 71....+00000024 32..10+00036415 
+110385+00000002 21.322+16147820 22.322+10115310 31..00+00031549 51..1.+0000+000 87..10+00001300 81..00+00517944 82..00+00474057 83..00-00000481 71....+00000024 32..10+00031544 
+110386+00000003 21.322+15975450 22.322+10165950 31..00+00026754 51..1.+0000+000 87..10+00001300 81..00+00515803 82..00+00478424 83..00-00000607 71....+00000024 32..10+00026745 
+110387+00000004 21.322+15731070 22.322+10205390 31..00+00021835 51..1.+0000+000 87..10+00001300 81..00+00513562 82..00+00482901 83..00-00000614 71....+00000024 32..10+00021824 
+110388+00000005 21.322+15341840 22.322+10230030 31..00+00017340 51..1.+0000+000 87..10+00001300 81..00+00511578 82..00+00487107 83..00-00000536 71....+00000024 32..10+00017329 
+110389+00000006 21.322+14798680 22.322+10243290 31..00+00013388 51..1.+0000+000 87..10+00001300 81..00+00509754 82..00+00490844 83..00-00000421 71....+00000024 32..10+00013378 
+110390+00000007 21.322+14045100 22.322+10242510 31..00+00009938 51..1.+0000+000 87..10+00001300 81..00+00507993 82..00+00494106 83..00-00000288 71....+00000024 32..10+00009931 
+110391+00000008 21.322+12341710 22.322+10155320 31..00+00006786 51..1.+0000+000 87..10+00001300 81..00+00506331 82..00+00497560 83..00-00000076 71....+00000024 32..10+00006784 
+110392+00000009 21.322+08828290 22.322+10092240 31..00+00004460 51..1.+0000+000 87..10+00001300 81..00+00504384 82..00+00500816 83..00+00000025 71....+00000024 32..10+00004459 
+110393+00000010 21.322+03623460 22.322+09972450 31..00+00004593 51..1.+0000+000 87..10+00001300 81..00+00502476 82..00+00503869 83..00+00000110 71....+00000024 32..10+00004593 
+110394+00000011 21.322+00405910 22.322+09887210 31..00+00007341 51..1.+0000+000 87..10+00001300 81..00+00500468 82..00+00507325 83..00+00000220 71....+00000024 32..10+00007340 
+110395+00000012 21.322+39103380 22.322+09820120 31..00+00010983 51..1.+0000+000 87..10+00001300 81..00+00498459 82..00+00510870 83..00+00000400 71....+00000024 32..10+00010979 
+110396+00000013 21.322+36808610 22.322+09395050 31..00+00013758 51..1.+0000+000 87..10+00002150 81..00+00493418 82..00+00512011 83..00+00000545 71....+00000024 32..10+00013696 
+110397+00000014 21.322+35839510 22.322+09826110 31..00+00018394 51..1.+0000+000 87..10+00001300 81..00+00488821 82..00+00514598 83..00+00000592 71....+00000024 32..10+00018387 
+110398+00000015 21.322+35255050 22.322+09849120 31..00+00022334 51..1.+0000+000 87..10+00001300 81..00+00484857 82..00+00516408 83..00+00000619 71....+00000024 32..10+00022327 
+110399+00000016 21.322+28226840 22.322+09790620 31..00+00056666 51..1.+0000+000 87..10+00001300 81..00+00445547 82..00+00484429 83..00+00001954 71....+00000025 32..10+00056636 
+110400+00000017 21.322+27674150 22.322+09794870 31..00+00059639 51..1.+0000+000 87..10+00001300 81..00+00444326 82..00+00478704 83..00+00002012 71....+00000025 32..10+00059609 
+110401+00000018 21.322+27220100 22.322+09798550 31..00+00062790 51..1.+0000+000 87..10+00001300 81..00+00443131 82..00+00473458 83..00+00002077 71....+00000025 32..10+00062758 
+110402+00000019 21.322+26762150 22.322+09794730 31..00+00066464 51..1.+0000+000 87..10+00001300 81..00+00441978 82..00+00467652 83..00+00002233 71....+00000025 32..10+00066430 
+110403+00000020 21.322+26408220 22.322+09796290 31..00+00070022 51..1.+0000+000 87..10+00001300 81..00+00440861 82..00+00462576 83..00+00002331 71....+00000025 32..10+00069986 
+110404+00000021 21.322+26031810 22.322+09796000 31..00+00074023 51..1.+0000+000 87..10+00001300 81..00+00439928 82..00+00456812 83..00+00002462 71....+00000025 32..10+00073985 
+110405+00000022 21.322+25670920 22.322+09805910 31..00+00076873 51..1.+0000+000 87..10+00001300 81..00+00440254 82..00+00451685 83..00+00002434 71....+00000025 32..10+00076837 
+110406+00000023 21.322+25288340 22.322+09818680 31..00+00079695 51..1.+0000+000 87..10+00001300 81..00+00441178 82..00+00446279 83..00+00002360 71....+00000025 32..10+00079662 
+110407+00000024 21.322+24890700 22.322+09814540 31..00+00082220 51..1.+0000+000 87..10+00001300 81..00+00442893 82..00+00440897 83..00+00002485 71....+00000025 32..10+00082185 
+110408+00000025 21.322+24473850 22.322+09810290 31..00+00084978 51..1.+0000+000 87..10+00001300 81..00+00445102 82..00+00435185 83..00+00002622 71....+00000025 32..10+00084940 
+110409+00000026 21.322+24085350 22.322+09816620 31..00+00087594 51..1.+0000+000 87..10+00001300 81..00+00447590 82..00+00429861 83..00+00002613 71....+00000025 32..10+00087558 
+110410+00000027 21.322+23755660 22.322+09823160 31..00+00089561 51..1.+0000+000 87..10+00001300 81..00+00450196 82..00+00425606 83..00+00002578 71....+00000025 32..10+00089526 
+110411+00000028 21.322+23477000 22.322+09807230 31..00+00091691 51..1.+0000+000 87..10+00001700 81..00+00452396 82..00+00421684 83..00+00002467 71....+00000025 32..10+00091649 
+110412+00000029 21.322+23128560 22.322+09815980 31..00+00093274 51..1.+0000+000 87..10+00001700 81..00+00456003 82..00+00417799 83..00+00002386 71....+00000025 32..10+00093235 
+110413+00000030 21.322+22713740 22.322+09802670 31..00+00094710 51..1.+0000+000 87..10+00002150 81..00+00460858 82..00+00413807 83..00+00002176 71....+00000025 32..10+00094664 
+110414+00000031 21.322+22362930 22.322+09814320 31..00+00096396 51..1.+0000+000 87..10+00002150 81..00+00465052 82..00+00410207 83..00+00002052 71....+00000025 32..10+00096355 
+110415+00000032 21.322+21992730 22.322+09832390 31..00+00098707 51..1.+0000+000 87..10+00002150 81..00+00469616 82..00+00406122 83..00+00001839 71....+00000025 32..10+00098672 
+110416+00000033 21.322+21711570 22.322+09849570 31..00+00101619 51..1.+0000+000 87..10+00002150 81..00+00473015 82..00+00402059 83..00+00001642 71....+00000025 32..10+00101591 
+110417+00000034 21.322+21424510 22.322+09861410 31..00+00104563 51..1.+0000+000 87..10+00002150 81..00+00476803 82..00+00398068 83..00+00001517 71....+00000025 32..10+00104538 
+110418+00000035 21.322+21106640 22.322+09877500 31..00+00108250 51..1.+0000+000 87..10+00002150 81..00+00481281 82..00+00393401 83..00+00001324 71....+00000025 32..10+00108230 
+110419+00000036 21.322+20949200 22.322+09916640 31..00+00111322 51..1.+0000+000 87..10+00001600 81..00+00483465 82..00+00389922 83..00+00001248 71....+00000025 32..10+00111313 
+110420+00000300 21.322+05060390 22.322+09267840 31..00+00038140 51..1.+0000+000 87..10+00001300 81..00+00527044 82..00+00526535 83..00+00004467 71....+00000050 32..10+00037888 
+110421+00000301 21.322+06253040 22.322+09223910 31..00+00034869 51..1.+0000+000 87..10+00001720 81..00+00528786 82..00+00519214 83..00+00003910 71....+00000050 32..10+00034610 
+110422+00000302 21.322+07300000 22.322+09527900 31..00+00016209 51..1.+0000+000 87..10+00001300 81..00+00514733 82..00+00506652 83..00+00001291 71....+00000050 32..10+00016165 
+110423+00000303 21.322+09298900 22.322+09654480 31..00+00015929 51..1.+0000+000 87..10+00001300 81..00+00515809 82..00+00501748 83..00+00000954 71....+00000050 32..10+00015906 
+110424+00000304 21.322+11275300 22.322+09835940 31..00+00017170 51..1.+0000+000 87..10+00001300 81..00+00516821 82..00+00496585 83..00+00000532 71....+00000050 32..10+00017164 
+110425+00000305 21.322+12344050 22.322+09832400 31..00+00020837 51..1.+0000+000 87..10+00001300 81..00+00519434 82..00+00492503 83..00+00000639 71....+00000050 32..10+00020830 
+110426+00000306 21.322+12878460 22.322+09944030 31..00+00020598 51..1.+0000+000 87..10+00001300 81..00+00518527 82..00+00491001 83..00+00000271 71....+00000050 32..10+00020597 
+110427+00000307 21.322+13149860 22.322+09891510 31..00+00023157 51..1.+0000+000 87..10+00001300 81..00+00520377 82..00+00489006 83..00+00000485 71....+00000050 32..10+00023154 
+110428+00000308 21.322+13673600 22.322+09956540 31..00+00023544 51..1.+0000+000 87..10+00001300 81..00+00519731 82..00+00487156 83..00+00000251 71....+00000050 32..10+00023544 
+110429+00000309 21.322+14903240 22.322+10049470 31..00+00029957 51..1.+0000+000 87..10+00001300 81..00+00521502 82..00+00479142 83..00-00000143 71....+00000050 32..10+00029956 
+110430+00000310 21.322+15161020 22.322+10014060 31..00+00032595 51..1.+0000+000 87..10+00001300 81..00+00522458 82..00+00476377 83..00+00000018 71....+00000050 32..10+00032595 
+110431+00000311 21.322+03192490 22.322+09366290 31..00+00031433 51..1.+0000+000 87..10+00001300 81..00+00515036 82..00+00527426 83..00+00003214 71....+00000050 32..10+00031277 
+110432+00000312 21.322+02312470 22.322+09385590 31..00+00031731 51..1.+0000+000 87..10+00001300 81..00+00511222 82..00+00529522 83..00+00003148 71....+00000050 32..10+00031583 
+110433+00000313 21.322+01484180 22.322+09383280 31..00+00033557 51..1.+0000+000 87..10+00001300 81..00+00507716 82..00+00532496 83..00+00003336 71....+00000050 32..10+00033400 
+110434+00000314 21.322+01074350 22.322+09421030 31..00+00033607 51..1.+0000+000 87..10+00001300 81..00+00505621 82..00+00532992 83..00+00003142 71....+00000050 32..10+00033468 
+110435+00000315 21.322+00566330 22.322+09443600 31..00+00033780 51..1.+0000+000 87..10+00001300 81..00+00502990 82..00+00533518 83..00+00003039 71....+00000050 32..10+00033651 
+110436+00000316 21.322+39981550 22.322+09432270 31..00+00033116 51..1.+0000+000 87..10+00001580 81..00+00499904 82..00+00532984 83..00+00002759 71....+00000050 32..10+00032984 
+110437+00000317 21.322+39397270 22.322+09508210 31..00+00034150 51..1.+0000+000 87..10+00001300 81..00+00496781 82..00+00533896 83..00+00002726 71....+00000050 32..10+00034048 
+110438+00000318 21.322+39010910 22.322+09541910 31..00+00033479 51..1.+0000+000 87..10+00001300 81..00+00494833 82..00+00532990 83..00+00002497 71....+00000050 32..10+00033392 
+110439+00000319 21.322+38702520 22.322+09555400 31..00+00032424 51..1.+0000+000 87..10+00001450 81..00+00493453 82..00+00531676 83..00+00002203 71....+00000050 32..10+00032345 
+110440+00000320 21.322+08704950 22.322+30279660 31..00+00060678 51..1.+0000+000 87..10+00001750 81..00+00440630 82..00+00487753 83..00+00002305 71....+00000051 32..10+00060620 
+110441+00000321 21.322+08423970 22.322+30326530 31..00+00062339 51..1.+0000+000 87..10+00001750 81..00+00439642 82..00+00484745 83..00+00002836 71....+00000051 32..10+00062256 
+110442+00000322 21.322+08424000 22.322+30326730 31..00+00062340 51..1.+0000+000 87..10+00002150 81..00+00439641 82..00+00484745 83..00+00002438 71....+00000051 32..10+00062257 
+110443+00000323 21.322+08258650 22.322+30326970 31..00+00065172 51..1.+0000+000 87..10+00002000 81..00+00437334 82..00+00482418 83..00+00002736 71....+00000051 32..10+00065086 
+110444+00000324 21.322+07986080 22.322+30332140 31..00+00066715 51..1.+0000+000 87..10+00002150 81..00+00436682 82..00+00479274 83..00+00002719 71....+00000051 32..10+00066624 
+110445+00000325 21.322+03634630 22.322+30245770 31..00+00109833 51..1.+0000+000 87..10+00002150 81..00+00440689 82..00+00407655 83..00+00003480 71....+00000051 32..10+00109751 
+110446+00000326 21.322+03359460 22.322+30233450 31..00+00106976 51..1.+0000+000 87..10+00002150 81..00+00446168 82..00+00407638 83..00+00003163 71....+00000051 32..10+00106904 
+110447+00000327 21.322+03231540 22.322+30227110 31..00+00109075 51..1.+0000+000 87..10+00002150 81..00+00447014 82..00+00404739 83..00+00003131 71....+00000051 32..10+00109005 
+110448+00000328 21.322+00206680 22.322+30159340 31..00+00084654 51..1.+0000+000 87..10+00001850 81..00+00497253 82..00+00415417 83..00+00001659 71....+00000051 32..10+00084627 
+110449+00000329 21.322+26324030 22.322+09462600 31..00+00112340 51..1.+0000+000 87..10+00001600 81..00+00406209 82..00+00438896 83..00+00009263 71....+00000052 32..10+00111940 
+110450+00000330 21.322+26201660 22.322+09472930 31..00+00113496 51..1.+0000+000 87..10+00001450 81..00+00406435 82..00+00436449 83..00+00009327 71....+00000052 32..10+00113107 
+110451+00000331 21.322+25987580 22.322+09506070 31..00+00114363 51..1.+0000+000 87..10+00001450 81..00+00407888 82..00+00432802 83..00+00008805 71....+00000052 32..10+00114019 
+110452+00000332 21.322+25868240 22.322+09622050 31..00+00101314 51..1.+0000+000 87..10+00001450 81..00+00419427 82..00+00438873 83..00+00005952 71....+00000052 32..10+00101136 
+110453+00000333 21.322+25560760 22.322+09676710 31..00+00103758 51..1.+0000+000 87..10+00001450 81..00+00420565 82..00+00433457 83..00+00005207 71....+00000052 32..10+00103624 
+110454+00000334 21.322+25413750 22.322+09680430 31..00+00106747 51..1.+0000+000 87..10+00001450 81..00+00419877 82..00+00429669 83..00+00005297 71....+00000052 32..10+00106612 
+110455+00000335 21.322+25360830 22.322+09722420 31..00+00102017 51..1.+0000+000 87..10+00001450 81..00+00423965 82..00+00432130 83..00+00004387 71....+00000052 32..10+00101920 
+110456+00000336 21.322+25214790 22.322+09695140 31..00+00109258 51..1.+0000+000 87..10+00001450 81..00+00420272 82..00+00425478 83..00+00005171 71....+00000052 32..10+00109133 
+110457+00000337 21.322+25028240 22.322+09704780 31..00+00112170 51..1.+0000+000 87..10+00001450 81..00+00420418 82..00+00421121 83..00+00005141 71....+00000052 32..10+00112050 
+110458+00000338 21.322+24899790 22.322+09721210 31..00+00111990 51..1.+0000+000 87..10+00001550 81..00+00422142 82..00+00419652 83..00+00004744 71....+00000052 32..10+00111883 
+110459+00000339 21.322+24661010 22.322+09737480 31..00+00112243 51..1.+0000+000 87..10+00001550 81..00+00425033 82..00+00416591 83..00+00004468 71....+00000052 32..10+00112148 
+110460+00000340 21.322+20892180 22.322+09906620 31..00+00106579 51..1.+0000+000 87..10+00001600 81..00+00485114 82..00+00394477 83..00+00001354 71....+00000052 32..10+00106568 
+110461+00000341 21.322+20793090 22.322+09904970 31..00+00086796 51..1.+0000+000 87..10+00001300 81..00+00489216 82..00+00413887 83..00+00001386 71....+00000052 32..10+00086786 
+110462+00000342 21.322+15144140 22.322+10093010 31..00+00023967 51..1.+0000+000 87..10+00001300 81..00+00516558 82..00+00482675 83..00-00000260 71....+00000060 32..10+00023965 
+110463+00000343 21.322+14747150 22.322+10100610 31..00+00020277 51..1.+0000+000 87..10+00001300 81..00+00514894 82..00+00486244 83..00-00000230 71....+00000060 32..10+00020274 
+110464+00000344 21.322+14107980 22.322+10154420 31..00+00019294 51..1.+0000+000 87..10+00001300 81..00+00515410 82..00+00488399 83..00-00000378 71....+00000060 32..10+00019289 
+110465+00000345 21.322+14320580 22.322+10182820 31..00+00017972 51..1.+0000+000 87..10+00001300 81..00+00513984 82..00+00488723 83..00-00000426 71....+00000060 32..10+00017964 
+110466+00000346 21.322+14862050 22.322+10199570 31..00+00018176 51..1.+0000+000 87..10+00001300 81..00+00513122 82..00+00487435 83..00-00000480 71....+00000060 32..10+00018167 
+110467+00000347 21.322+15189490 22.322+10187980 31..00+00019652 51..1.+0000+000 87..10+00001300 81..00+00513471 82..00+00485703 83..00-00000490 71....+00000060 32..10+00019644 
+110468+00000348 21.322+15321570 22.322+10182410 31..00+00021181 51..1.+0000+000 87..10+00001300 81..00+00514196 82..00+00484292 83..00-00000517 71....+00000060 32..10+00021173 
+110469+00000349 21.322+15303990 22.322+10173590 31..00+00022305 51..1.+0000+000 87..10+00001300 81..00+00514995 82..00+00483500 83..00-00000518 71....+00000060 32..10+00022296 
+110470+00000350 21.322+15506270 22.322+10183310 31..00+00022945 51..1.+0000+000 87..10+00001300 81..00+00514878 82..00+00482545 83..00-00000571 71....+00000060 32..10+00022935 
+110471+00000351 21.322+15598150 22.322+10186790 31..00+00023680 51..1.+0000+000 87..10+00001300 81..00+00515093 82..00+00481766 83..00-00000605 71....+00000060 32..10+00023670 
+110472+00000352 21.322+15535500 22.322+10170180 31..00+00024914 51..1.+0000+000 87..10+00001300 81..00+00516069 82..00+00480972 83..00-00000576 71....+00000060 32..10+00024905 
+110473+00000353 21.322+15257180 22.322+10139120 31..00+00025527 51..1.+0000+000 87..10+00001300 81..00+00517302 82..00+00481240 83..00-00000468 71....+00000060 32..10+00025521 
+110474+00000354 21.322+14917880 22.322+10139360 31..00+00025130 51..1.+0000+000 87..10+00001300 81..00+00517993 82..00+00482465 83..00-00000460 71....+00000060 32..10+00025124 
+110475+00000355 21.322+14747170 22.322+10132080 31..00+00023971 51..1.+0000+000 87..10+00001300 81..00+00517606 82..00+00483740 83..00-00000407 71....+00000060 32..10+00023965 
+110476+00000356 21.322+14590340 22.322+10119040 31..00+00022413 51..1.+0000+000 87..10+00001300 81..00+00516831 82..00+00485206 83..00-00000329 71....+00000060 32..10+00022409 
+110477+00000357 21.322+14329460 22.322+10128120 31..00+00020816 51..1.+0000+000 87..10+00001300 81..00+00516182 82..00+00486913 83..00-00000329 71....+00000060 32..10+00020811 
+110478+00000358 21.322+31885050 22.322+09743100 31..00+00029363 51..1.+0000+000 87..10+00001770 81..00+00471938 82..00+00508561 83..00+00000805 71....+00000060 32..10+00029339 
+110479+00000359 21.322+31765260 22.322+09736790 31..00+00029500 51..1.+0000+000 87..10+00001720 81..00+00471651 82..00+00508069 83..00+00000889 71....+00000060 32..10+00029474 
+110480+00000360 21.322+31761050 22.322+09824840 31..00+00028902 51..1.+0000+000 87..10+00001570 81..00+00472207 82..00+00507891 83..00+00000615 71....+00000060 32..10+00028892 
+110481+00000361 21.322+31922760 22.322+09872300 31..00+00028461 51..1.+0000+000 87..10+00001390 81..00+00472833 82..00+00508464 83..00+00000571 71....+00000060 32..10+00028455 
+110482+00000362 21.322+32042350 22.322+09857450 31..00+00028936 51..1.+0000+000 87..10+00001370 81..00+00472547 82..00+00509122 83..00+00000668 71....+00000060 32..10+00028929 
+110483+00000363 21.322+31998520 22.322+09842050 31..00+00030030 51..1.+0000+000 87..10+00001300 81..00+00471446 82..00+00509270 83..00+00000835 71....+00000060 32..10+00030021 
+110484+00000364 21.322+30686750 22.322+09784520 31..00+00042891 51..1.+0000+000 87..10+00001300 81..00+00457383 82..00+00504615 83..00+00001542 71....+00000060 32..10+00042867 
+110485+00000365 21.322+30711850 22.322+09833060 31..00+00041468 51..1.+0000+000 87..10+00001300 81..00+00458806 82..00+00504626 83..00+00001177 71....+00000060 32..10+00041453 
+110486+00000366 21.322+30849770 22.322+09816910 31..00+00041742 51..1.+0000+000 87..10+00001300 81..00+00458647 82..00+00505553 83..00+00001290 71....+00000060 32..10+00041724 
+110487+00000367 21.322+30928890 22.322+09813340 31..00+00042668 51..1.+0000+000 87..10+00001300 81..00+00457803 82..00+00506201 83..00+00001341 71....+00000060 32..10+00042650 
+110488+00000368 21.322+30873510 22.322+09817890 31..00+00043643 51..1.+0000+000 87..10+00001300 81..00+00456785 82..00+00505967 83..00+00001338 71....+00000060 32..10+00043625 
+110489+00000369 21.322+30714530 22.322+09826340 31..00+00044343 51..1.+0000+000 87..10+00001300 81..00+00455953 82..00+00504965 83..00+00001300 71....+00000060 32..10+00044326 
+110490+00000370 21.322+30483210 22.322+09844140 31..00+00043881 51..1.+0000+000 87..10+00001300 81..00+00456258 82..00+00503326 83..00+00001164 71....+00000060 32..10+00043868 
+110491+00000371 21.322+30502810 22.322+09843800 31..00+00042599 51..1.+0000+000 87..10+00001300 81..00+00457547 82..00+00503360 83..00+00001135 71....+00000060 32..10+00042586 
+110492+00000372 21.322+30579810 22.322+09835960 31..00+00041410 51..1.+0000+000 87..10+00001300 81..00+00458776 82..00+00503765 83..00+00001157 71....+00000060 32..10+00041396 
+110493+00000584 21.322+17657970 22.322+10073440 31..00+00046177 51..1.+0000+000 87..10+00002150 81..00+00516606 82..00+00456915 83..00-00001233 71....+00000070 32..10+00046174 
+110494+00000800 21.322+30380470 22.322+09886300 31..00+00058943 51..1.+0000+000 87..10+00001600 81..00+00465284 82..00+00448849 83..00+00001207 71....+00000070 32..10+00058934 
+110495+00000801 21.322+30322120 22.322+09882390 31..00+00059919 51..1.+0000+000 87..10+00001600 81..00+00464281 82..00+00448359 83..00+00001261 71....+00000070 32..10+00059909 
+110496+00STAZ02 21.322+37624260 22.322+09451230 31..00+00020555 51..1.+0000+000 87..10+00002150 71....+00000070 32..10+00020479 
+110497+00STAZ03 21.322+04023910 22.322+09799050 31..00+00020896 51..1.+0000+000 87..10+00002150 71....+00000070 32..10+00020885 
+110498+STAZLIB3 25.342+20904010 84..40+00519659 85..40+00465244 86..40-00000588 87..10+00002150 88..10+00001350 
+110499+STAZLIB3 25.342+20904010 84..40+00519659 85..40+00465244 86..40-00000588 87..10+00002150 88..10+00001350 
+110500+00000850 21.322+28199190 22.322+09784250 31..00+00072875 51..1.+0000+000 87..10+00001300 81..00+00449720 82..00+00444915 83..00+00001932 71....+00000070 32..10+00072833 
+110501+00000851 21.322+27483760 22.322+09903080 31..00+00040636 51..1.+0000+000 87..10+00001300 81..00+00482161 82..00+00449600 83..00+00000081 71....+00000070 32..10+00040631 
+110502+00000852 21.322+21773190 22.322+10459160 31..00+00009048 51..1.+0000+000 87..10+00001300 81..00+00517177 82..00+00456567 83..00-00001190 71....+0000MK10 32..10+00009025 
+110503+00000853 21.322+22024920 22.322+10411140 31..00+00008332 51..1.+0000+000 87..10+00001300 81..00+00517059 82..00+00457347 83..00-00001075 71....+0000MK11 32..10+00008314 
+110504+00000854 21.322+21557420 22.322+10400910 31..00+00008085 51..1.+0000+000 87..10+00001300 81..00+00517704 82..00+00457415 83..00-00001046 71....+0000MK12 32..10+00008069 
+110505+00000855 21.322+21346530 22.322+10422860 31..00+00008811 51..1.+0000+000 87..10+00001300 81..00+00517813 82..00+00456649 83..00-00001122 71....+0000MK14 32..10+00008791 
+110506+00000856 21.322+21769860 22.322+10457420 31..00+00009043 51..1.+0000+000 87..10+00001300 81..00+00517183 82..00+00456570 83..00-00001187 71....+0000MK10 32..10+00009020 
+110507+00000857 21.322+22024860 22.322+10412030 31..00+00008340 51..1.+0000+000 87..10+00001300 81..00+00517056 82..00+00457339 83..00-00001077 71....+0000MK11 32..10+00008322 
+110508+00000858 21.322+21556490 22.322+10400620 31..00+00008093 51..1.+0000+000 87..10+00001300 81..00+00517704 82..00+00457407 83..00-00001047 71....+0000MK12 32..10+00008077 
+110509+00000859 21.322+21344410 22.322+10420980 31..00+00008813 51..1.+0000+000 87..10+00001300 81..00+00517815 82..00+00456645 83..00-00001120 71....+0000MK13 32..10+00008794 
+110510+00000860 21.322+20964260 22.322+10461840 31..00+00007849 51..1.+0000+000 87..10+00001300 81..00+00518478 82..00+00457506 83..00-00001106 71....+0000MK14 32..10+00007828 
+110511+00000861 21.322+20809900 22.322+10441050 31..00+00008620 51..1.+0000+000 87..10+00001300 81..00+00518568 82..00+00456714 83..00-00001134 71....+0000MK15 32..10+00008599 
+110512+00000862 21.322+20463620 22.322+10455450 31..00+00007707 51..1.+0000+000 87..10+00001300 81..00+00519099 82..00+00457577 83..00-00001089 71....+0000MK16 32..10+00007688 
+110513+00000863 21.322+20322280 22.322+10424630 31..00+00008457 51..1.+0000+000 87..10+00001300 81..00+00519232 82..00+00456816 83..00-00001101 71....+0000MK17 32..10+00008439 
+110514+00000864 21.322+19876760 22.322+10418280 31..00+00008342 51..1.+0000+000 87..10+00001300 81..00+00519820 82..00+00456921 83..00-00001085 71....+0000MK18 32..10+00008324 
+110515+00000865 21.322+19876790 22.322+10418410 31..00+00008351 51..1.+0000+000 87..10+00001300 81..00+00519820 82..00+00456913 83..00-00001086 71....+0000MK18 32..10+00008333 
+110516+00000866 21.322+19955620 22.322+10476850 31..00+00007624 51..1.+0000+000 87..10+00001300 81..00+00519712 82..00+00457641 83..00-00001108 71....+0000MK19 32..10+00007603 
+110517+00000867 21.322+19188620 22.322+10497850 31..00+00007584 51..1.+0000+000 87..10+00001300 81..00+00520620 82..00+00457745 83..00-00001130 71....+0000MK20 32..10+00007561 
+110518+00000868 21.322+19210220 22.322+10439690 31..00+00008284 51..1.+0000+000 87..10+00001300 81..00+00520681 82..00+00457043 83..00-00001109 71....+0000MK21 32..10+00008264 
+110519+00000869 21.322+18586250 22.322+10589150 31..00+00008323 51..1.+0000+000 87..10+00001300 81..00+00521484 82..00+00457160 83..00-00001307 71....+0000MK22 32..10+00008288 
+110520+00000870 21.322+18534500 22.322+10653840 31..00+00007608 51..1.+0000+000 87..10+00001300 81..00+00521386 82..00+00457875 83..00-00001318 71....+0000MK23 32..10+00007568 
+110521+00000871 21.322+17903450 22.322+10133210 31..00+00007689 51..1.+0000+000 87..10+00001900 81..00+00522145 82..00+00457970 83..00-00001298 71....+0000MK24 32..10+00007687 
+110522+00000872 21.322+18056270 22.322+10154800 31..00+00008403 51..1.+0000+000 87..10+00001900 81..00+00522184 82..00+00457232 83..00-00001342 71....+0000MK25 32..10+00008400 
+110523+00000873 21.322+17461600 22.322+10178720 31..00+00007815 51..1.+0000+000 87..10+00001900 81..00+00522692 82..00+00458045 83..00-00001357 71....+0000MK26 32..10+00007812 
+110524+00000874 21.322+17582860 22.322+10201970 31..00+00008549 51..1.+0000+000 87..10+00001900 81..00+00522825 82..00+00457308 83..00-00001409 71....+0000MK27 32..10+00008544 
+110525+00STAZ03 21.322+02737840 22.322+10352010 31..00+00020095 51..1.+0000+000 87..10+00001300 71....+0000MK27 32..10+00020065 
+110526+STAZION1 21.322+08382400 22.322+10047050 31..00+00060098 51..1.+0000+000 87..10+00001300 71....+0000MK27 32..10+00060097 
+110527+STAZLIB4 25.342+28951540 84..40+00524441 85..40+00445069 86..40+00000388 87..10+00001300 88..10+00001330 
+110528+STAZION1 81..00+00500000 82..00+00500000 83..00+00000000 
+110529+STAZION1 21.322+37333780 22.322+10039750 31..00+00060114 51..1.+0000+000 87..10+00001300 71....+0000000/ 32..10+00060113 
+110530+00STAZ03 21.322+31691030 22.322+10350670 31..00+00020107 51..1.+0000+000 87..10+00001300 71....+0000000/ 32..10+00020076 
+110531+STAZLIB4 25.342+39999650 84..40+00524452 85..40+00445059 86..40+00000352 87..10+00001300 88..10+00001330 
+110532+00000900 21.322+28381230 22.322+11361090 31..00+00009288 51..1.+0000+000 87..10+00001300 81..00+00515667 82..00+00442776 83..00-00001589 71....+00000080 32..10+00009077 
+110533+00000901 21.322+28345930 22.322+11418710 31..00+00009573 51..1.+0000+000 87..10+00001300 81..00+00515429 82..00+00442660 83..00-00001734 71....+00000080 32..10+00009336 
+110534+00000902 21.322+28399580 22.322+11418300 31..00+00009740 51..1.+0000+000 87..10+00001300 81..00+00515251 82..00+00442696 83..00-00001770 71....+00000080 32..10+00009499 
+110535+00000903 21.322+28531670 22.322+11439560 31..00+00009716 51..1.+0000+000 87..10+00001300 81..00+00515234 82..00+00442894 83..00-00001796 71....+00000080 32..10+00009469 
+110536+00000904 21.322+28622410 22.322+11280400 31..00+00009458 51..1.+0000+000 87..10+00001500 81..00+00515401 82..00+00443069 83..00-00001707 71....+00000080 32..10+00009267 
+110537+00000905 21.322+28446540 22.322+11194350 31..00+00009477 51..1.+0000+000 87..10+00001500 81..00+00515417 82..00+00442810 83..00-00001585 71....+00000080 32..10+00009310 
+110538+00000906 21.322+28345210 22.322+11261000 31..00+00009329 51..1.+0000+000 87..10+00001500 81..00+00515613 82..00+00442708 83..00-00001654 71....+00000080 32..10+00009146 
+110539+00000907 21.322+28372750 22.322+11359860 31..00+00009691 51..1.+0000+000 87..10+00001500 81..00+00515289 82..00+00442664 83..00-00001872 71....+00000080 32..10+00009471 
+110540+00000908 21.322+28380860 22.322+11353650 31..00+00009778 51..1.+0000+000 87..10+00001500 81..00+00515202 82..00+00442654 83..00-00001881 71....+00000080 32..10+00009557 
+110541+00000909 21.322+28439560 22.322+11356470 31..00+00009800 51..1.+0000+000 87..10+00001500 81..00+00515159 82..00+00442735 83..00-00001890 71....+00000080 32..10+00009579 
+110542+00000910 21.322+28448570 22.322+11332610 31..00+00009721 51..1.+0000+000 87..10+00001500 81..00+00515224 82..00+00442765 83..00-00001838 71....+00000080 32..10+00009509 
+110543+00000911 21.322+28475790 22.322+11316850 31..00+00009794 51..1.+0000+000 87..10+00001500 81..00+00515140 82..00+00442786 83..00-00001829 71....+00000080 32..10+00009585 
+110544+00000912 21.322+28541530 22.322+11332570 31..00+00009818 51..1.+0000+000 87..10+00001500 81..00+00515099 82..00+00442878 83..00-00001858 71....+00000080 32..10+00009603 
+110545+00000913 21.322+28569460 22.322+11159050 31..00+00009669 51..1.+0000+000 87..10+00001800 81..00+00515182 82..00+00442940 83..00-00001869 71....+00000080 32..10+00009509 
+110546+00000914 21.322+28484200 22.322+11046190 31..00+00009607 51..1.+0000+000 87..10+00001800 81..00+00515242 82..00+00442824 83..00-00001690 71....+00000080 32..10+00009477 
+110547+00000915 21.322+28382180 22.322+11160530 31..00+00009722 51..1.+0000+000 87..10+00001800 81..00+00515198 82..00+00442655 83..00-00001880 71....+00000080 32..10+00009560 
+110548+00000916 21.322+28340430 22.322+10980190 31..00+00009808 51..1.+0000+000 87..10+00001800 81..00+00515088 82..00+00442561 83..00-00001622 71....+00000080 32..10+00009692 
+110549+00000917 21.322+28331050 22.322+11320050 31..00+00010109 51..1.+0000+000 87..10+00001800 81..00+00514897 82..00+00442495 83..00-00002199 71....+00000080 32..10+00009892 
+110550+00000918 21.322+28437020 22.322+11249810 31..00+00010116 51..1.+0000+000 87..10+00001800 81..00+00514828 82..00+00442648 83..00-00002091 71....+00000080 32..10+00009921 
+110551+00000919 21.322+28588540 22.322+11139420 31..00+00009849 51..1.+0000+000 87..10+00001800 81..00+00514997 82..00+00442928 83..00-00001871 71....+00000080 32..10+00009692 
+110552+00000920 21.322+28432510 22.322+11249960 31..00+00009973 51..1.+0000+000 87..10+00001300 81..00+00514966 82..00+00442675 83..00-00001563 71....+00000080 32..10+00009781 
+110553+00000921 21.322+28298860 22.322+11332460 31..00+00010166 51..1.+0000+000 87..10+00001800 81..00+00514860 82..00+00442433 83..00-00002230 71....+00000080 32..10+00009944 
+110554+00000922 21.322+28300710 22.322+11403150 31..00+00010182 51..1.+0000+000 87..10+00001800 81..00+00514868 82..00+00442438 83..00-00002344 71....+00000080 32..10+00009936 
+110555+00000923 21.322+28346380 22.322+11454900 31..00+00010262 51..1.+0000+000 87..10+00001800 81..00+00514792 82..00+00442492 83..00-00002443 71....+00000080 32..10+00009995 
+110556+00000924 21.322+28583500 22.322+11180870 31..00+00010160 51..1.+0000+000 87..10+00002150 81..00+00514712 82..00+00442855 83..00-00002342 71....+00000080 32..10+00009986 
+110557+00000925 21.322+28794890 22.322+11212310 31..00+00010111 51..1.+0000+000 87..10+00002150 81..00+00514701 82..00+00443191 83..00-00002382 71....+00000080 32..10+00009928 
+110558+00000926 21.322+28815560 22.322+11185830 31..00+00009959 51..1.+0000+000 87..10+00002150 81..00+00514834 82..00+00443249 83..00-00002312 71....+00000080 32..10+00009787 
+110559+00000927 21.322+28771720 22.322+11106160 31..00+00009863 51..1.+0000+000 87..10+00002150 81..00+00514917 82..00+00443196 83..00-00002173 71....+00000080 32..10+00009715 
+110560+00000928 21.322+28625990 22.322+11055140 31..00+00010042 51..1.+0000+000 87..10+00002150 81..00+00514777 82..00+00442938 83..00-00002125 71....+00000080 32..10+00009904 
+110561+00000929 21.322+28522100 22.322+11067760 31..00+00010119 51..1.+0000+000 87..10+00002150 81..00+00514743 82..00+00442764 83..00-00002157 71....+00000080 32..10+00009977 
+110562+00000930 21.322+28413510 22.322+11206750 31..00+00010229 51..1.+0000+000 87..10+00002150 81..00+00514717 82..00+00442581 83..00-00002395 71....+00000080 32..10+00010046 
+110563+00000931 21.322+28378340 22.322+11087230 31..00+00010063 51..1.+0000+000 87..10+00002150 81..00+00514855 82..00+00442560 83..00-00002178 71....+00000080 32..10+00009917 
+110564+00000932 21.322+28421040 22.322+11033700 31..00+00010031 51..1.+0000+000 87..10+00002150 81..00+00514856 82..00+00442629 83..00-00002090 71....+00000080 32..10+00009899 
+110565+00000933 21.322+28446330 22.322+11019170 31..00+00010065 51..1.+0000+000 87..10+00002150 81..00+00514810 82..00+00442658 83..00-00002072 71....+00000080 32..10+00009936 
+110566+00000934 21.322+28466550 22.322+11025680 31..00+00010089 51..1.+0000+000 87..10+00002150 81..00+00514781 82..00+00442683 83..00-00002086 71....+00000080 32..10+00009959 
+110567+00000935 21.322+28632580 22.322+10929650 31..00+00009765 51..1.+0000+000 87..10+00002150 81..00+00515013 82..00+00443000 83..00-00001889 71....+00000080 32..10+00009661 
+110568+00000936 21.322+28604890 22.322+10912400 31..00+00009803 51..1.+0000+000 87..10+00002150 81..00+00514982 82..00+00442950 83..00-00001868 71....+00000080 32..10+00009702 
+110569+00000937 21.322+28709030 22.322+11036420 31..00+00009962 51..1.+0000+000 87..10+00002150 81..00+00514823 82..00+00443079 83..00-00002083 71....+00000080 32..10+00009830 
+110570+00000938 21.322+28819720 22.322+11019000 31..00+00009646 51..1.+0000+000 87..10+00002150 81..00+00515092 82..00+00443304 83..00-00002005 71....+00000080 32..10+00009523 
+110571+00000939 21.322+28864590 22.322+11198730 31..00+00010264 51..1.+0000+000 87..10+00002150 81..00+00514529 82..00+00443270 83..00-00002389 71....+00000080 32..10+00010083 
+110572+00000940 21.322+28972000 22.322+11175120 31..00+00010083 51..1.+0000+000 87..10+00002150 81..00+00514669 82..00+00443465 83..00-00002319 71....+00000080 32..10+00009911 
+110573+00000941 21.322+28898790 22.322+11183690 31..00+00010066 51..1.+0000+000 87..10+00002150 81..00+00514707 82..00+00443356 83..00-00002329 71....+00000080 32..10+00009892 
+110574+00000942 21.322+28922700 22.322+11173600 31..00+00009933 51..1.+0000+000 87..10+00002150 81..00+00514827 82..00+00443415 83..00-00002289 71....+00000080 32..10+00009764 
+110575+00000943 21.322+28959950 22.322+11200170 31..00+00010036 51..1.+0000+000 87..10+00002150 81..00+00514724 82..00+00443456 83..00-00002349 71....+00000080 32..10+00009859 
+110576+00000944 21.322+29044420 22.322+11203480 31..00+00009918 51..1.+0000+000 87..10+00002150 81..00+00514820 82..00+00443602 83..00-00002332 71....+00000080 32..10+00009742 
+110577+00000945 21.322+29013050 22.322+11149750 31..00+00009831 51..1.+0000+000 87..10+00002150 81..00+00514896 82..00+00443566 83..00-00002234 71....+00000080 32..10+00009672 
+110578+00000946 21.322+28089420 22.322+11233140 31..00+00010497 51..1.+0000+000 87..10+00002150 81..00+00514611 82..00+00442014 83..00-00002489 71....+00000080 32..10+00010301 
+110579+00000947 21.322+28127290 22.322+11261730 31..00+00010591 51..1.+0000+000 87..10+00002150 81..00+00514514 82..00+00442048 83..00-00002553 71....+00000080 32..10+00010384 
+110580+00000948 21.322+28233540 22.322+11283570 31..00+00010544 51..1.+0000+000 87..10+00002150 81..00+00514516 82..00+00442229 83..00-00002580 71....+00000080 32..10+00010331 
+110581+00000949 21.322+28323190 22.322+11262560 31..00+00010176 51..1.+0000+000 87..10+00002150 81..00+00514819 82..00+00442461 83..00-00002473 71....+00000080 32..10+00009977 
+110582+00000950 21.322+28246930 22.322+11175420 31..00+00010104 51..1.+0000+000 87..10+00002150 81..00+00514894 82..00+00442358 83..00-00002323 71....+00000080 32..10+00009932 
+110583+00000951 21.322+28315170 22.322+11226210 31..00+00010240 51..1.+0000+000 87..10+00002150 81..00+00514751 82..00+00442430 83..00-00002428 71....+00000080 32..10+00010051 
+110584+00000952 21.322+28434850 22.322+11202410 31..00+00010218 51..1.+0000+000 87..10+00002150 81..00+00514717 82..00+00442616 83..00-00002386 71....+00000080 32..10+00010036 
+110585+00000953 21.322+28573250 22.322+11182730 31..00+00010372 51..1.+0000+000 87..10+00002150 81..00+00514514 82..00+00442794 83..00-00002384 71....+00000080 32..10+00010193 
+110586+00000954 21.322+28482790 22.322+11155310 31..00+00010518 51..1.+0000+000 87..10+00002150 81..00+00514399 82..00+00442617 83..00-00002366 71....+00000080 32..10+00010345 
+110587+00000955 21.322+28352110 22.322+11231750 31..00+00010514 51..1.+0000+000 87..10+00002150 81..00+00514477 82..00+00442418 83..00-00002490 71....+00000080 32..10+00010318 
+110588+00000956 21.322+28577880 22.322+11169720 31..00+00010572 51..1.+0000+000 87..10+00002150 81..00+00514316 82..00+00442756 83..00-00002399 71....+00000080 32..10+00010394 
+110589+00000957 21.322+28310910 22.322+11297900 31..00+00010466 51..1.+0000+000 87..10+00002150 81..00+00514561 82..00+00442371 83..00-00002587 71....+00000080 32..10+00010249 
+110590+00000958 21.322+28233010 22.322+11277550 31..00+00010757 51..1.+0000+000 87..10+00002150 81..00+00514314 82..00+00442171 83..00-00002612 71....+00000080 32..10+00010541 
+110591+00000959 21.322+28341800 22.322+11300100 31..00+00011135 51..1.+0000+000 87..10+00002150 81..00+00513916 82..00+00442251 83..00-00002726 71....+00000080 32..10+00010904 
+110592+00000960 21.322+28480490 22.322+11330880 31..00+00011185 51..1.+0000+000 87..10+00002150 81..00+00513820 82..00+00442472 83..00-00002789 71....+00000080 32..10+00010942 
+110593+00000961 21.322+28596780 22.322+11242680 31..00+00010988 51..1.+0000+000 87..10+00002150 81..00+00513933 82..00+00442702 83..00-00002599 71....+00000080 32..10+00010779 
+110594+00000962 21.322+28458040 22.322+11067810 31..00+00010750 51..1.+0000+000 87..10+00002150 81..00+00514162 82..00+00442517 83..00-00002263 71....+00000080 32..10+00010600 
+110595+00000963 21.322+28696940 22.322+11197160 31..00+00010303 51..1.+0000+000 87..10+00002150 81..00+00514541 82..00+00443002 83..00-00002394 71....+00000080 32..10+00010122 
+110596+00000964 21.322+28697270 22.322+11198830 31..00+00010406 51..1.+0000+000 87..10+00002150 81..00+00514443 82..00+00442982 83..00-00002416 71....+00000080 32..10+00010222 
+110597+00000965 21.322+28759500 22.322+11217710 31..00+00010471 51..1.+0000+000 87..10+00002150 81..00+00514366 82..00+00443068 83..00-00002459 71....+00000080 32..10+00010280 
+110598+00000966 21.322+28783300 22.322+11222000 31..00+00010326 51..1.+0000+000 87..10+00002150 81..00+00514500 82..00+00443133 83..00-00002438 71....+00000080 32..10+00010137 
+110599+00000967 21.322+28579980 22.322+11178050 31..00+00010497 51..1.+0000+000 87..10+00002150 81..00+00514390 82..00+00442777 83..00-00002399 71....+00000080 32..10+00010318 
+110600+00000968 21.322+28688920 22.322+11192920 31..00+00010433 51..1.+0000+000 87..10+00002150 81..00+00514418 82..00+00442963 83..00-00002411 71....+00000080 32..10+00010250 
+110601+00000969 21.322+28744370 22.322+11208080 31..00+00010495 51..1.+0000+000 87..10+00002150 81..00+00514345 82..00+00443039 83..00-00002448 71....+00000080 32..10+00010307 
+110602+00000970 21.322+28677570 22.322+11173690 31..00+00010596 51..1.+0000+000 87..10+00002150 81..00+00514259 82..00+00442911 83..00-00002410 71....+00000080 32..10+00010416 
+110603+00000971 21.322+28754180 22.322+11163910 31..00+00010561 51..1.+0000+000 87..10+00002150 81..00+00514265 82..00+00443040 83..00-00002388 71....+00000080 32..10+00010385 
+110604+00000972 21.322+28800200 22.322+11189140 31..00+00010600 51..1.+0000+000 87..10+00002150 81..00+00514221 82..00+00443108 83..00-00002436 71....+00000080 32..10+00010415 
+110605+00000973 21.322+28752940 22.322+11176530 31..00+00010727 51..1.+0000+000 87..10+00002150 81..00+00514109 82..00+00443007 83..00-00002439 71....+00000080 32..10+00010544 
+110606+00000974 21.322+28709360 22.322+11168480 31..00+00010668 51..1.+0000+000 87..10+00002150 81..00+00514178 82..00+00442947 83..00-00002415 71....+00000080 32..10+00010489 
+110607+00000975 21.322+28923620 22.322+11179230 31..00+00010634 51..1.+0000+000 87..10+00002150 81..00+00514149 82..00+00443300 83..00-00002426 71....+00000080 32..10+00010452 
+110608+00000976 21.322+28850840 22.322+11190140 31..00+00010541 51..1.+0000+000 87..10+00002150 81..00+00514262 82..00+00443199 83..00-00002427 71....+00000080 32..10+00010358 
+110609+00000977 21.322+28900290 22.322+11220800 31..00+00010441 51..1.+0000+000 87..10+00002150 81..00+00514354 82..00+00443297 83..00-00002458 71....+00000080 32..10+00010250 
+110610+00000978 21.322+28916820 22.322+11125320 31..00+00010532 51..1.+0000+000 87..10+00002150 81..00+00514234 82..00+00443303 83..00-00002320 71....+00000080 32..10+00010368 
+110611+00000979 21.322+29064110 22.322+11210710 31..00+00010626 51..1.+0000+000 87..10+00002150 81..00+00514130 82..00+00443531 83..00-00002477 71....+00000080 32..10+00010434 
+110612+00000980 21.322+29293460 22.322+11157400 31..00+00010361 51..1.+0000+000 87..10+00002150 81..00+00514324 82..00+00443930 83..00-00002341 71....+00000080 32..10+00010190 
+110613+00000981 21.322+29225160 22.322+11203420 31..00+00010169 51..1.+0000+000 87..10+00002150 81..00+00514538 82..00+00443846 83..00-00002379 71....+00000080 32..10+00009988 
+110614+00000982 21.322+29071560 22.322+11228690 31..00+00010296 51..1.+0000+000 87..10+00002150 81..00+00514454 82..00+00443591 83..00-00002443 71....+00000080 32..10+00010105 
+110615+00000983 21.322+29008740 22.322+11209770 31..00+00010264 51..1.+0000+000 87..10+00002150 81..00+00514495 82..00+00443496 83..00-00002407 71....+00000080 32..10+00010079 
+110616+00000984 21.322+29065140 22.322+11133340 31..00+00010966 51..1.+0000+000 87..10+00002150 81..00+00513775 82..00+00443480 83..00-00002410 71....+00000080 32..10+00010793 
+110617+00000985 21.322+29265720 22.322+11108490 31..00+00010920 51..1.+0000+000 87..10+00002150 81..00+00513768 82..00+00443821 83..00-00002360 71....+00000080 32..10+00010755 
+110618+00000986 21.322+29191090 22.322+11178800 31..00+00010636 51..1.+0000+000 87..10+00002150 81..00+00514082 82..00+00443734 83..00-00002426 71....+00000080 32..10+00010454 
+110619+00000987 21.322+29052680 22.322+11172680 31..00+00010784 51..1.+0000+000 87..10+00002150 81..00+00513968 82..00+00443487 83..00-00002443 71....+00000080 32..10+00010601 
+110620+00000988 21.322+28591870 22.322+11166120 31..00+00010742 51..1.+0000+000 87..10+00002150 81..00+00514147 82..00+00442742 83..00-00002425 71....+00000080 32..10+00010562 
+110621+00000989 21.322+28675130 22.322+11161640 31..00+00010703 51..1.+0000+000 87..10+00002150 81..00+00514154 82..00+00442884 83..00-00002410 71....+00000080 32..10+00010525 
+110622+00000990 21.322+28749420 22.322+11185150 31..00+00010802 51..1.+0000+000 87..10+00002150 81..00+00514041 82..00+00442987 83..00-00002467 71....+00000080 32..10+00010615 
+110623+00000991 21.322+28604120 22.322+11085190 31..00+00010915 51..1.+0000+000 87..10+00002150 81..00+00513953 82..00+00442719 83..00-00002319 71....+00000080 32..10+00010756 
+110624+00001100 21.322+36729970 22.322+10615250 31..00+00013907 51..1.+0000+000 87..10+00001500 81..00+00517387 82..00+00457379 83..00-00001079 71....+000MKB12 32..10+00013842 
+110625+00001101 21.322+37135420 22.322+10656180 31..00+00013589 51..1.+0000+000 87..10+00001500 81..00+00518309 82..00+00457494 83..00-00001136 71....+000MKB13 32..10+00013517 
+110626+00001102 21.322+37132680 22.322+10656220 31..00+00013604 51..1.+0000+000 87..10+00001500 81..00+00518298 82..00+00457505 83..00-00001137 71....+000MKB13 32..10+00013532 
+110627+00001103 21.322+36595790 22.322+10682950 31..00+00013200 51..1.+0000+000 87..10+00001500 81..00+00517501 82..00+00456615 83..00-00001151 71....+000MKB14 32..10+00013124 
+110628+00001104 21.322+37020580 22.322+10699770 31..00+00012841 51..1.+0000+000 87..10+00001500 81..00+00518431 82..00+00456713 83..00-00001146 71....+000MKB15 32..10+00012763 
+110629+00001105 21.322+32031500 22.322+10245790 31..00+00027144 51..1.+0000+000 87..10+00001300 81..00+00498434 82..00+00453832 83..00-00000585 71....+00000070 32..10+00027124 
+110630+00001106 21.322+36304960 22.322+10689010 31..00+00014667 51..1.+0000+000 87..10+00001300 81..00+00516193 82..00+00457516 83..00-00001122 71....+00000035 32..10+00014581 
+110631+00001107 21.322+36248940 22.322+10834340 31..00+00013587 51..1.+0000+000 87..10+00001300 81..00+00516703 82..00+00456522 83..00-00001313 71....+00000035 32..10+00013470 
+110632+00001108 21.322+36244930 22.322+10852090 31..00+00012817 51..1.+0000+000 87..10+00001300 81..00+00517123 82..00+00455879 83..00-00001248 71....+00000035 32..10+00012703 
+110633+00001109 21.322+36081130 22.322+10941530 31..00+00012422 51..1.+0000+000 87..10+00001300 81..00+00517094 82..00+00455353 83..00-00001368 71....+00000035 32..10+00012286 
+110634+00001110 21.322+35943760 22.322+10792090 31..00+00011635 51..1.+0000+000 87..10+00001700 81..00+00517320 82..00+00454602 83..00-00001381 71....+00000035 32..10+00011545 
+110635+00001111 21.322+35706770 22.322+10770400 31..00+00011337 51..1.+0000+000 87..10+00001900 81..00+00517161 82..00+00454113 83..00-00001506 71....+00000035 32..10+00011254 
+110636+00001112 21.322+35984580 22.322+10642690 31..00+00010218 51..1.+0000+000 87..10+00001900 81..00+00518194 82..00+00453532 83..00-00001167 71....+00000035 32..10+00010166 
+110637+00001113 21.322+36342250 22.322+10580860 31..00+00008998 51..1.+0000+000 87..10+00001900 81..00+00519319 82..00+00452845 83..00-00000957 71....+00000035 32..10+00008961 
+110638+00001114 21.322+35346860 22.322+11184330 31..00+00007769 51..1.+0000+000 87..10+00001300 81..00+00519092 82..00+00451007 83..00-00000975 71....+00000035 32..10+00007635 
+110639+00001115 21.322+33843330 22.322+11101020 31..00+00006670 51..1.+0000+000 87..10+00001300 81..00+00518779 82..00+00449053 83..00-00000685 71....+00000035 32..10+00006571 
+110640+00001116 21.322+32282800 22.322+10996400 31..00+00006207 51..1.+0000+000 87..10+00001300 81..00+00518447 82..00+00447474 83..00-00000505 71....+00000035 32..10+00006131 
+110641+00001117 21.322+30968290 22.322+11112480 31..00+00006640 51..1.+0000+000 87..10+00001300 81..00+00517725 82..00+00446313 83..00-00000692 71....+00000035 32..10+00006539 
+110642+00001118 21.322+30482380 22.322+11257030 31..00+00007614 51..1.+0000+000 87..10+00001300 81..00+00516744 82..00+00445888 83..00-00001031 71....+00000035 32..10+00007466 
+110643+00001119 21.322+29219930 22.322+11113560 31..00+00008585 51..1.+0000+000 87..10+00001900 81..00+00515798 82..00+00444289 83..00-00001632 71....+00000035 32..10+00008454 
+110644+00001120 21.322+28655080 22.322+11141430 31..00+00009223 51..1.+0000+000 87..10+00001900 81..00+00515316 82..00+00443420 83..00-00001782 71....+00000035 32..10+00009075 
+110645+00001121 21.322+27371370 22.322+11500310 31..00+00010059 51..1.+0000+000 87..10+00001550 81..00+00515230 82..00+00441398 83..00-00002136 71....+00000035 32..10+00009780 
+110646+00001122 21.322+27691730 22.322+11473230 31..00+00013104 51..1.+0000+000 87..10+00001550 81..00+00512263 82..00+00440799 83..00-00002793 71....+00000035 32..10+00012755 
+110647+00001123 21.322+28397060 22.322+11308920 31..00+00012973 51..1.+0000+000 87..10+00001300 81..00+00511889 82..00+00442159 83..00-00002186 71....+00000035 32..10+00012700 
+110648+00001124 21.322+29000870 22.322+11102760 31..00+00012260 51..1.+0000+000 87..10+00001400 81..00+00512260 82..00+00443435 83..00-00001751 71....+00000035 32..10+00012077 
+110649+00001125 21.322+29978720 22.322+11105070 31..00+00011475 51..1.+0000+000 87..10+00001400 81..00+00512886 82..00+00445285 83..00-00001619 71....+00000035 32..10+00011303 
+110650+00001126 21.322+30745680 22.322+10801410 31..00+00010614 51..1.+0000+000 87..10+00001850 81..00+00513731 82..00+00446553 83..00-00001420 71....+00000035 32..10+00010530 
+110651+00001127 21.322+32152390 22.322+10837970 31..00+00009861 51..1.+0000+000 87..10+00001850 81..00+00514966 82..00+00448565 83..00-00001382 71....+00000035 32..10+00009776 
+110652+00001128 21.322+32793050 22.322+10926570 31..00+00009069 51..1.+0000+000 87..10+00001850 81..00+00516065 82..00+00449134 83..00-00001403 71....+00000035 32..10+00008973 
+110653+00001129 21.322+33257480 22.322+11328300 31..00+00009016 51..1.+0000+000 87..10+00001300 81..00+00516498 82..00+00449641 83..00-00001405 71....+00000035 32..10+00008820 
+110654+00001130 21.322+33618020 22.322+11178880 31..00+00010214 51..1.+0000+000 87..10+00001300 81..00+00515727 82..00+00450726 83..00-00001418 71....+00000035 32..10+00010040 
+110655+00001131 21.322+34184540 22.322+10988290 31..00+00011060 51..1.+0000+000 87..10+00001300 81..00+00515538 82..00+00451999 83..00-00001248 71....+00000035 32..10+00010927 
+110656+00001132 21.322+34689150 22.322+10879870 31..00+00011496 51..1.+0000+000 87..10+00001300 81..00+00515754 82..00+00452971 83..00-00001121 71....+00000035 32..10+00011386 
+110657+00001133 21.322+35201770 22.322+11088120 31..00+00012063 51..1.+0000+000 87..10+00001300 81..00+00516054 82..00+00453990 83..00-00001589 71....+00000035 32..10+00011887 
+110658+00001134 21.322+35394450 22.322+10940290 31..00+00012816 51..1.+0000+000 87..10+00001300 81..00+00515798 82..00+00454824 83..00-00001424 71....+00000035 32..10+00012676 
+110659+00001135 21.322+35368920 22.322+10900400 31..00+00013591 51..1.+0000+000 87..10+00001300 81..00+00515241 82..00+00455372 83..00-00001453 71....+00000035 32..10+00013456 
+110660+00001136 21.322+35210700 22.322+10658260 31..00+00014693 51..1.+0000+000 87..10+00001530 81..00+00514202 82..00+00455993 83..00-00001284 71....+00000035 32..10+00014615 
+110661+00001137 21.322+35125750 22.322+10630300 31..00+00015895 51..1.+0000+000 87..10+00001450 81..00+00513227 82..00+00456726 83..00-00001259 71....+00000035 32..10+00015818 
+110662+00001138 21.322+34762140 22.322+10500100 31..00+00017375 51..1.+0000+000 87..10+00001450 81..00+00511492 82..00+00457104 83..00-00001051 71....+00000035 32..10+00017321 
+110663+00001139 21.322+35352730 22.322+10853570 31..00+00014206 51..1.+0000+000 87..10+00001300 81..00+00514800 82..00+00455814 83..00-00001437 71....+00000035 32..10+00014079 
+110664+00001140 21.322+35441570 22.322+11049770 31..00+00013369 51..1.+0000+000 87..10+00001300 81..00+00515532 82..00+00455272 83..00-00001732 71....+00000035 32..10+00013188 
+110665+00001141 21.322+35448230 22.322+11122170 31..00+00012610 51..1.+0000+000 87..10+00001300 81..00+00516049 82..00+00454697 83..00-00001749 71....+00000035 32..10+00012415 
+110666+00001142 21.322+35260230 22.322+11215850 31..00+00011910 51..1.+0000+000 87..10+00001300 81..00+00516265 82..00+00453922 83..00-00001798 71....+00000035 32..10+00011694 
+110667+00001143 21.322+35074980 22.322+11359690 31..00+00011629 51..1.+0000+000 87..10+00001300 81..00+00516248 82..00+00453452 83..00-00002002 71....+00000035 32..10+00011364 
+110668+00001144 21.322+34698530 22.322+11385340 31..00+00011336 51..1.+0000+000 87..10+00001300 81..00+00516000 82..00+00452770 83..00-00001985 71....+00000035 32..10+00011069 
+110669+00001145 21.322+34280730 22.322+11448410 31..00+00010712 51..1.+0000+000 87..10+00001300 81..00+00516024 82..00+00451823 83..00-00001954 71....+00000035 32..10+00010436 
+110670+00001146 21.322+33880380 22.322+11334230 31..00+00010621 51..1.+0000+000 87..10+00001300 81..00+00515671 82..00+00451270 83..00-00001747 71....+00000035 32..10+00010389 
+110671+00001147 21.322+33636650 22.322+11538900 31..00+00010126 51..1.+0000+000 87..10+00001300 81..00+00515918 82..00+00450638 83..00-00001962 71....+00000035 32..10+00009832 
+110672+00001148 21.322+33636740 22.322+11538900 31..00+00010143 51..1.+0000+000 87..10+00001300 81..00+00515904 82..00+00450647 83..00-00001966 71....+00000035 32..10+00009848 
+110673+00001149 21.322+33499570 22.322+11479940 31..00+00009225 51..1.+0000+000 87..10+00001700 81..00+00516534 82..00+00450013 83..00-00002063 71....+00000035 32..10+00008977 
+110674+00001150 21.322+32796290 22.322+11541040 31..00+00008740 51..1.+0000+000 87..10+00001700 81..00+00516509 82..00+00448931 83..00-00002033 71....+00000035 32..10+00008485 
+110675+00001151 21.322+31993800 22.322+11417700 31..00+00009208 51..1.+0000+000 87..10+00001700 81..00+00515645 82..00+00448089 83..00-00001971 71....+00000035 32..10+00008980 
+110676+00001152 21.322+30488560 22.322+11101860 31..00+00010132 51..1.+0000+000 87..10+00002150 81..00+00514237 82..00+00446088 83..00-00002132 71....+00000035 32..10+00009981 
+110677+00001153 21.322+29672910 22.322+11050060 31..00+00010800 51..1.+0000+000 87..10+00002150 81..00+00513550 82..00+00444776 83..00-00002161 71....+00000035 32..10+00010653 
+110678+00001154 21.322+28989290 22.322+11116170 31..00+00011342 51..1.+0000+000 87..10+00002150 81..00+00513160 82..00+00443557 83..00-00002366 71....+00000035 32..10+00011169 
+110679+00001155 21.322+28564300 22.322+11101240 31..00+00012055 51..1.+0000+000 87..10+00002150 81..00+00512614 82..00+00442667 83..00-00002462 71....+00000035 32..10+00011875 
+110680+00001156 21.322+28095110 22.322+11281100 31..00+00012692 51..1.+0000+000 87..10+00002150 81..00+00512305 82..00+00441657 83..00-00002924 71....+00000035 32..10+00012436 
+110681+00001157 21.322+28106680 22.322+11281030 31..00+00012681 51..1.+0000+000 87..10+00002150 81..00+00512309 82..00+00441681 83..00-00002922 71....+00000035 32..10+00012425 
+110682+00001158 21.322+27529000 22.322+11483730 31..00+00011303 51..1.+0000+000 87..10+00002000 81..00+00514009 82..00+00441160 83..00-00002848 71....+00000035 32..10+00010998 
+110683+00001159 21.322+28857550 22.322+11362060 31..00+00009672 51..1.+0000+000 87..10+00002000 81..00+00514889 82..00+00443636 83..00-00002291 71....+00000035 32..10+00009451 
+110684+00001160 21.322+29995180 22.322+11253800 31..00+00008324 51..1.+0000+000 87..10+00002150 81..00+00516025 82..00+00445316 83..00-00002016 71....+00000035 32..10+00008163 
+110685+00001161 21.322+31041640 22.322+11366460 31..00+00007848 51..1.+0000+000 87..10+00002150 81..00+00516623 82..00+00446572 83..00-00002059 71....+00000035 32..10+00007668 
+110686+00001162 21.322+32605100 22.322+11170610 31..00+00007047 51..1.+0000+000 87..10+00002150 81..00+00517832 82..00+00448079 83..00-00001676 71....+00000035 32..10+00006928 
+110687+00001163 21.322+33874370 22.322+11149760 31..00+00007574 51..1.+0000+000 87..10+00002150 81..00+00518076 82..00+00449582 83..00-00001748 71....+00000035 32..10+00007450 
+110688+00001164 21.322+35152440 22.322+11279350 31..00+00009151 51..1.+0000+000 87..10+00001850 81..00+00518002 82..00+00451813 83..00-00001914 71....+00000035 32..10+00008967 
+110689+00001165 21.322+35481470 22.322+11464170 31..00+00010141 51..1.+0000+000 87..10+00001350 81..00+00517754 82..00+00452812 83..00-00001899 71....+00000035 32..10+00009874 
+110690+00001166 21.322+35508090 22.322+11332290 31..00+00011170 51..1.+0000+000 87..10+00001350 81..00+00517103 82..00+00453640 83..00-00001908 71....+00000035 32..10+00010927 
+110691+00001167 21.322+35600180 22.322+11170070 31..00+00011769 51..1.+0000+000 87..10+00001350 81..00+00516813 82..00+00454238 83..00-00001738 71....+00000035 32..10+00011571 
+110692+00001168 21.322+35885110 22.322+11123600 31..00+00012381 51..1.+0000+000 87..10+00001350 81..00+00516847 82..00+00455053 83..00-00001761 71....+00000035 32..10+00012189 
+110693+00001169 21.322+35898320 22.322+11023870 31..00+00013243 51..1.+0000+000 87..10+00001350 81..00+00516337 82..00+00455774 83..00-00001708 71....+00000035 32..10+00013072 
+110694+00001170 21.322+35707960 22.322+10995530 31..00+00013823 51..1.+0000+000 87..10+00001350 81..00+00515665 82..00+00455990 83..00-00001740 71....+00000035 32..10+00013654 
+110695+00001171 21.322+35563210 22.322+10847760 31..00+00014164 51..1.+0000+000 87..10+00001350 81..00+00515178 82..00+00456088 83..00-00001468 71....+00000035 32..10+00014039 
+110696+00001172 21.322+34306800 22.322+11254810 31..00+00010236 51..1.+0000+000 87..10+00001300 81..00+00516362 82..00+00451607 83..00-00001542 71....+00000055 32..10+00010037 
+110697+00001173 21.322+34453250 22.322+11255750 31..00+00010245 51..1.+0000+000 87..10+00001300 81..00+00516502 82..00+00451791 83..00-00001545 71....+00000055 32..10+00010046 
+110698+00001174 21.322+34280570 22.322+11222230 31..00+00010875 51..1.+0000+000 87..10+00001300 81..00+00515837 82..00+00451972 83..00-00001613 71....+00000055 32..10+00010675 
+110699+00001175 21.322+34446340 22.322+11165980 31..00+00011171 51..1.+0000+000 87..10+00001300 81..00+00515776 82..00+00452386 83..00-00001572 71....+00000055 32..10+00010984 
diff --git a/sample_data/sokkia_sdr33.tops b/sample_data/sokkia_sdr33.tops
new file mode 100644
index 0000000..ea68d6f
--- /dev/null
+++ b/sample_data/sokkia_sdr33.tops
@@ -0,0 +1,22 @@
+
+00NMSDR33 V04-04.02     00-000-00 00:00 211111
+10NMJOB3            121111
+06NM1.00000000      
+01NM:SET5F V01-00    020078                      31                                0.00000000      
+13PCP.C. mm Applied:-30.000                                     
+02TP        00000031509.97000000    937.27400000    20.05300000     1.50500000      11              
+03NM1.60000000      
+08TP        00000009510.50400000    908.83800000    19.69900000     11              
+08TP        00000010510.40000000    907.75700000    19.48700000     11              
+08TP        00000011510.37900000    906.92000000    19.26200000     11              
+08TP        00000012509.57000000    907.92000000    19.52300000     11              
+08TP        00000013508.50000000    907.19200000    19.39700000     11              
+08TP        00000014508.29700000    909.81900000    19.48900000     11              
+08TP        00000015508.66400000    912.12900000    19.53600000     11              
+08TP        00000016507.17700000    911.62800000    19.40700000     11              
+08TP        00000017506.16600000    911.56500000    19.22600000     11              
+08TP        00000018506.76100000    914.19200000    19.45000000     11              
+08TP        00000019505.97500000    915.79100000    19.44000000     11              
+08TP        00000020506.79700000    915.51400000    19.55600000     11                           
+58903
+
diff --git a/scripts/totalopenstation-cli-connector.py b/scripts/totalopenstation-cli-connector.py
index 05d830e..1dd07bc 100755
--- a/scripts/totalopenstation-cli-connector.py
+++ b/scripts/totalopenstation-cli-connector.py
@@ -54,7 +54,10 @@ parser.add_option("-o",
 
 (options, args) = parser.parse_args()
 
-modelclass = BUILTIN_INPUT_FORMATS[options.model]
+if not (options.model and options.port):
+    sys.exit("Please specify your model and the port to download from")
+
+modelclass = BUILTIN_MODELS[options.model]
 
 # import input format parser
 if isinstance(modelclass, tuple):
@@ -67,7 +70,11 @@ if isinstance(modelclass, tuple):
         sys.exit(_('Error loading the required model module: %s' % msg))
 
 station = modelclass(options.port)
-station.open()
+try:
+    station.close()  # sometimes the port will be already open for no reason
+    station.open()
+except serial.SerialException, detail:
+    sys.exit(detail)
 
 print "Now you can start download from %s device" % options.model
 
diff --git a/scripts/totalopenstation-cli-parser.py b/scripts/totalopenstation-cli-parser.py
index cac5be9..6d574bd 100755
--- a/scripts/totalopenstation-cli-parser.py
+++ b/scripts/totalopenstation-cli-parser.py
@@ -1,7 +1,7 @@
 #! /usr/bin/env python
 # -*- coding: utf-8 -*-
 # filename: totalopenstation-cli-parser.py
-# Copyright 2008-2009 Stefano Costa <steko at iosa.it>
+# Copyright 2008-2013 Stefano Costa <steko at iosa.it>
 
 # This file is part of Total Open Station.
 
@@ -22,6 +22,7 @@
 import sys
 import os
 import gettext
+import importlib
 
 from optparse import OptionParser
 
@@ -99,34 +100,47 @@ if options.list:
     sys.stdout.write(list_formats())
     sys.exit()
 
+def exit_with_error(message):
+    sys.exit(_("\nError:\n%(message)s\n\n%(formats)s") % {'message': message,
+                                                          'formats': list_formats()})
+
 if options.informat:
-    inputclass = BUILTIN_INPUT_FORMATS[options.informat]
-    if isinstance(inputclass, tuple):
-        try:
-            # builtin format parser
-            mod, cls, name = inputclass
-            inputclass = getattr(
-                __import__('totalopenstation.formats.' + mod, None, None, [cls]), cls)
-        except ImportError, message:
-            sys.exit(_("\nError:\n%s\n\n%s") % (message, list_formats()))
+    try:
+        inputclass = BUILTIN_INPUT_FORMATS[options.informat]
+    except KeyError, message:
+        exit_with_error(_('%s is not a valid input format') % message)
+    else:
+        if isinstance(inputclass, tuple):
+            try:
+                # builtin format parser
+                mod, cls, name = inputclass
+                inputclass = getattr(importlib.import_module('totalopenstation.formats.' + mod), cls)
+            except ImportError, message:
+                exit_with_error(message)
 else:
     sys.exit(_("Please specify an input format"))
 
 if options.outformat:
-    outputclass = BUILTIN_OUTPUT_FORMATS[options.outformat]
-    if isinstance(outputclass, tuple):
-        try:
-            # builtin output builder
-            mod, cls, name = outputclass
-            outputclass = getattr(
-                __import__('totalopenstation.output.' + mod, None, None, [cls]), cls)
-        except ImportError, message:
-            sys.exit(_("\nError:\n%s\n\n%s") % (message, list_formats()))
+    try:
+        outputclass = BUILTIN_OUTPUT_FORMATS[options.outformat]
+    except KeyError, message:
+        exit_with_error('%s is not a valid output format' % message)
+    else:
+        if isinstance(outputclass, tuple):
+            try:
+                # builtin output builder
+                mod, cls, name = outputclass
+                outputclass = getattr(importlib.import_module('totalopenstation.output.' + mod), cls)
+            except ImportError, message:
+                exit_with_error(message)
 
 if options.infile:
     infile = open(options.infile, 'r').read()
 else:
-    infile = sys.stdin.read()
+    if sys.stdin.isatty():
+        sys.exit(_('No input data!'))
+    else:
+        infile = sys.stdin.read()
 
 
 def main(infile):
diff --git a/scripts/totalopenstation-gui.py b/scripts/totalopenstation-gui.py
index 05d3470..ac14999 100755
--- a/scripts/totalopenstation-gui.py
+++ b/scripts/totalopenstation-gui.py
@@ -1,8 +1,8 @@
 #! /usr/bin/env python
 # -*- coding: utf-8 -*-
 # filename: totalopenstation-gui.py
-# Copyright 2008-2011 Stefano Costa <steko at iosa.it>
-# Copyright 2010 Luca Bianconi <luxetluc at yahoo.it>
+# Copyright 2008-2014 Stefano Costa <steko at iosa.it>
+# Copyright 2010,2012 Luca Bianconi <luxetluc at yahoo.it>
 #
 # This file is part of Total Open Station.
 #
@@ -119,12 +119,13 @@ class AboutDialog(tkSimpleDialog.Dialog):
     def body(self, master):
         title = "Total Open Station %s" % totalopenstation.__version__
         message = _("""
-Total Open Station is copyright 2008-2011 Luca Bianconi, Stefano Costa
-and the IOSA project.
+Total Open Station is copyright 2008-2015 Luca Bianconi, Stefano Costa
+and the IOSA project, under the GNU GPL v3 or any later version.
 
-http://tops.berlios.de/
+http://tops.iosa.it/
 
-The application logo is copyright 2008 Lapo Calamandrei.""")
+The application logo is copyright 2008 Lapo Calamandrei under the same
+license.""")
 
         self.logo_data = logo_data
         self.logo = PhotoImage(data=self.logo_data)
@@ -307,6 +308,10 @@ class ProcessDialog(tkSimpleDialog.Dialog):
             sd_file.write(output.process())
             sd_file.close()
 
+class PreferencesDialog(tkSimpleDialog.Dialog):
+    '''A dialog to change preferences and options.'''
+
+
 
 class ErrorDialog(tkSimpleDialog.Dialog):
 
@@ -359,6 +364,33 @@ class Tops:
         self.main_frame = Frame(parent) ###
         self.main_frame.pack(expand=YES, fill=BOTH)
 
+		#MENU
+        self.menubar = Menu(self.myParent)
+        self.myParent.config(menu=self.menubar)
+
+        topsmenu = Menu(self.menubar, tearoff=0)
+        topsmenu.add_command(label=_("Connect"), command=self.connect)
+        topsmenu.add_command(label=_("Process data"), command=self.process)
+        topsmenu.add_separator()
+        topsmenu.add_command(label=_("Quit"), command=self.on_app_close)
+
+        filemenu = Menu(self.menubar, tearoff=0)
+        filemenu.add_command(label=_("Open file"), command=self.open_a_file)
+        filemenu.add_command(label=_("Save raw data"), command=self.save_a_file)
+
+        helpmenu = Menu(self.menubar, tearoff=0)
+        helpmenu.add_command(label=_("About TOPS"), command=self.about)
+
+        languagemenu = Menu(self.menubar, tearoff=0)
+        language = StringVar()
+        languagemenu.add_radiobutton(label="English",variable=language,value="en")
+        languagemenu.add_radiobutton(label="Italiano",variable=language,value="it")
+
+        self.menubar.add_cascade(label="Total Station", menu=topsmenu)
+        self.menubar.add_cascade(label="File", menu=filemenu)
+        #self.menubar.add_cascade(label="Language", menu=languagemenu)
+        self.menubar.add_cascade(label="Help", menu=helpmenu)
+
         self.upper_frame = Frame(self.main_frame) ###
         self.upper_frame.pack(side=TOP, expand=NO, padx=10,
                                    pady=5, ipadx=5, ipady=5)
@@ -399,7 +431,7 @@ class Tops:
 
         self.option1_label = Label(self.option1_frame,
                                    text=_("Port"),
-                                   width=25)
+                                   width=30)
         self.option1_label.pack(side=LEFT)
         self.option1_value = StringVar()
         self.option1_value.set(self.upref.getvalue('port'))
@@ -408,7 +440,7 @@ class Tops:
 #
         self.option1_entry = Entry(self.option1_frame,
                                    textvariable=self.option1_value,
-                                   width=25)
+                                   width=20)
 
 # ... comment out this Menubutton if you want to use the scan() output
 #
@@ -438,7 +470,7 @@ class Tops:
         self.optionMODEL_label = Label(self.optionMODEL_frame,
                                    text=_("Total Station"),
                                    justify=LEFT,
-                                   width=25)
+                                   width=30)
         self.optionMODEL_label.pack(side=LEFT, anchor=E)
         self.optionMODEL_value = StringVar()
 
@@ -448,7 +480,7 @@ class Tops:
                                         text="choose a model",
                                         textvariable=self.optionMODEL_value,
                                         relief=RAISED,
-                                        width=24)
+                                        width=20)
         self.optionMODEL_entry.menu = Menu(self.optionMODEL_entry, tearoff=0)
         self.optionMODEL_entry["menu"] = self.optionMODEL_entry.menu
 
@@ -466,7 +498,7 @@ class Tops:
 
         self.option2_label = Label(self.option2_frame,
                                    text="Baudrate",
-                                   width=25)
+                                   width=30)
         self.option2_label.pack(side=LEFT)
         self.option2_value = IntVar()
 
@@ -476,13 +508,13 @@ class Tops:
         except (AttributeError, AssertionError):
             self.option2_entry = Entry(self.option2_frame,
                                        textvariable=self.option2_value,
-                                       width=25)
+                                       width=20)
         else:
             self.option2_entry = Menubutton(self.option2_frame,
                                             text=_("choose a value"),
                                             textvariable=self.option2_value,
                                             relief=RAISED,
-                                            width=24)
+                                            width=20)
             self.option2_entry.menu = Menu(self.option2_entry, tearoff=0)
             self.option2_entry["menu"] = self.option2_entry.menu
             for key in sorted(serial.baudrate_constants.keys()): # dynamic list
@@ -500,14 +532,14 @@ class Tops:
         self.option3_label = Label(self.option3_frame,
                                    text=_("Bytesize"),
                                    justify=LEFT,
-                                   width=25)
+                                   width=30)
         self.option3_label.pack(side=LEFT, anchor=E)
         self.option3_value = IntVar()
         self.option3_entry = Menubutton(self.option3_frame,
                                         text=_("choose a value"),
                                         textvariable=self.option3_value,
                                         relief=RAISED,
-                                        width=24)
+                                        width=20)
         self.option3_entry.menu = Menu(self.option3_entry, tearoff=0)
         self.option3_entry["menu"] = self.option3_entry.menu
         for v in [8,7,6,5]:
@@ -523,14 +555,14 @@ class Tops:
         self.option4_label = Label(self.option4_frame,
                                    text=_("Parity setting"),
                                    justify=LEFT,
-                                   width=25)
+                                   width=30)
         self.option4_label.pack(side=LEFT, anchor=E)
         self.option4_value = StringVar()
         self.option4_entry = Menubutton(self.option4_frame,
                                         text=_("choose a value"),
                                         textvariable=self.option4_value,
                                         relief=RAISED,
-                                        width=24)
+                                        width=20)
         self.option4_entry.menu = Menu(self.option4_entry, tearoff=0)
         self.option4_entry["menu"] = self.option4_entry.menu
         for v in ['Even', 'None', 'Odd']:
@@ -546,14 +578,14 @@ class Tops:
         self.option5_label = Label(self.option5_frame,
                                    text=_("Stop bit"),
                                    justify=LEFT,
-                                   width=25)
+                                   width=30)
         self.option5_label.pack(side=LEFT, anchor=E)
         self.option5_value = IntVar()
         self.option5_entry = Menubutton(self.option5_frame,
                                         text=_("choose a value"),
                                         textvariable=self.option5_value,
                                         relief=RAISED,
-                                        width=24)
+                                        width=20)
         self.option5_entry.menu = Menu(self.option5_entry, tearoff=0)
         self.option5_entry["menu"] = self.option5_entry.menu
         for v in [1, 2]:
@@ -562,26 +594,34 @@ class Tops:
                                                     value=v)
         self.option5_entry.pack(side=LEFT, anchor=W)
 
+        # option 6 : time lapse between data packets
+        self.option6_frame = Frame(self.control_panel, relief=RIDGE, bd=1)
+        self.option6_frame.pack(side=TOP)
+
+        self.option6_label = Label(self.option6_frame,
+                                   text=_("Time lapse between data packets"),
+                                   justify=LEFT,
+                                   width=30)
+        self.option6_label.pack(side=LEFT, anchor=E)
+        self.option6_value = DoubleVar()
+        self.option6_value.set(self.upref.getvalue('sleeptime'))
+        self.option6_entry = Entry(self.option6_frame,
+                                   textvariable=self.option6_value,
+                                   relief=RAISED,
+                                   justify=RIGHT,
+                                   width=20)
+        self.option6_entry.pack(side=LEFT, anchor=W)
 
         # control buttons
 
         self.connect_button = Button(self.buttons_frame,
                                       text=_("Connect"),
-                                      background="green",
                                       padx=imb_buttonx,
                                       pady=imb_buttony)
         self.connect_button.pack(side=LEFT, anchor=S)
         self.connect_button.bind("<Button-1>", self.connect_action)
         self.connect_button.bind("<Return>", self.connect_action)
 
-        self.open_button = Button(self.buttons_frame,
-                                      text=_("Open file"),
-                                      padx=imb_buttonx,
-                                      pady=imb_buttony)
-        self.open_button.pack(side=LEFT, anchor=S)
-        self.open_button.bind("<Button-1>", self.open_action)
-        self.open_button.bind("<Return>", self.open_action)
-
         self.save_button = Button(self.buttons_frame,
                                       text=_("Save raw data"),
                                       padx=imb_buttonx,
@@ -592,29 +632,12 @@ class Tops:
 
         self.process_button = Button(self.buttons_frame,
                                      text=_("Process data"),
-                                     background="cyan",
                                      padx=imb_buttonx,
                                      pady=imb_buttony)
         self.process_button.pack(side=LEFT, anchor=S)
         self.process_button.bind("<Button-1>", self.process_action)
         self.process_button.bind("<Return>", self.process_action)
 
-        self.about_button = Button(self.buttons_frame,
-                                   text=_("About TOPS"),
-                                   padx=imb_buttonx,
-                                   pady=imb_buttony)
-        self.about_button.pack(side=LEFT, anchor=S)
-        self.about_button.bind("<Button-1>", self.about_action)
-        self.about_button.bind("<Return>", self.about_action)
-
-        self.exit_button = Button(self.buttons_frame,
-                                  text=_("Quit"),
-                                  padx=imb_buttonx,
-                                  pady=imb_buttony)
-        self.exit_button.pack(side=LEFT, anchor=S)
-        self.exit_button.bind("<Button-1>", self.exit_action)
-        self.exit_button.bind("<Return>", self.exit_action)
-
         self.status = StatusBar(self.main_frame)
         self.status.set('Welcome to Total Open Station')
         self.status.pack(side=BOTTOM, fill=X)
@@ -633,9 +656,26 @@ class Tops:
         self.text_area['yscrollcommand'] = self.scrollY.set
         self.scrollY.pack(side=RIGHT, expand=YES, fill=Y, anchor=W)
 
+        # init stuff
+        self.myParent.title("Total Open Station")
+        self.myParent.protocol("WM_DELETE_WINDOW", self.on_app_close)
+        self.print_model()
+        self.myParent.mainloop()
+
+    def on_click_language(self):
+        '''
+            open select language dialog
+        '''
+        pass
+
+    def on_app_close(self):
+        '''Callback function to ask confirmation before quitting the application.'''
+
+        if askokcancel("Quit","Do you really want to quit application ?"):
+            self.myParent.destroy()
 
     def exit_action(self, event):
-        self.myParent.destroy()
+        self.on_app_close()
 
     def print_model(self):
         model = self.optionMODEL_value.get()
@@ -656,7 +696,7 @@ class Tops:
                                     ipadx=5,
                                     ipady=5)
 
-    def connect_action(self, event):
+    def connect(self):
 
         chosen_model = self.optionMODEL_value.get()
         chosen_port = self.option1_value.get()
@@ -684,33 +724,40 @@ class Tops:
                 except ImportError, msg:
                     showwarning(_('Import error'),
                                 _('Error loading the required model module: %s' % msg))
-                if True:#self.options:
-                    mc = modelclass(chosen_port, **self.options)
+
+                mc = modelclass(chosen_port, **self.options)
+
                 try:
+                    mc.close()  # sometimes the port will be already open for no reason
                     mc.open()
                 except serial.SerialException, detail:
                     e = ErrorDialog(self.myParent, detail)
                 else:
                     st = DownloadDialog(self.myParent)
+                    sleeptime = self.option6_value.get()
                     if st.result:
                         self.status.set(_("Waiting for data: please start transfer from your total station menu."))
                         while mc.inWaiting() == 0:
-                            sleep(0.1)
+                            sleep(sleeptime)
                         n = mc.inWaiting()
                         result = mc.read(n)
                         self.replace_text(str(result))
-                        sleep(0.1)
+                        sleep(sleeptime)
+
                         while mc.inWaiting() > 0:
                             newdata = mc.read(mc.inWaiting())
                             result += newdata
                             self.status.set(_('Downloaded %d bytes'), len(result))
                             self.replace_text(str(result))
-                            sleep(0.3) # TODO determine sleep time from baudrate
+                            sleep(sleeptime) # TODO determine sleep time from baudrate
                         mc.close()
                         showinfo(_('Success!'),
                                  _('Download finished!\nYou have %d bytes of data.') % len(result))
 
-    def open_action(self, event):
+    def connect_action(self, event):
+        self.connect()
+
+    def open_a_file(self):
         try:
             d = tkFileDialog.askopenfilename()
             of = open(d, 'r')
@@ -719,11 +766,17 @@ class Tops:
         except:
             pass
 
-    def process_action(self, event):
+    def open_action(self, event):
+        self.open_a_file()
+
+    def process(self):
         data = self.text_area.get("1.0", END)
         d = ProcessDialog(self.myParent, data)
 
-    def save_action(self, event):
+    def process_action(self, event):
+        self.process()
+
+    def save_a_file(self):
         try:
             sd = tkFileDialog.asksaveasfilename(defaultextension='.tops')
             data = self.text_area.get("1.0", END)
@@ -732,9 +785,15 @@ class Tops:
         except:
             pass
 
-    def about_action(self, event):
+    def save_action(self, event):
+        self.save_a_file()
+
+    def about(self):
         d = AboutDialog(self.myParent)
 
+    def about_action(self, event):
+        self.about()
+
     def replace_text(self, text):
         self.text_area.delete("1.0", END)
         self.text_area.insert(END, text.replace('\r', ''))
@@ -744,12 +803,12 @@ class Tops:
 
 root = Tk()
 Tops = Tops(root)
-root.title("Total Open Station")
-root.mainloop()
 
-#save user's preferences (model and port)
+
+#save user's preferences (model, port and sleeptime if custom model)
 
 atexit.register(Tops.upref.setvalues,
                 {'model': Tops.optionMODEL_value.get(),
-                 'port':Tops.option1_value.get()})
-
+                 'port': Tops.option1_value.get(),
+                 'sleeptime': Tops.option6_value.get(),
+                 })
diff --git a/setup.cfg b/setup.cfg
new file mode 100644
index 0000000..861a9f5
--- /dev/null
+++ b/setup.cfg
@@ -0,0 +1,5 @@
+[egg_info]
+tag_build = 
+tag_date = 0
+tag_svn_revision = 0
+
diff --git a/setup.py b/setup.py
index d4e5760..44c0a10 100644
--- a/setup.py
+++ b/setup.py
@@ -16,7 +16,7 @@ setup(
     description='Download and export survey data from your total station',
     long_description=open('README.txt').read(),
     classifiers=[
-        #'Development Status :: 4 - Beta',
+        'Development Status :: 4 - Beta',
         'Environment :: Console',
         'Environment :: X11 Applications',
         'Intended Audience :: End Users/Desktop',
diff --git a/totalopenstation.egg-info/PKG-INFO b/totalopenstation.egg-info/PKG-INFO
new file mode 100644
index 0000000..c1f3189
--- /dev/null
+++ b/totalopenstation.egg-info/PKG-INFO
@@ -0,0 +1,55 @@
+Metadata-Version: 1.1
+Name: totalopenstation
+Version: 0.3.1
+Summary: Download and export survey data from your total station
+Home-page: http://tops.iosa.it/
+Author: Stefano Costa
+Author-email: steko at iosa.it
+License: GNU GPLv3
+Description: ====================
+         Total Open Station
+        ====================
+        
+        Total Open Station (TOPS for friends) is a free software program for
+        downloading and processing data from total station devices, written in
+        the Python programming language.
+        
+        This is a task which is usually done by proprietary, dedicated and
+        Windows™-only software, but TOPS is different by nature, because:
+        
+        - it is *free/libre open source software*;
+        - it works on *any* operating system where Python is available;
+        - it is designed to support as many devices and formats as possible, all
+          within the same program, opposed to having one program per device.
+        
+        Every model has its own quirks, but TOPS uses a modular structure and
+        keeps the downloading of data logically separated from its processing,
+        thus enabling exporting data to a variety of output formats, even at a
+        later moment. Archiving of raw data is made easy by using plain text
+        files.
+        
+        The application icons are copyright by Lapo Calamandrei 2008, under the
+        same license as Total Open Station.
+        
+        Documentation
+        =============
+        
+        Documentation is available at in the ``docs`` subdirectory of this
+        package and online at http://totalopenstation.readthedocs.org/ with
+        an user guide, details on the application structure, supported models
+        and other interesting stuff.
+        
+Keywords: survey geodimeter
+Platform: UNKNOWN
+Classifier: Development Status :: 4 - Beta
+Classifier: Environment :: Console
+Classifier: Environment :: X11 Applications
+Classifier: Intended Audience :: End Users/Desktop
+Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.5
+Classifier: Programming Language :: Python :: 2.6
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Topic :: Scientific/Engineering :: GIS
diff --git a/totalopenstation.egg-info/SOURCES.txt b/totalopenstation.egg-info/SOURCES.txt
new file mode 100644
index 0000000..c1857cc
--- /dev/null
+++ b/totalopenstation.egg-info/SOURCES.txt
@@ -0,0 +1,112 @@
+AUTHORS
+COPYING.txt
+MANIFEST.in
+README.txt
+setup.py
+data/totalopenstation.desktop
+data/icons/16x16/totalopenstation.png
+data/icons/16x16/totalopenstation.svg
+data/icons/22x22/totalopenstation.png
+data/icons/22x22/totalopenstation.svg
+data/icons/24x24/totalopenstation.png
+data/icons/32x32/totalopenstation.png
+data/icons/32x32/totalopenstation.svg
+data/icons/48x48/totalopenstation.png
+data/icons/48x48/totalopenstation.svg
+docs/contributing.rst
+docs/faq.rst
+docs/formats.rst
+docs/getting_sample_data.rst
+docs/glossary.rst
+docs/index.rst
+docs/installing.rst
+docs/library.rst
+docs/models.rst
+docs/release.rst
+docs/roadmap.rst
+docs/running.rst
+docs/users.rst
+docs/input_formats/general.rst
+docs/input_formats/if_carlson_rw5.rst
+docs/input_formats/if_leica_gsi.rst
+docs/input_formats/if_leica_tcr_1205.rst
+docs/input_formats/if_nikon_raw_v200.rst
+docs/input_formats/if_sokkia_sdr33.rst
+docs/input_formats/if_trimble_are.rst
+docs/input_formats/if_zeiss_rec_500.rst
+docs/input_formats/new.rst
+docs/input_formats/other.rst
+docs/models/general.rst
+docs/models/model_leica_tcr_1205.rst
+docs/models/model_nikon_npl_350.rst
+docs/models/model_zeiss_elta_r55.rst
+docs/models/other.rst
+locale/de/LC_MESSAGES/messages.po
+locale/el/LC_MESSAGES/messages.po
+locale/es_ES/LC_MESSAGES/messages.po
+locale/fa/LC_MESSAGES/messages.po
+locale/fr/LC_MESSAGES/messages.po
+locale/it/LC_MESSAGES/messages.po
+locale/pl/LC_MESSAGES/messages.po
+locale/tr/LC_MESSAGES/messages.po
+sample_data/Leica1200.rw5
+sample_data/Leica1200.rw5.csv
+sample_data/leica_1205_1.txt
+sample_data/leica_tcr_1205
+sample_data/leica_tcr_705
+sample_data/nikon_npl_350
+sample_data/nikon_raw_v200.tops
+sample_data/sokkia_sdr33.tops
+sample_data/topcon_gts_229
+sample_data/zeiss_elta_r55
+sample_data/zeiss_elta_r55-R4.tops
+sample_data/zeiss_elta_r55-R5.tops
+sample_data/zeiss_elta_r55-REC_500.tops
+sample_data/zeiss_elta_r55-R_E.tops
+sample_data/leica_gsi/leica_gsi16_gurob.gsi
+sample_data/leica_gsi/leica_gsi8_ertola.gsi
+sample_data/trimble/BSG-08-11-19.are
+scripts/totalopenstation-cli-connector.py
+scripts/totalopenstation-cli-parser.py
+scripts/totalopenstation-gui.py
+totalopenstation/__init__.py
+totalopenstation.egg-info/PKG-INFO
+totalopenstation.egg-info/SOURCES.txt
+totalopenstation.egg-info/dependency_links.txt
+totalopenstation.egg-info/not-zip-safe
+totalopenstation.egg-info/requires.txt
+totalopenstation.egg-info/top_level.txt
+totalopenstation/formats/__init__.py
+totalopenstation/formats/carlson_rw5.py
+totalopenstation/formats/leica_gsi.py
+totalopenstation/formats/leica_tcr_1205.py
+totalopenstation/formats/leica_tcr_705.py
+totalopenstation/formats/nikon_raw_v200.py
+totalopenstation/formats/polar.py
+totalopenstation/formats/sokkia_sdr33.py
+totalopenstation/formats/topcon_gts.py
+totalopenstation/formats/trimble_are.py
+totalopenstation/formats/zeiss_rec_500.py
+totalopenstation/models/__init__.py
+totalopenstation/models/custom.py
+totalopenstation/models/leica_tcr_1205.py
+totalopenstation/models/leica_tcr_705.py
+totalopenstation/models/nikon_npl_350.py
+totalopenstation/models/trimble.py
+totalopenstation/models/zeiss_elta_r55.py
+totalopenstation/output/__init__.py
+totalopenstation/output/tops_csv.py
+totalopenstation/output/tops_dat.py
+totalopenstation/output/tops_dxf.py
+totalopenstation/output/tops_geojson.py
+totalopenstation/output/tops_sql.py
+totalopenstation/output/tops_txt.py
+totalopenstation/tests/__init__.py
+totalopenstation/tests/test_nikon.py
+totalopenstation/tests/test_polar.py
+totalopenstation/tests/test_rw5.py
+totalopenstation/tests/test_sokkia_sdr33.py
+totalopenstation/tests/test_zeiss.py
+totalopenstation/utils/__init__.py
+totalopenstation/utils/scanwin32.py
+totalopenstation/utils/upref.py
\ No newline at end of file
diff --git a/totalopenstation.egg-info/dependency_links.txt b/totalopenstation.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/totalopenstation.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/totalopenstation.egg-info/not-zip-safe b/totalopenstation.egg-info/not-zip-safe
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/totalopenstation.egg-info/not-zip-safe
@@ -0,0 +1 @@
+
diff --git a/totalopenstation.egg-info/requires.txt b/totalopenstation.egg-info/requires.txt
new file mode 100644
index 0000000..f6c1a1f
--- /dev/null
+++ b/totalopenstation.egg-info/requires.txt
@@ -0,0 +1 @@
+pyserial
diff --git a/totalopenstation.egg-info/top_level.txt b/totalopenstation.egg-info/top_level.txt
new file mode 100644
index 0000000..0923ad3
--- /dev/null
+++ b/totalopenstation.egg-info/top_level.txt
@@ -0,0 +1 @@
+totalopenstation
diff --git a/totalopenstation/__init__.py b/totalopenstation/__init__.py
index 0c04b20..10453df 100644
--- a/totalopenstation/__init__.py
+++ b/totalopenstation/__init__.py
@@ -1,24 +1,3 @@
 # -*- coding: utf-8 -*-
 
-# Copyright 2007-2011 by the Sphinx team http://sphinx.pocoo.org/
-
-from os import path
-
-__version__  = '0.3'
-
-package_dir = path.abspath(path.dirname(__file__))
-
-if '+' in __version__ or 'pre' in __version__:
-    # try to find out the changeset hash if checked out from hg, and append
-    # it to __version__ (since we use this value from setup.py, it gets
-    # automatically propagated to an installed copy as well)
-    try:
-        import subprocess
-        p = subprocess.Popen(['hg', 'id', '-i', '-R',
-                              path.join(package_dir, '..')],
-                             stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-        out, err = p.communicate()
-        if out:
-            __version__ += '/' + out.strip()
-    except Exception:
-        pass
+__version__  = '0.3.1'
diff --git a/totalopenstation/formats/__init__.py b/totalopenstation/formats/__init__.py
index 6f0174d..9393a52 100644
--- a/totalopenstation/formats/__init__.py
+++ b/totalopenstation/formats/__init__.py
@@ -80,10 +80,13 @@ class Parser:
 
 
 BUILTIN_INPUT_FORMATS = {
+    'carlson_rw5': ('carlson_rw5', 'FormatParser', 'Carlson RW5'),
+    'leica_gsi': ('leica_gsi', 'FormatParser', 'Leica GSI'),
+    'leica_tcr_705': ('leica_tcr_705', 'FormatParser', 'Leica TCR 705'),
     'leica_tcr_1205': ('leica_tcr_1205', 'FormatParser', 'Leica TCR 1205'),
-    'zeiss_rec_500': ('zeiss_rec_500', 'FormatParser', 'Zeiss REC 500'),
     'nikon_raw_v200': ('nikon_raw_v200', 'FormatParser','Nikon RAW V2.00'),
-    'leica_tcr_705': ('leica_tcr_705', 'FormatParser', 'Leica TCR 705'),
-    'trimble_are': ('trimble_are', 'FormatParser', 'Trimble AREA'),
+    'sokkia_sdr33': ('sokkia_sdr33', 'FormatParser', 'Sokkia SDR33'),
     'topcon_gts': ('topcon_gts', 'FormatParser', 'Topcon GTS'),
+    'trimble_are': ('trimble_are', 'FormatParser', 'Trimble AREA'),
+    'zeiss_rec_500': ('zeiss_rec_500', 'FormatParser', 'Zeiss REC 500'),
     }
diff --git a/totalopenstation/formats/carlson_rw5.py b/totalopenstation/formats/carlson_rw5.py
new file mode 100644
index 0000000..f9f0dbe
--- /dev/null
+++ b/totalopenstation/formats/carlson_rw5.py
@@ -0,0 +1,90 @@
+# -*- coding: utf-8 -*-
+# filename: formats/carlson_rw5.py
+# Copyright 2014 Stefano Costa <steko at iosa.it>
+
+# This file is part of Total Open Station.
+
+# Total Open Station is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# Total Open Station is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with Total Open Station.  If not, see
+# <http://www.gnu.org/licenses/>.
+
+from decimal import Decimal
+
+from .polar import BasePoint, PolarPoint
+
+
+class FormatParser:
+
+    def __init__(self, data):
+        self.rows = (r for r in data.splitlines() if not r.startswith('-- '))
+        # Text comments, but not comment records ------------------------^
+
+    def _points(self):
+        base_points = {}
+        points = []
+
+        def record(recstr):
+            fields = recstr.split(',')
+            record_fields = {f[0:2] : f[2:] for f in fields[1:]}
+
+            # Record type, including comment records
+            if len(fields[0]) > 2:
+                record_fields['type'] = fields[0].strip('-')
+                record_fields['comment'] = True
+            else:
+                record_fields['type'] = fields[0]
+
+            # Note field
+            try:
+                record_fields['--']
+            except KeyError:
+                record_fields['note'] = ''
+            else:
+                record_fields['note'] = record_fields['--']
+            return record_fields
+
+        for row in self.rows:
+            rec = record(row)
+            print(rec)
+            if rec['type'] == 'OC':
+                northing = float(rec['N ']) # extra whitespace
+                easting = float(rec['E '])  # extra whitespace
+                elevation = float(rec['EL'])
+                bp = BasePoint(x=easting, y=northing, z=elevation, ih=0)
+                base_points[rec['OP']] = bp
+            if rec['type'] == 'BK':
+                pid = rec['BP']
+            if rec['type'] == 'LS':
+                ih = float(rec['HI'])
+                th = float(rec['HR'])
+            if rec['type'] == 'SS':
+                pid = rec['FP']
+                angle = float(rec['AR'])
+                z_angle = float(rec['ZE'])
+                dist = float(rec['SD'])
+                desc = rec['note']
+                bp = base_points[rec['OP']]
+                bp.ih = ih
+                p = PolarPoint(dist=dist,
+                               angle=angle,
+                               z_angle=z_angle,
+                               th=th,
+                               angle_type='gon',
+                               base_point=bp,
+                               pid=pid,
+                               text=desc,
+                               coordorder='NEZ')
+                points.append(p.to_point().tuplepoint)
+        return points
+
+    points = property(_points)
diff --git a/totalopenstation/formats/leica_gsi.py b/totalopenstation/formats/leica_gsi.py
new file mode 100644
index 0000000..96dcfaf
--- /dev/null
+++ b/totalopenstation/formats/leica_gsi.py
@@ -0,0 +1,84 @@
+# -*- coding: utf-8 -*-
+# filename: formats/leica_gsi.py
+# Copyright 2012 Stefano Costa <steko at iosa.it>
+
+# This file is part of Total Open Station.
+
+# Total Open Station is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# Total Open Station is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with Total Open Station.  If not, see
+# <http://www.gnu.org/licenses/>.
+
+from . import Parser, Point
+from polar import BasePoint, PolarPoint
+
+
+class FormatParser(Parser):
+
+    def is_point(self, line):
+
+        # apparently GSI files are very "clean", and all lines contain data
+        return True
+
+    def get_point(self, line):
+        '''Extract GSI data.
+
+        Based on the "GSI ONLINE for Leica TPS" document.'''
+
+        tokens = line.split()
+        tdict = {}
+        for t in tokens:
+            t = t.lstrip('*')
+            data = {
+                'wordindex': t[0:2],
+                'info': t[2:6],
+                'sign': t[6],
+                'data': t[7:],
+                }
+            tdict[data['wordindex']] = data
+
+        try:
+            pid = tdict['11']['info']
+            text = tdict['11']['data'].lstrip('0')
+        except KeyError:
+            return None
+        try:
+            x = tdict['81']['sign'] + tdict['81']['data']
+            y = tdict['82']['sign'] + tdict['82']['data']
+            z = tdict['83']['sign'] + tdict['83']['data']
+        except KeyError:
+            try:
+                #angle_type = tdict['21']['info']
+                angle = float(tdict['21']['sign'] + tdict['21']['data'])/100000
+                z_angle = float(tdict['22']['sign'] + tdict['22']['data'])/100000
+                dist = float(tdict['31']['sign'] + tdict['31']['data'])/1000
+                th = float(tdict['87']['sign'] + tdict['87']['data'])/1000
+                ih = float(tdict['88']['sign'] + tdict['88']['data'])/1000
+            except KeyError:
+                return None
+            else:
+                bp = BasePoint(x=0.0, y=0.0, z=0.0, ih=ih)
+                p = PolarPoint(dist=dist,
+                               angle=angle,
+                               z_angle=z_angle,
+                               th=th,
+                               angle_type='deg',
+                               base_point=bp,
+                               pid=pid,
+                               text=text,
+                               coordorder='NEZ'
+                               )
+                return p.to_point()
+        else:
+            x, y, z = [float(c)/1000 for c in (x, y, z)]
+            p = Point(pid, x, y, z, text)
+            return p
diff --git a/totalopenstation/formats/nikon_raw_v200.py b/totalopenstation/formats/nikon_raw_v200.py
index 62a8e0e..fe5b121 100644
--- a/totalopenstation/formats/nikon_raw_v200.py
+++ b/totalopenstation/formats/nikon_raw_v200.py
@@ -18,7 +18,7 @@
 # along with Total Open Station.  If not, see
 # <http://www.gnu.org/licenses/>.
 
-from polar import BasePoint, PolarPoint
+from .polar import BasePoint, PolarPoint
 
 
 class FormatParser:
@@ -61,7 +61,7 @@ class FormatParser:
                                pid=pid,
                                text=text,
                                coordorder=coordorder)
-                points.append(p.to_point())
+                points.append(p.to_point().tuplepoint)
         return points
 
     points = property(_points)
diff --git a/totalopenstation/formats/polar.py b/totalopenstation/formats/polar.py
index 2aa0659..8cc12f5 100644
--- a/totalopenstation/formats/polar.py
+++ b/totalopenstation/formats/polar.py
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 # filename: polar.py
-# Copyright 2010 Stefano Costa <steko at iosa.it>
+# Copyright 2010, 2014 Stefano Costa <steko at iosa.it>
 
 # This file is part of Total Open Station.
 
@@ -18,7 +18,7 @@
 # along with Total Open Station.  If not, see
 # <http://www.gnu.org/licenses/>.
 
-import math
+from math import cos, sin, radians
 
 from . import Point
 
@@ -26,22 +26,28 @@ from . import Point
 def polar_to_cartesian(base_x, base_y, base_z, dist, angle, z_angle, ih, th):
     '''Convert polar coordinates to cartesian.
 
-    Needs both base point coordinates and measurement angle and distance.
-    Angles should be given in radiants.'''
+    Needs base point coordinates, measurement angles and distance.
+    Angles must be given in radians.
+
+    Some important caveats of the current implementation:
+
+    - the horizontal ``angle`` is hardcoded with zero azimuth at North
+    - the vertical ``z_angle`` is hardcoded with zero at zenith
+    '''
+
+    dist_r = sin(z_angle) * dist
+    target_x = base_x + cos(angle) * dist_r
+    target_y = base_y + sin(angle) * dist_r
+    target_z = base_z + ih + (cos(z_angle) * dist) - th
 
-    rad_angle = angle
-    rad_z_angle = z_angle
-    dist_r = math.sin(rad_z_angle) * dist
-    target_x = base_x + math.cos(rad_angle) * dist_r
-    target_y = base_y + math.sin(rad_angle) * dist_r
-    target_z = base_z + math.cos(rad_z_angle) * dist
-    target_z = target_z + ih - th
     return dict(x=target_x, y=target_y, z=target_z)
 
 
 class PolarPoint:
     '''A point geometry defined by polar coordinates.'''
 
+    COORDINATE_ORDER = ('NEZ', 'ENZ')
+
     def __init__(self,
                  dist,                # inclined distance
                  angle,               # horizontal angle
@@ -51,38 +57,30 @@ class PolarPoint:
                  base_point,          # BasePoint object
                  pid,                 # point ID
                  text,                # point description
-                 coordorder='NEZ'):   # cartesian coordinates order (NEZ, ENZ)
+                 coordorder):   # cartesian coordinates order (NEZ, ENZ)
         self.dist = float(dist)
+        angle = float(angle)
+        z_angle = float(z_angle)
         self.th = float(th)
         self.angle_type = angle_type
-        if angle_type is 'deg':
-            self.angle = math.radians(float(angle))
-            self.z_angle = math.radians(float(z_angle))
-        if angle_type is 'gon':
-            self.angle = math.radians(float(angle)*0.9)
-            self.z_angle = math.radians(float(z_angle)*0.9)
+        if angle_type == 'deg':
+            self.angle = radians(angle)
+            self.z_angle = radians(z_angle)
+        if angle_type == 'gon':
+            self.angle = radians(angle * 0.9)
+            self.z_angle = radians(z_angle * 0.9)
         self.pid = pid
         self.text = text
-        self.coordorder = coordorder
+        if any((coordorder == v for v in PolarPoint.COORDINATE_ORDER)):
+            self.coordorder = coordorder
+        else:
+            raise ValueError('Invalid coordinate order')
         # base point data
         self.base_x = base_point.x
         self.base_y = base_point.y
         self.base_z = base_point.z
         self.ih = base_point.ih
 
-    def to_cartesian(self):
-        '''Converts from polar to cartesian.'''
-
-        coords = polar_to_cartesian(self.base_x,
-                                    self.base_y,
-                                    self.base_z,
-                                    self.dist,
-                                    self.angle,
-                                    self.z_angle,
-                                    self.ih,
-                                    self.th)
-        return "%(x)s,%(y)s,%(z)s" % coords
-
     def to_point(self):
         '''Convert from PolarPoint to (cartesian) Point object'''
 
@@ -104,7 +102,7 @@ class PolarPoint:
                            cart_coords['z'],
                            self.text)
 
-        return cart_point.tuplepoint
+        return cart_point
 
 
 class BasePoint:
diff --git a/totalopenstation/formats/sokkia_sdr33.py b/totalopenstation/formats/sokkia_sdr33.py
new file mode 100644
index 0000000..1c7c8fa
--- /dev/null
+++ b/totalopenstation/formats/sokkia_sdr33.py
@@ -0,0 +1,47 @@
+# -*- coding: utf-8 -*-
+# filename: formats/sokkia_sdr33.py
+# Copyright 2014 Stefano Costa <steko at iosa.it>
+
+# This file is part of Total Open Station.
+
+# Total Open Station is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# Total Open Station is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with Total Open Station.  If not, see
+# <http://www.gnu.org/licenses/>.
+
+from . import Parser, Point
+
+
+class FormatParser(Parser):
+
+    def __init__(self, data):
+        Parser.__init__(self, data)
+
+    def is_point(self, line):
+        if line[2:4] == ('TP'):
+            return True
+        else:
+            return False
+
+    def get_point(self, line):
+        id = int(line[12:20])
+        y = float(line[20:32])  # Northing
+        x = float(line[32:48])  # Easting
+        z = float(line[48:63])  # Elevation
+
+        if line[0:2] == '02':   # Base point
+            desc = line[78:86].strip()
+        if line[0:2] == '08':   # Measurement
+            desc = line[63:70].strip()
+
+        p = Point(id, x, y, z, desc)
+        return p
diff --git a/totalopenstation/formats/topcon_gts.py b/totalopenstation/formats/topcon_gts.py
index 0aef8e3..5e7c0f4 100644
--- a/totalopenstation/formats/topcon_gts.py
+++ b/totalopenstation/formats/topcon_gts.py
@@ -64,7 +64,7 @@ class FormatParser:
                            pid=pid,
                            text=text,
                            coordorder=coordorder)
-            points.append(p.to_point())
+            points.append(p.to_point().tuplepoint)
         return points
 
     points = property(_points)
diff --git a/totalopenstation/models/__init__.py b/totalopenstation/models/__init__.py
index e9be10a..6f67226 100644
--- a/totalopenstation/models/__init__.py
+++ b/totalopenstation/models/__init__.py
@@ -26,6 +26,7 @@ import sys
 from time import sleep
 from threading import Event, Thread
 
+from totalopenstation.utils.upref import UserPrefs
 
 class Connector(serial.Serial, Thread):
 
@@ -33,6 +34,9 @@ class Connector(serial.Serial, Thread):
                 stopbits=1, timeout=None, xonxoff=0, rtscts=0,
                 writeTimeout=None, dsrdtr=None):
 
+        self.upref = UserPrefs()
+        sleeptime = self.upref.getvalue('sleeptime')
+
         Thread.__init__(self)
         self.dl_started = Event()
         self.dl_finished = Event()
@@ -58,11 +62,11 @@ class Connector(serial.Serial, Thread):
         # looks like there is a maximum buffer of 4096 characters, so we have
         # to wait for a short time and iterate the process until finished
 
-        sleep(0.1)
+        sleep(sleeptime)
 
         while self.inWaiting() > 0:
             result = result + self.read(self.inWaiting())
-            sleep(0.3) # TODO determine sleep time from baudrate
+            sleep(sleeptime)
 
         self.result = result
 
@@ -75,7 +79,7 @@ class Connector(serial.Serial, Thread):
         '''
 
         while self.inWaiting() == 0:
-            sleep(0.1)
+            sleep(sleeptime)
         self.dl_started.set()
         try:
             self.download()
diff --git a/totalopenstation/models/custom.py b/totalopenstation/models/custom.py
index 45e7a89..a938238 100644
--- a/totalopenstation/models/custom.py
+++ b/totalopenstation/models/custom.py
@@ -3,7 +3,23 @@
 # filename: custom.py
 # Copyright 2008 Luca Bianconi <luxetluc at yahoo.it>
 # Copyright 2008,2011 Stefano Costa <steko at iosa.it>
-# Under the GNU GPL 3 License
+
+# This file is part of Total Open Station.
+
+# Total Open Station is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# Total Open Station is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with Total Open Station.  If not, see
+# <http://www.gnu.org/licenses/>.
+
 
 from . import Connector
 
diff --git a/totalopenstation/models/leica_tcr_1205.py b/totalopenstation/models/leica_tcr_1205.py
index 656959f..8fdc6df 100644
--- a/totalopenstation/models/leica_tcr_1205.py
+++ b/totalopenstation/models/leica_tcr_1205.py
@@ -3,7 +3,23 @@
 # filename: leica_tcr_1205.py
 # Copyright 2008 Luca Bianconi <luxetluc at yahoo.it>
 # Copyright 2008,2011 Stefano Costa <steko at iosa.it>
-# Under the GNU GPL 3 License
+
+# This file is part of Total Open Station.
+
+# Total Open Station is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# Total Open Station is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with Total Open Station.  If not, see
+# <http://www.gnu.org/licenses/>.
+
 
 from . import *
 
diff --git a/totalopenstation/models/leica_tcr_705.py b/totalopenstation/models/leica_tcr_705.py
index f2e52dd..b52046c 100644
--- a/totalopenstation/models/leica_tcr_705.py
+++ b/totalopenstation/models/leica_tcr_705.py
@@ -3,7 +3,23 @@
 # filename: leica_tcr_705.py
 # Copyright 2009 Luca Bianconi <luxetluc at yahoo.it>
 # Copyright 2009,2011 Stefano Costa <steko at iosa.it>
-# Under the GNU GPL 3 License
+
+# This file is part of Total Open Station.
+
+# Total Open Station is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# Total Open Station is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with Total Open Station.  If not, see
+# <http://www.gnu.org/licenses/>.
+
 
 from . import *
 
diff --git a/totalopenstation/models/nikon_npl_350.py b/totalopenstation/models/nikon_npl_350.py
index 8027b66..a53e37b 100644
--- a/totalopenstation/models/nikon_npl_350.py
+++ b/totalopenstation/models/nikon_npl_350.py
@@ -2,7 +2,23 @@
 # -*- coding: utf-8 -*-
 # filename: nikon_npl_350.py
 # Copyright 2008,2011 Stefano Costa <steko at iosa.it>
-# Under the GNU GPL 3 License
+
+# This file is part of Total Open Station.
+
+# Total Open Station is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# Total Open Station is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with Total Open Station.  If not, see
+# <http://www.gnu.org/licenses/>.
+
 
 from . import *
 
diff --git a/totalopenstation/models/trimble.py b/totalopenstation/models/trimble.py
index 7deed2c..08ed5e6 100644
--- a/totalopenstation/models/trimble.py
+++ b/totalopenstation/models/trimble.py
@@ -4,7 +4,23 @@
 # Copyright 2009 Luca Bianconi <luxetluc at yahoo.it>
 # Copyright 2009,2011 Stefano Costa <steko at iosa.it>
 # Copyright 2009 Alessandro Bezzi <alessandro.bezzi at arc-team.com>
-# Under the GNU GPL 3 License
+
+# This file is part of Total Open Station.
+
+# Total Open Station is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# Total Open Station is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with Total Open Station.  If not, see
+# <http://www.gnu.org/licenses/>.
+
 
 from . import *
 
diff --git a/totalopenstation/models/zeiss_elta_r55.py b/totalopenstation/models/zeiss_elta_r55.py
index 521317d..bab8778 100644
--- a/totalopenstation/models/zeiss_elta_r55.py
+++ b/totalopenstation/models/zeiss_elta_r55.py
@@ -3,7 +3,23 @@
 # filename: zeiss_elta_r55.py
 # Copyright 2008 Luca Bianconi <luxetluc at yahoo.it>
 # Copyright 2008-2011 Stefano Costa <steko at iosa.it>
-# Under the GNU GPL 3 License
+
+# This file is part of Total Open Station.
+
+# Total Open Station is free software: you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+
+# Total Open Station is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with Total Open Station.  If not, see
+# <http://www.gnu.org/licenses/>.
+
 
 from . import Connector
 
diff --git a/totalopenstation/output/tops_csv.py b/totalopenstation/output/tops_csv.py
index 7f156f1..6850c82 100644
--- a/totalopenstation/output/tops_csv.py
+++ b/totalopenstation/output/tops_csv.py
@@ -44,8 +44,3 @@ class OutputFormat:
         self.writer.writerow(('PID', 'x', 'y', 'z', 'TEXT'))
         self.writer.writerows(self.data)
         return self.output.getvalue()
-
-if __name__ == "__main__":
-    TotalOpenCSV(
-        [(1, 2, 3, 4, 'qwerty'),
-         ("2.3", 42, 45, 12, 'asdfg')])
diff --git a/totalopenstation/output/tops_dat.py b/totalopenstation/output/tops_dat.py
index fac54f5..34fe167 100644
--- a/totalopenstation/output/tops_dat.py
+++ b/totalopenstation/output/tops_dat.py
@@ -46,9 +46,3 @@ class OutputFormat:
         lines = [to_dat(e) for e in self.data]
         output = "".join(lines)
         return output
-
-
-if __name__ == "__main__":
-    TotalOpenDAT(
-        [(1, 2, 3, 4, 'qwerty'),
-         ("2.3", 42, 45, 12, 'asdfg')])
diff --git a/totalopenstation/output/tops_dxf.py b/totalopenstation/output/tops_dxf.py
index 7dec758..2080fd5 100644
--- a/totalopenstation/output/tops_dxf.py
+++ b/totalopenstation/output/tops_dxf.py
@@ -48,6 +48,13 @@ class OutputFormat:
 
         result = ''
 
+        # header
+        result += '999\nDXF created from Total Open Station\n'
+        result += '  0\nSECTION\n'
+        result += '  2\nHEADER\n'
+        result += '  9\n$ACADVER\n'
+        result += '  1\nAC1009\n' # R11
+
         # extract layer list
         codes = set([p[4] for p in self.data])
         codes = [c.replace('.','_') for c in codes]
@@ -127,9 +134,3 @@ class OutputFormat:
 
         result += '  0\nENDSEC\n  0\nEOF\n'
         return result
-
-
-if __name__ == "__main__":
-    TotalOpenDXF(
-        [(1, 2, 3, 4, 'qwerty'),
-         ("2.3", 42, 45, 12, 'asdfg')])
diff --git a/totalopenstation/output/tops_sql.py b/totalopenstation/output/tops_sql.py
index 97e79bf..c1e7b9f 100644
--- a/totalopenstation/output/tops_sql.py
+++ b/totalopenstation/output/tops_sql.py
@@ -67,9 +67,3 @@ class OutputFormat:
         lines.append('COMMIT;\n')
         output = "".join(lines)
         return output
-
-if __name__ == "__main__":
-    TotalOpenSQL(
-        [(1, 2, 3, 4, 'qwerty'),
-         ("2.3", 42, 45, 12, 'asdfg')],
-        'prova')
diff --git a/totalopenstation/output/tops_txt.py b/totalopenstation/output/tops_txt.py
index 9ebc997..29b85c3 100644
--- a/totalopenstation/output/tops_txt.py
+++ b/totalopenstation/output/tops_txt.py
@@ -44,9 +44,3 @@ class OutputFormat:
         lines = [to_txt(e) for e in self.data]
         output = "".join(lines)
         return output
-
-if __name__ == "__main__":
-    TotalOpenTXT(
-        [(1, 2, 3, 4, 'qwerty'),
-         ("2.3", 42, 45, 12, 'asdfg')],
-    'p.txt')
diff --git a/totalopenstation/tests/__init__.py b/totalopenstation/tests/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/totalopenstation/tests/test_polar.py b/totalopenstation/tests/test_polar.py
index 8d88dc1..3a60ce4 100644
--- a/totalopenstation/tests/test_polar.py
+++ b/totalopenstation/tests/test_polar.py
@@ -1,21 +1,40 @@
 import unittest
 
+from totalopenstation.formats import Point
 from totalopenstation.formats.polar import BasePoint, PolarPoint
 
 
 class TestPolar(unittest.TestCase):
 
     def setUp(self):
-        self.bp0 = BasePoint(x=100.0, y=100.0, z=100.0, ih=0)
+        self.bp0 = BasePoint(x='0', y='0', z='0', ih='1.0')
 
-        self.p0 = PolarPoint(dist=10,
-                             angle=0,
-                             z_angle=0,
+        self.p0 = PolarPoint(dist=9,
+                             angle=180,
+                             z_angle=90,
                              th=0,
                              angle_type='deg',
                              base_point=self.bp0,
                              pid=1,
-                             text='Test Point')
+                             text='Test Point',
+                             coordorder='NEZ')
+
+        self.p1 = PolarPoint(dist=24.567,
+                             angle=34.120,
+                             z_angle=100,
+                             th=1.500,
+                             angle_type='gon',
+                             base_point=self.bp0,
+                             pid=2,
+                             text='Real Point',
+                             coordorder='NEZ')
 
     def test_polar(self):
-        self.assertEqual(self.p0.to_cartesian(), '100.0,100.0,110.0')
+
+        for i, j in zip(self.p0.to_point().tuplepoint,
+                        Point(1, 0.0, -9.0, 1.0, 'Test Point').tuplepoint):
+            self.assertAlmostEqual(i, j)
+
+        for i, j in zip(self.p1.to_point().tuplepoint,
+                     Point(2, 12.5454572076, 21.1222392859, -0.5, 'Real Point').tuplepoint):
+            self.assertAlmostEqual(i, j)
diff --git a/totalopenstation/tests/test_rw5.py b/totalopenstation/tests/test_rw5.py
new file mode 100644
index 0000000..a220ca0
--- /dev/null
+++ b/totalopenstation/tests/test_rw5.py
@@ -0,0 +1,18 @@
+import unittest
+
+from totalopenstation.formats.carlson_rw5 import FormatParser
+
+class TestCarlsonRW5Parser(unittest.TestCase):
+    def setUp(self):
+        with open('sample_data/Leica1200.rw5') as testdata:
+            fp = FormatParser(testdata.read())
+            self.pts = list(fp.points)
+
+    def test_point(self):
+        self.assertEqual(self.pts[0][0], '108')
+        self.assertAlmostEqual(self.pts[0][2], 942130.662, places=3)
+        self.assertAlmostEqual(self.pts[0][1], 16556174.237, places=3)
+        self.assertAlmostEqual(self.pts[0][3], 20.053, places=3)
+        self.assertEqual(self.pts[0][4], 'FENCE1')
+        self.assertEqual(self.pts[1][4], 'LIGHT POLE')
+
diff --git a/totalopenstation/tests/test_sokkia_sdr33.py b/totalopenstation/tests/test_sokkia_sdr33.py
new file mode 100644
index 0000000..ce77e58
--- /dev/null
+++ b/totalopenstation/tests/test_sokkia_sdr33.py
@@ -0,0 +1,19 @@
+import unittest
+
+from totalopenstation.formats.sokkia_sdr33 import FormatParser
+
+
+class TestSokkiaParser(unittest.TestCase):
+
+    def setUp(self):
+        with open('sample_data/sokkia_sdr33.tops') as testdata:
+            self.fp = FormatParser(testdata.read())
+
+    def test_point(self):
+        self.assertEqual(self.fp.points[0][0], 31)
+        self.assertAlmostEqual(self.fp.points[0][2], 509.970)
+        self.assertAlmostEqual(self.fp.points[0][1], 937.274)
+        self.assertAlmostEqual(self.fp.points[0][3], 20.053)
+        self.assertEqual(self.fp.points[0][4], '11')
+        self.assertEqual(self.fp.points[1][4], '11')
+
diff --git a/totalopenstation/utils/upref.py b/totalopenstation/utils/upref.py
index 717c5f8..2b11201 100644
--- a/totalopenstation/utils/upref.py
+++ b/totalopenstation/utils/upref.py
@@ -1,7 +1,7 @@
 #! /usr/bin/env python
 # -*- coding: utf-8 -*-
 # filename: upref.py
-# Copyright 2010 Stefano Costa <steko at iosa.it>
+# Copyright 2010,2013 Stefano Costa <steko at iosa.it>
 # Copyright 2010 Luca Bianconi <luxetluc at yahoo.it>
 #
 # This file is part of Total Open Station.
@@ -21,10 +21,11 @@
 # <http://www.gnu.org/licenses/>.
 
 import atexit
+import logging
 import os
 import os.path
 
-from ConfigParser import ConfigParser, NoSectionError
+from ConfigParser import ConfigParser, NoSectionError, NoOptionError
 
 
 class UserPrefs(ConfigParser):
@@ -36,6 +37,11 @@ class UserPrefs(ConfigParser):
     * returns a dictionary of user preferences
     * preferences will be set through a dictionary as well'''
 
+    OPTIONS = {
+        'model': '',
+        'port': '',
+        'sleeptime': 1.0,       # added in 0.3.1
+    }
 
     def __init__(self):
 
@@ -59,11 +65,11 @@ class UserPrefs(ConfigParser):
 
     def initfile(self):
         self.write()
-        print('User preferences do not exist!')
+        logging.info('User preferences do not exist!')
         self.add_section('topsconfig')
-        self.set('topsconfig', 'model','')
-        self.set('topsconfig', 'port', '')
-        print('Created new user preferences file')
+        for k,v in self.OPTIONS.items():
+            self.set('topsconfig', k, v)
+        logging.info('Created new user preferences file with default values')
 
     def write(self):
         ''' override ConfigParser.write() method '''
@@ -73,20 +79,25 @@ class UserPrefs(ConfigParser):
     def getdict(self):
         ''' get config file values '''
 
-        model = self.get('topsconfig', 'model')
-        port = self.get('topsconfig', 'port')
+        current_options = {}
+        for k in self.OPTIONS.keys():
+            current_options[k] = self.getvalue(k)
 
-        return {'model':model , 'port': port}
+        return current_options
 
-    def getvalue(self, value):
+    def getvalue(self, key):
         ''' get specific config file value '''
 
-        return self.get('topsconfig', value)
+        try:
+            value = self.get('topsconfig', key)
+        except NoOptionError:
+            value = self.OPTIONS[key] # use default value
+        return value
 
     def setvalues(self, values):
         ''' set specific config file value '''
 
-        self.set('topsconfig', 'model', values['model'])
-        self.set('topsconfig', 'port', values['port'])
+        for k, v in values.items():
+            self.set('topsconfig', k, v)
 
         self.write()

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



More information about the Pkg-grass-devel mailing list