[qmapshack] 02/07: Imported Upstream version 1.6.0

Sebastiaan Couwenberg sebastic at moszumanska.debian.org
Thu Feb 25 21:52:57 UTC 2016


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

sebastic pushed a commit to branch master
in repository qmapshack.

commit 60993e502de4ba1d70bf7bf817f3def0c0f21f7f
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Thu Feb 25 21:28:17 2016 +0100

    Imported Upstream version 1.6.0
---
 CMakeLists.txt                                     |   24 +-
 CMakeLists.txt.user                                |   73 +-
 CMakeLists.txt.user.044d553                        |  292 -
 MacOSX/HowtoBuildOSX.txt                           |  132 +
 MacOSX/build-cask.sh                               |   59 -
 MacOSX/build-qmapshack.sh                          |   72 -
 MacOSX/build-routino.sh                            |   92 +-
 MacOSX/bundle.sh                                   |   71 +-
 MacOSX/env-path.sh                                 |   56 +-
 README.md                                          |    4 +-
 call_Uncrustify.cfg                                |    2 +
 changelog.txt                                      |   39 +
 cmake/Modules/Qt5PatchedLinguistToolsMacros.cmake  |  112 +
 cmake/Modules/TranslateDesktop.cmake               |   89 +
 cmake/Modules/TranslateTs.cmake                    |  149 +
 nsi/HOWTO-BUILD.txt                                |    1 +
 nsi/QMapShack_Installer.nsi                        |   10 +-
 nsi/copyfiles.bat                                  |   13 +-
 qmapshack.1                                        |    2 +-
 qmapshack.desktop => qmapshack.desktop.in          |    4 +-
 src/CAbout.h                                       |    1 +
 src/CMainWindow.cpp                                | 1922 ++--
 src/CMainWindow.h                                  |   45 +-
 src/CMakeLists.txt                                 |  961 +-
 src/GeoMath.cpp                                    |   24 +-
 src/IAbout.ui                                      |  187 +-
 src/IMainWindow.ui                                 |  114 +-
 src/canvas/CCanvas.cpp                             |   37 +-
 src/canvas/CCanvas.h                               |   22 +-
 src/canvas/CCanvasSetup.cpp                        |    2 +-
 src/canvas/CCanvasSetup.h                          |    2 +-
 src/canvas/IDrawContext.cpp                        |   12 +-
 src/canvas/IDrawContext.h                          |    6 +-
 src/canvas/IDrawObject.cpp                         |   10 +-
 src/canvas/IDrawObject.h                           |    8 +-
 src/dem/CDemDraw.cpp                               |   14 +-
 src/dem/CDemDraw.h                                 |   10 +-
 src/dem/CDemList.cpp                               |   90 +-
 src/dem/CDemList.h                                 |    7 +-
 src/dem/CDemPathSetup.cpp                          |    6 +-
 src/dem/CDemPathSetup.h                            |    2 +-
 src/dem/CDemPropSetup.cpp                          |   52 +-
 src/dem/CDemPropSetup.h                            |    4 +-
 src/dem/CDemVRT.cpp                                |   29 +-
 src/dem/CDemVRT.h                                  |    4 +-
 src/dem/IDem.h                                     |    4 +-
 src/dem/IDemList.ui                                |   33 +
 src/dem/IDemProp.cpp                               |    2 +-
 src/device/CDeviceGarmin.cpp                       |  100 +-
 src/device/CDeviceGarmin.h                         |   30 +-
 src/device/CDeviceGarminArchive.cpp                |   62 +
 .../CDeviceGarminArchive.h}                        |   30 +-
 src/device/CDeviceTwoNav.cpp                       |    2 +-
 src/device/CDeviceTwoNav.h                         |    2 +-
 src/device/CDeviceWatcherLinux.cpp                 |    2 +
 src/device/CDeviceWatcherLinux.h                   |    2 +-
 src/device/CDeviceWatcherMac.cpp                   |  164 +-
 src/device/CDeviceWatcherMac.h                     |   29 +-
 src/device/CDeviceWatcherWindows.cpp               |    4 +-
 src/device/IDevice.cpp                             |   92 +-
 src/device/IDevice.h                               |   13 +-
 src/gis/CGisDraw.cpp                               |    2 +-
 src/gis/CGisDraw.h                                 |    2 +-
 src/gis/CGisListDB.cpp                             |  386 +-
 src/gis/CGisListDB.h                               |   19 +-
 src/gis/CGisListWks.cpp                            |  562 +-
 src/gis/CGisListWks.h                              |   19 +-
 src/gis/CGisWidget.cpp                             |  143 +-
 src/gis/CGisWidget.h                               |   57 +-
 src/gis/CSelDevices.cpp                            |   15 +-
 src/gis/IGisItem.cpp                               |  158 +-
 src/gis/IGisItem.h                                 |   79 +-
 src/gis/IGisWidget.ui                              |    5 +
 src/gis/WptIcons.cpp                               |   13 +-
 src/gis/WptIcons.h                                 |   12 +-
 src/gis/db/CDBFolderLostFound.cpp                  |   33 +-
 src/gis/db/CDBFolderLostFound.h                    |   12 +-
 src/gis/db/CDBFolderMysql.cpp                      |   76 +
 .../CLineOpMovePoint.h => gis/db/CDBFolderMysql.h} |   40 +-
 .../{CDBFolderDatabase.cpp => CDBFolderSqlite.cpp} |   42 +-
 .../db/CDBFolderSqlite.h}                          |   26 +-
 src/gis/db/CDBItem.cpp                             |   58 +-
 src/gis/db/CDBItem.h                               |   14 +-
 src/gis/db/CDBProject.cpp                          |  749 +-
 src/gis/db/CDBProject.h                            |   90 +-
 src/gis/db/CLostFoundProject.cpp                   |    9 +-
 src/gis/db/CLostFoundProject.h                     |    3 +-
 src/gis/db/CSelectDBFolder.cpp                     |   51 +-
 src/gis/db/CSelectDBFolder.h                       |    3 +-
 src/gis/db/CSelectSaveAction.cpp                   |    9 +-
 src/gis/db/CSelectSaveAction.h                     |    1 +
 src/gis/db/CSetupDatabase.cpp                      |   67 +-
 src/gis/db/CSetupDatabase.h                        |   18 +-
 src/gis/db/CSetupFolder.cpp                        |    2 +-
 src/gis/db/CSetupFolder.h                          |    2 +-
 src/gis/db/CSetupWorkspace.cpp                     |    6 +-
 src/gis/db/CSetupWorkspace.h                       |    2 +-
 src/gis/db/IDB.cpp                                 |  176 +-
 src/gis/db/IDB.h                                   |   21 +-
 src/gis/db/IDBFolder.cpp                           |  261 +-
 src/gis/db/IDBFolder.h                             |  128 +-
 src/gis/db/IDBFolderSql.cpp                        |  156 +
 src/gis/db/{CDBFolderDatabase.h => IDBFolderSql.h} |   38 +-
 src/gis/db/IDBMysql.cpp                            |  173 +
 .../CCoordFormatSetup.h => gis/db/IDBMysql.h}      |   26 +-
 src/gis/db/IDBSqlite.cpp                           |  352 +
 src/gis/db/{IDB.h => IDBSqlite.h}                  |   29 +-
 src/gis/db/ISelectSaveAction.ui                    |  122 +-
 src/gis/db/ISetupDatabase.ui                       |  277 +-
 src/gis/db/ISetupWorkspace.ui                      |   22 +-
 src/gis/db/macros.h                                |   17 +-
 src/gis/fit/CFitProject.cpp                        |  126 +
 src/gis/{gpx/CGpxProject.h => fit/CFitProject.h}   |   43 +-
 src/gis/fit/CFitStream.cpp                         |   91 +
 src/gis/fit/CFitStream.h                           |   86 +
 src/gis/fit/decoder/CFitByteDataTransformer.cpp    |  172 +
 src/gis/fit/decoder/CFitByteDataTransformer.h      |   52 +
 src/gis/fit/decoder/CFitCrcState.cpp               |   39 +
 src/gis/fit/decoder/CFitCrcState.h                 |   34 +
 src/gis/fit/decoder/CFitDecoder.cpp                |  122 +
 src/gis/fit/decoder/CFitDecoder.h                  |   51 +
 src/gis/fit/decoder/CFitDefinitionMessage.cpp      |  153 +
 src/gis/fit/decoder/CFitDefinitionMessage.h        |   67 +
 src/gis/fit/decoder/CFitField.cpp                  |   97 +
 src/gis/fit/decoder/CFitField.h                    |   62 +
 src/gis/fit/decoder/CFitFieldBuilder.cpp           |  145 +
 src/gis/fit/decoder/CFitFieldBuilder.h             |   42 +
 src/gis/fit/decoder/CFitFieldDataState.cpp         |   72 +
 src/gis/fit/decoder/CFitFieldDataState.h           |   41 +
 src/gis/fit/decoder/CFitFieldDefinition.cpp        |   77 +
 src/gis/fit/decoder/CFitFieldDefinition.h          |   56 +
 src/gis/fit/decoder/CFitFieldDefinitionState.cpp   |   70 +
 src/gis/fit/decoder/CFitFieldDefinitionState.h     |   41 +
 src/gis/fit/decoder/CFitHeaderState.cpp            |  130 +
 src/gis/fit/decoder/CFitHeaderState.h              |   39 +
 src/gis/fit/decoder/CFitMessage.cpp                |   94 +
 src/gis/fit/decoder/CFitMessage.h                  |   59 +
 src/gis/fit/decoder/CFitRecordContentState.cpp     |   92 +
 src/gis/fit/decoder/CFitRecordContentState.h       |   41 +
 src/gis/fit/decoder/CFitRecordHeaderState.cpp      |   98 +
 src/gis/fit/decoder/CFitRecordHeaderState.h        |   34 +
 src/gis/fit/decoder/IFitDecoderState.cpp           |  139 +
 src/gis/fit/decoder/IFitDecoderState.h             |   90 +
 src/gis/fit/defs/CFitBaseType.cpp                  |  135 +
 src/gis/fit/defs/CFitBaseType.h                    |  103 +
 src/gis/fit/defs/CFitFieldProfile.cpp              |  189 +
 src/gis/fit/defs/CFitFieldProfile.h                |  111 +
 src/gis/fit/defs/CFitProfile.cpp                   |   74 +
 src/gis/fit/defs/CFitProfile.h                     |   53 +
 src/gis/fit/defs/CFitProfileLookup.cpp             | 1386 +++
 src/gis/fit/defs/CFitProfileLookup.h               |   42 +
 src/gis/fit/defs/HowToFitGenerator.txt             |   31 +
 src/gis/fit/defs/Profile_Messages.csv              |  971 +++
 src/gis/fit/defs/Profile_Types.csv                 | 1196 +++
 src/gis/fit/defs/fit_const.h                       |   43 +
 src/gis/fit/defs/fit_enums.h                       | 1378 +++
 src/gis/fit/defs/fit_fields.h                      | 1030 +++
 src/gis/fit/defs/profiles.sh                       |  316 +
 src/gis/fit/serialization.cpp                      |  223 +
 src/gis/gpx/CGpxProject.cpp                        |  150 +-
 src/gis/gpx/CGpxProject.h                          |   23 +-
 src/gis/gpx/serialization.cpp                      |  152 +-
 src/gis/ovl/CDetailsOvlArea.cpp                    |   82 +-
 src/gis/ovl/CDetailsOvlArea.h                      |    3 +-
 src/gis/ovl/CGisItemOvlArea.cpp                    |  159 +-
 src/gis/ovl/CGisItemOvlArea.h                      |   59 +-
 src/gis/ovl/CScrOptOvlArea.cpp                     |   20 +-
 src/gis/ovl/CScrOptOvlArea.h                       |    2 +-
 src/gis/ovl/IDetailsOvlArea.ui                     |   90 +-
 src/gis/prj/CDetailsPrj.cpp                        |  146 +-
 src/gis/prj/CDetailsPrj.h                          |   12 +-
 src/gis/prj/IDetailsPrj.ui                         |    3 +
 src/gis/prj/IGisProject.cpp                        |  193 +-
 src/gis/prj/IGisProject.h                          |   83 +-
 src/gis/qms/CQmsProject.cpp                        |   64 +-
 src/gis/qms/CQmsProject.h                          |   17 +-
 src/gis/qms/serialization.cpp                      |  131 +-
 src/gis/rte/CCreateRouteFromWpt.cpp                |   18 +-
 src/gis/rte/CCreateRouteFromWpt.h                  |    4 +-
 src/gis/rte/CDetailsRte.cpp                        |   45 +-
 src/gis/rte/CDetailsRte.h                          |    3 +-
 src/gis/rte/CGisItemRte.cpp                        |   87 +-
 src/gis/rte/CGisItemRte.h                          |   58 +-
 src/gis/rte/CScrOptRte.cpp                         |   34 +-
 src/gis/rte/CScrOptRte.h                           |    2 +-
 src/gis/rte/IDetailsRte.ui                         |  236 +-
 src/gis/rte/router/CRouterMapQuest.cpp             |   10 +-
 src/gis/rte/router/CRouterMapQuest.h               |    6 +-
 src/gis/rte/router/CRouterRoutino.cpp              |   50 +-
 src/gis/rte/router/CRouterRoutino.h                |    8 +-
 src/gis/rte/router/CRouterRoutinoPathSetup.cpp     |    6 +-
 src/gis/rte/router/CRouterRoutinoPathSetup.h       |    2 +-
 src/gis/rte/router/CRouterSetup.cpp                |    4 +-
 src/gis/search/CSearchGoogle.cpp                   |    6 +-
 src/gis/search/CSearchGoogle.h                     |   11 +-
 src/gis/slf/CSlfProject.cpp                        |   57 +
 .../INotifiable.h => gis/slf/CSlfProject.h}        |   30 +-
 src/gis/slf/CSlfReader.cpp                         |  288 +
 .../CColorLegend.h => gis/slf/CSlfReader.h}        |   54 +-
 src/gis/tnv/CTwoNavProject.cpp                     |    6 +-
 src/gis/tnv/CTwoNavProject.h                       |    3 +-
 src/gis/tnv/serialization.cpp                      |   22 +-
 src/gis/trk/CActivityTrk.cpp                       |  138 +-
 src/gis/trk/CActivityTrk.h                         |   58 +-
 src/gis/trk/CCombineTrk.cpp                        |   43 +-
 src/gis/trk/CCombineTrk.h                          |    2 +-
 src/gis/trk/CCutTrk.cpp                            |    6 +-
 src/gis/trk/CCutTrk.h                              |   10 +-
 src/gis/trk/CDetailsTrk.cpp                        |  675 +-
 src/gis/trk/CDetailsTrk.h                          |   37 +-
 src/gis/trk/CGisItemTrk.cpp                        |  778 +-
 src/gis/trk/CGisItemTrk.h                          |  294 +-
 src/gis/trk/CKnownExtension.cpp                    |  146 +-
 src/gis/trk/CKnownExtension.h                      |   47 +-
 src/gis/trk/CPropertyTrk.cpp                       |   80 +-
 src/gis/trk/CPropertyTrk.h                         |   15 +-
 src/gis/trk/CScrOptTrk.cpp                         |   39 +-
 src/gis/trk/CScrOptTrk.h                           |    2 +-
 src/gis/trk/CSelectActivity.cpp                    |    2 +-
 src/gis/trk/CSelectActivityColor.cpp               |  124 +
 .../trk/CSelectActivityColor.h}                    |   52 +-
 src/gis/trk/IDetailsTrk.ui                         | 1018 ++-
 src/gis/trk/ISelectActivityColor.ui                |   43 +
 src/gis/trk/filter/CFilterDelete.cpp               |    2 +-
 src/gis/trk/filter/CFilterDeleteExtension.cpp      |   74 +
 .../{CFilterInvalid.h => CFilterDeleteExtension.h} |   19 +-
 src/gis/trk/filter/CFilterDouglasPeuker.cpp        |    2 +-
 src/gis/trk/filter/CFilterInvalid.cpp              |    4 +-
 src/gis/trk/filter/CFilterInvalid.h                |    1 -
 src/gis/trk/filter/CFilterMedian.cpp               |    2 +-
 src/gis/trk/filter/CFilterNewDate.cpp              |    2 +-
 src/gis/trk/filter/CFilterObscureDate.cpp          |    2 +-
 src/gis/trk/filter/CFilterOffsetElevation.cpp      |    2 +-
 src/gis/trk/filter/CFilterReplaceElevation.cpp     |    2 +-
 src/gis/trk/filter/CFilterReset.cpp                |    2 +-
 src/gis/trk/filter/CFilterSpeed.cpp                |    2 +-
 .../{CFilterReset.cpp => CFilterSplitSegment.cpp}  |   18 +-
 .../{CFilterInvalid.h => CFilterSplitSegment.h}    |   16 +-
 src/gis/trk/filter/IFilterDeleteExtension.ui       |  132 +
 src/gis/trk/filter/IFilterSplitSegment.ui          |   99 +
 src/gis/trk/filter/filter.cpp                      |   72 +-
 src/gis/wpt/CDetailsGeoCache.cpp                   |   10 +-
 src/gis/wpt/CDetailsWpt.cpp                        |   57 +-
 src/gis/wpt/CDetailsWpt.h                          |    4 +-
 src/gis/wpt/CGisItemWpt.cpp                        |   78 +-
 src/gis/wpt/CGisItemWpt.h                          |   68 +-
 src/gis/wpt/CProjWpt.cpp                           |    8 +-
 src/gis/wpt/CProjWpt.h                             |    2 +-
 src/gis/wpt/CScrOptWpt.cpp                         |   28 +-
 src/gis/wpt/CScrOptWpt.h                           |    2 +-
 src/gis/wpt/CSetupNewWpt.cpp                       |    6 +-
 src/gis/wpt/CSetupNewWpt.h                         |    4 +-
 src/gis/wpt/IDetailsWpt.ui                         |   76 +-
 src/grid/CGridSetup.cpp                            |    8 +-
 src/grid/CGridSetup.h                              |    2 +-
 src/grid/CProjWizard.cpp                           |   25 +-
 src/grid/CProjWizard.h                             |    2 +-
 src/helpers/CAppSetup.cpp                          |    5 +-
 src/helpers/CAppSetup.h                            |   20 +-
 src/helpers/CDraw.cpp                              |   20 +-
 src/helpers/CDraw.h                                |    4 +-
 src/helpers/CElevationDialog.cpp                   |    6 +-
 src/helpers/CElevationDialog.h                     |    2 +-
 src/helpers/CFileExt.h                             |    2 +-
 src/helpers/CInputDialog.cpp                       |    2 +-
 src/helpers/CInputDialog.h                         |    2 +-
 src/helpers/CLimit.cpp                             |  205 +
 src/helpers/CLimit.h                               |   98 +
 src/helpers/CLinksDialog.cpp                       |    6 +-
 src/helpers/CLinksDialog.h                         |    2 +-
 src/helpers/CPhotoViewer.h                         |    8 +-
 src/helpers/CPositionDialog.cpp                    |    2 +-
 src/helpers/CPositionDialog.h                      |    2 +-
 src/helpers/CProgressDialog.cpp                    |   12 +-
 src/helpers/CProgressDialog.h                      |    4 +-
 src/helpers/CSelectCopyAction.cpp                  |   10 +-
 src/helpers/CSelectProjectDialog.cpp               |   20 +-
 src/helpers/CSelectProjectDialog.h                 |    4 +-
 src/helpers/CValue.cpp                             |  114 +
 src/helpers/CValue.h                               |   69 +
 src/helpers/CWptIconDialog.cpp                     |   55 +-
 src/helpers/CWptIconDialog.h                       |    8 +-
 src/helpers/ISelectCopyAction.ui                   |   22 +-
 src/helpers/IWptIconDialog.ui                      |   76 +-
 src/{gis/db/CDBItem.h => helpers/Signals.h}        |   43 +-
 src/icons/16x16/ActAero.png                        |  Bin 548 -> 543 bytes
 src/icons/16x16/ActBike.png                        |  Bin 465 -> 461 bytes
 src/icons/16x16/ActCable.png                       |  Bin 440 -> 438 bytes
 src/icons/16x16/ActCar.png                         |  Bin 458 -> 449 bytes
 src/icons/16x16/ActCycle.png                       |  Bin 475 -> 467 bytes
 src/icons/16x16/ActFoot.png                        |  Bin 386 -> 391 bytes
 src/icons/16x16/ActNone.png                        |  Bin 354 -> 342 bytes
 src/icons/16x16/ActShip.png                        |  Bin 456 -> 445 bytes
 src/icons/16x16/ActSki.png                         |  Bin 0 -> 463 bytes
 src/icons/16x16/ActSwim.png                        |  Bin 474 -> 472 bytes
 src/icons/16x16/Activity.png                       |  Bin 654 -> 629 bytes
 src/icons/16x16/EditDetails.png                    |  Bin 0 -> 735 bytes
 src/icons/32x32/2DFix.png                          |  Bin 715 -> 710 bytes
 src/icons/32x32/2NavProject.png                    |  Bin 1225 -> 1148 bytes
 src/icons/32x32/3DFix.png                          |  Bin 897 -> 875 bytes
 src/icons/32x32/A.png                              |  Bin 679 -> 614 bytes
 src/icons/32x32/ActAero.png                        |  Bin 1131 -> 1091 bytes
 src/icons/32x32/ActBike.png                        |  Bin 981 -> 961 bytes
 src/icons/32x32/ActCable.png                       |  Bin 660 -> 614 bytes
 src/icons/32x32/ActCar.png                         |  Bin 781 -> 740 bytes
 src/icons/32x32/ActCycle.png                       |  Bin 1036 -> 980 bytes
 src/icons/32x32/ActFoot.png                        |  Bin 642 -> 606 bytes
 src/icons/32x32/ActNone.png                        |  Bin 599 -> 559 bytes
 src/icons/32x32/ActShip.png                        |  Bin 787 -> 724 bytes
 src/icons/32x32/ActSki.png                         |  Bin 0 -> 890 bytes
 src/icons/32x32/ActSwim.png                        |  Bin 831 -> 807 bytes
 src/icons/32x32/Activity.png                       |  Bin 1375 -> 1345 bytes
 src/icons/32x32/Add.png                            |  Bin 362 -> 350 bytes
 src/icons/32x32/AddArea.png                        |  Bin 1385 -> 1362 bytes
 src/icons/32x32/AddImage.png                       |  Bin 1121 -> 1112 bytes
 src/icons/32x32/AddMapWorkspace.png                |  Bin 1544 -> 1561 bytes
 src/icons/32x32/AddProject.png                     |  Bin 796 -> 771 bytes
 src/icons/32x32/AddRte.png                         |  Bin 786 -> 782 bytes
 src/icons/32x32/AddTrk.png                         |  Bin 1029 -> 989 bytes
 src/icons/32x32/AddWpt.png                         |  Bin 831 -> 788 bytes
 src/icons/32x32/Apply.png                          |  Bin 1930 -> 1834 bytes
 src/icons/32x32/Area.png                           |  Bin 1172 -> 1105 bytes
 src/icons/32x32/AreaMove.png                       |  Bin 1680 -> 1650 bytes
 src/icons/32x32/ArrowDef.png                       |  Bin 0 -> 1965 bytes
 src/icons/32x32/ArrowUser.png                      |  Bin 0 -> 1241 bytes
 src/icons/32x32/Bubble.png                         |  Bin 697 -> 634 bytes
 src/icons/32x32/CSrcATemp.png                      |  Bin 753 -> 726 bytes
 src/icons/32x32/CSrcAccel.png                      |  Bin 0 -> 630 bytes
 src/icons/32x32/CSrcCourse.png                     |  Bin 0 -> 884 bytes
 src/icons/32x32/CSrcUnknown.png                    |  Bin 665 -> 650 bytes
 src/icons/32x32/CSrcWTemp.png                      |  Bin 1063 -> 1038 bytes
 src/icons/32x32/Cancel.png                         |  Bin 882 -> 829 bytes
 src/icons/32x32/Check.png                          |  Bin 948 -> 839 bytes
 src/icons/32x32/CloneMapWorkspace.png              |  Bin 1635 -> 1672 bytes
 src/icons/32x32/Close.png                          |  Bin 855 -> 1101 bytes
 src/icons/32x32/Combine.png                        |  Bin 711 -> 672 bytes
 src/icons/32x32/Copy.png                           |  Bin 511 -> 512 bytes
 src/icons/32x32/Cut.png                            |  Bin 1241 -> 1193 bytes
 src/icons/32x32/CutHistory.png                     |  Bin 1006 -> 1014 bytes
 src/icons/32x32/DBProject.png                      |  Bin 1533 -> 1489 bytes
 src/icons/32x32/Database.png                       |  Bin 1277 -> 1496 bytes
 src/icons/32x32/DatabaseConvert.png                |  Bin 1554 -> 1293 bytes
 src/icons/32x32/DatabaseSetup.png                  |  Bin 2142 -> 2257 bytes
 src/icons/32x32/DatabaseSync.png                   |  Bin 0 -> 1850 bytes
 src/icons/32x32/DelImage.png                       |  Bin 1077 -> 1078 bytes
 src/icons/32x32/DeleteMultiple.png                 |  Bin 898 -> 882 bytes
 src/icons/32x32/DeleteOne.png                      |  Bin 751 -> 731 bytes
 src/icons/32x32/Device.png                         |  Bin 604 -> 620 bytes
 src/icons/32x32/Down.png                           |  Bin 655 -> 621 bytes
 src/icons/32x32/EditDetails.png                    |  Bin 1671 -> 1595 bytes
 src/icons/32x32/EditText.png                       |  Bin 1069 -> 1051 bytes
 src/icons/32x32/Empty.png                          |  Bin 581 -> 541 bytes
 src/icons/32x32/Error.png                          |  Bin 1130 -> 1242 bytes
 src/icons/32x32/FilterModifyExtension.png          |  Bin 0 -> 1535 bytes
 src/icons/32x32/FitProject.png                     |  Bin 0 -> 1116 bytes
 src/icons/32x32/FolderDEM.png                      |  Bin 829 -> 822 bytes
 src/icons/32x32/FolderMap.png                      |  Bin 1550 -> 1597 bytes
 src/icons/32x32/Font.png                           |  Bin 622 -> 565 bytes
 src/icons/32x32/FromMap.png                        |  Bin 1794 -> 1824 bytes
 src/icons/32x32/GpxProject.png                     |  Bin 1269 -> 1175 bytes
 src/icons/32x32/Grid.png                           |  Bin 503 -> 487 bytes
 src/icons/32x32/GridSetup.png                      |  Bin 1979 -> 1945 bytes
 src/icons/32x32/GridWizzard.png                    |  Bin 1512 -> 1551 bytes
 src/icons/32x32/Help.png                           |  Bin 1153 -> 1298 bytes
 src/icons/32x32/Image.png                          |  Bin 1000 -> 1010 bytes
 src/icons/32x32/Info.png                           |  Bin 926 -> 1034 bytes
 src/icons/32x32/Left.png                           |  Bin 669 -> 619 bytes
 src/icons/32x32/Limit.png                          |  Bin 0 -> 1117 bytes
 src/icons/32x32/LimitMax.png                       |  Bin 0 -> 632 bytes
 src/icons/32x32/LimitMin.png                       |  Bin 0 -> 686 bytes
 src/icons/32x32/LimitSys.png                       |  Bin 0 -> 1732 bytes
 src/icons/32x32/LimitUsr.png                       |  Bin 0 -> 1276 bytes
 src/icons/32x32/LineMove.png                       |  Bin 1150 -> 1078 bytes
 src/icons/32x32/LineWidthDef.png                   |  Bin 0 -> 1913 bytes
 src/icons/32x32/LineWidthUser.png                  |  Bin 0 -> 1176 bytes
 src/icons/32x32/Link.png                           |  Bin 952 -> 886 bytes
 src/icons/32x32/LoadGIS.png                        |  Bin 982 -> 931 bytes
 src/icons/32x32/LoadView.png                       |  Bin 1512 -> 1530 bytes
 src/icons/32x32/Lock.png                           |  Bin 932 -> 899 bytes
 src/icons/32x32/Map.png                            |  Bin 1169 -> 1130 bytes
 src/icons/32x32/MimeDemVRT.png                     |  Bin 1237 -> 1186 bytes
 src/icons/32x32/MimeGEMF.png                       |  Bin 0 -> 2011 bytes
 src/icons/32x32/MimeIMG.png                        |  Bin 1783 -> 1775 bytes
 src/icons/32x32/MimeJNX.png                        |  Bin 1781 -> 1852 bytes
 src/icons/32x32/MimeMAP.png                        |  Bin 1845 -> 1883 bytes
 src/icons/32x32/MimeRMAP.png                       |  Bin 1961 -> 1952 bytes
 src/icons/32x32/MimeTMS.png                        |  Bin 1353 -> 1379 bytes
 src/icons/32x32/MimeVRT.png                        |  Bin 1775 -> 1765 bytes
 src/icons/32x32/MimeWMTS.png                       |  Bin 1790 -> 1837 bytes
 src/icons/32x32/MouseWheel.png                     |  Bin 1227 -> 1152 bytes
 src/icons/32x32/Move.png                           |  Bin 869 -> 848 bytes
 src/icons/32x32/MoveArrow.png                      |  Bin 742 -> 783 bytes
 src/icons/32x32/MySQL.png                          |  Bin 0 -> 2169 bytes
 src/icons/32x32/MySQLNoConn.png                    |  Bin 0 -> 2132 bytes
 src/icons/32x32/NightDay.png                       |  Bin 953 -> 886 bytes
 src/icons/32x32/NoFix.png                          |  Bin 661 -> 633 bytes
 src/icons/32x32/NoGo.png                           |  Bin 1401 -> 1390 bytes
 src/icons/32x32/O.png                              |  Bin 734 -> 715 bytes
 src/icons/32x32/Off.png                            |  Bin 1073 -> 1103 bytes
 src/icons/32x32/Opacity.png                        |  Bin 779 -> 777 bytes
 src/icons/32x32/POIText.png                        |  Bin 722 -> 679 bytes
 src/icons/32x32/Paste.png                          |  Bin 454 -> 422 bytes
 src/icons/32x32/PathBlue.png                       |  Bin 536 -> 535 bytes
 src/icons/32x32/PathGreen.png                      |  Bin 544 -> 546 bytes
 src/icons/32x32/PathOrange.png                     |  Bin 538 -> 526 bytes
 src/icons/32x32/Pattern.png                        |  Bin 1490 -> 1529 bytes
 src/icons/32x32/PointHide.png                      |  Bin 813 -> 837 bytes
 src/icons/32x32/PointMove.png                      |  Bin 968 -> 848 bytes
 src/icons/32x32/PointShow.png                      |  Bin 642 -> 588 bytes
 src/icons/32x32/Print.png                          |  Bin 907 -> 882 bytes
 src/icons/32x32/PrintSave.png                      |  Bin 811 -> 808 bytes
 src/icons/32x32/ProfileToWindow.png                |  Bin 1018 -> 1034 bytes
 src/icons/32x32/Progress.png                       |  Bin 487 -> 476 bytes
 src/icons/32x32/QMapShack.png                      |  Bin 1550 -> 1622 bytes
 src/icons/32x32/QmsProject.png                     |  Bin 1345 -> 1248 bytes
 src/icons/32x32/Redo.png                           |  Bin 932 -> 865 bytes
 src/icons/32x32/ReloadImage.png                    |  Bin 1212 -> 1185 bytes
 src/icons/32x32/Reset.png                          |  Bin 1261 -> 1162 bytes
 src/icons/32x32/Reverse.png                        |  Bin 661 -> 612 bytes
 src/icons/32x32/Right.png                          |  Bin 659 -> 609 bytes
 src/icons/32x32/Route.png                          |  Bin 887 -> 862 bytes
 src/icons/32x32/RouteSetup.png                     |  Bin 842 -> 828 bytes
 src/icons/32x32/RteInstr.png                       |  Bin 1118 -> 1102 bytes
 src/icons/32x32/SQLite.png                         |  Bin 0 -> 2042 bytes
 src/icons/32x32/Save.png                           |  Bin 364 -> 371 bytes
 src/icons/32x32/SaveAllGIS.png                     |  Bin 777 -> 757 bytes
 src/icons/32x32/SaveGIS.png                        |  Bin 777 -> 757 bytes
 src/icons/32x32/SaveGISAs.png                      |  Bin 1344 -> 1323 bytes
 src/icons/32x32/SaveView.png                       |  Bin 1469 -> 1458 bytes
 src/icons/32x32/Scale.png                          |  Bin 506 -> 494 bytes
 src/icons/32x32/SearchGoogle.png                   |  Bin 1923 -> 1959 bytes
 src/icons/32x32/SelectColor.png                    |  Bin 1682 -> 1640 bytes
 src/icons/32x32/SelectRange.png                    |  Bin 831 -> 798 bytes
 src/icons/32x32/SetEle.png                         |  Bin 635 -> 596 bytes
 src/icons/32x32/SetupCoordFormat.png               |  Bin 1108 -> 1178 bytes
 src/icons/32x32/SetupMapWorkspace.png              |  Bin 2020 -> 2011 bytes
 src/icons/32x32/SetupWptSym.png                    |  Bin 0 -> 1898 bytes
 src/icons/32x32/SizeArrow.png                      |  Bin 663 -> 631 bytes
 src/icons/32x32/SlfProject.png                     |  Bin 0 -> 1190 bytes
 src/icons/32x32/Start.png                          |  Bin 858 -> 794 bytes
 src/icons/32x32/Tainted.png                        |  Bin 1182 -> 1152 bytes
 src/icons/32x32/TextBold.png                       |  Bin 535 -> 502 bytes
 src/icons/32x32/TextCenter.png                     |  Bin 371 -> 391 bytes
 src/icons/32x32/TextItalic.png                     |  Bin 378 -> 347 bytes
 src/icons/32x32/TextJustified.png                  |  Bin 315 -> 327 bytes
 src/icons/32x32/TextLeft.png                       |  Bin 334 -> 350 bytes
 src/icons/32x32/TextRight.png                      |  Bin 364 -> 376 bytes
 src/icons/32x32/TextUnderlined.png                 |  Bin 491 -> 384 bytes
 src/icons/32x32/Time.png                           |  Bin 1293 -> 1201 bytes
 src/icons/32x32/TimeZoneSetup.png                  |  Bin 2257 -> 2194 bytes
 src/icons/32x32/ToBottom.png                       |  Bin 660 -> 619 bytes
 src/icons/32x32/ToTop.png                          |  Bin 649 -> 625 bytes
 src/icons/32x32/ToolTip.png                        |  Bin 1078 -> 1036 bytes
 src/icons/32x32/Track.png                          |  Bin 832 -> 790 bytes
 src/icons/32x32/TrkCut.png                         |  Bin 1507 -> 1474 bytes
 src/icons/32x32/TrkProfile.png                     |  Bin 1002 -> 988 bytes
 src/icons/32x32/UnLock.png                         |  Bin 1019 -> 972 bytes
 src/icons/32x32/Undo.png                           |  Bin 937 -> 894 bytes
 src/icons/32x32/UnitSetup.png                      |  Bin 2459 -> 2334 bytes
 src/icons/32x32/Up.png                             |  Bin 645 -> 610 bytes
 src/icons/32x32/V.png                              |  Bin 680 -> 622 bytes
 src/icons/32x32/VrtBuilder.png                     |  Bin 2402 -> 2345 bytes
 src/icons/32x32/WptMove.png                        |  Bin 998 -> 890 bytes
 src/icons/32x32/WptProj.png                        |  Bin 821 -> 783 bytes
 src/icons/32x32/WptProx.png                        |  Bin 917 -> 967 bytes
 src/icons/32x32/Zoom.png                           |  Bin 1154 -> 1081 bytes
 src/icons/48x48/2DFix.png                          |  Bin 1046 -> 1022 bytes
 src/icons/48x48/2NavProject.png                    |  Bin 1843 -> 1767 bytes
 src/icons/48x48/3DFix.png                          |  Bin 1343 -> 1279 bytes
 src/icons/48x48/A.png                              |  Bin 941 -> 876 bytes
 src/icons/48x48/ActAero.png                        |  Bin 1739 -> 1694 bytes
 src/icons/48x48/ActBike.png                        |  Bin 1515 -> 1467 bytes
 src/icons/48x48/ActCable.png                       |  Bin 905 -> 830 bytes
 src/icons/48x48/ActCar.png                         |  Bin 1110 -> 1055 bytes
 src/icons/48x48/ActCycle.png                       |  Bin 1596 -> 1533 bytes
 src/icons/48x48/ActFoot.png                        |  Bin 743 -> 742 bytes
 src/icons/48x48/ActNone.png                        |  Bin 813 -> 752 bytes
 src/icons/48x48/ActShip.png                        |  Bin 1141 -> 954 bytes
 src/icons/48x48/ActSki.png                         |  Bin 0 -> 1333 bytes
 src/icons/48x48/ActSwim.png                        |  Bin 1242 -> 1179 bytes
 src/icons/48x48/Activity.png                       |  Bin 2217 -> 2073 bytes
 src/icons/48x48/Add.png                            |  Bin 400 -> 386 bytes
 src/icons/48x48/AddArea.png                        |  Bin 2198 -> 2200 bytes
 src/icons/48x48/AddImage.png                       |  Bin 1548 -> 1559 bytes
 src/icons/48x48/AddMapWorkspace.png                |  Bin 2416 -> 2458 bytes
 src/icons/48x48/AddProject.png                     |  Bin 1021 -> 1032 bytes
 src/icons/48x48/AddRte.png                         |  Bin 1032 -> 1040 bytes
 src/icons/48x48/AddTrk.png                         |  Bin 1519 -> 1488 bytes
 src/icons/48x48/AddWpt.png                         |  Bin 1189 -> 1107 bytes
 src/icons/48x48/Apply.png                          |  Bin 3238 -> 3072 bytes
 src/icons/48x48/Area.png                           |  Bin 1893 -> 1823 bytes
 src/icons/48x48/AreaMove.png                       |  Bin 2814 -> 2773 bytes
 src/icons/48x48/ArrowDef.png                       |  Bin 0 -> 3415 bytes
 src/icons/48x48/ArrowUser.png                      |  Bin 0 -> 1957 bytes
 src/icons/48x48/Bubble.png                         |  Bin 909 -> 923 bytes
 src/icons/48x48/CSrcATemp.png                      |  Bin 1080 -> 1052 bytes
 src/icons/48x48/CSrcAccel.png                      |  Bin 0 -> 875 bytes
 src/icons/48x48/CSrcCourse.png                     |  Bin 0 -> 1346 bytes
 src/icons/48x48/CSrcUnknown.png                    |  Bin 953 -> 919 bytes
 src/icons/48x48/CSrcWTemp.png                      |  Bin 1599 -> 1567 bytes
 src/icons/48x48/Cancel.png                         |  Bin 1019 -> 992 bytes
 src/icons/48x48/Check.png                          |  Bin 1392 -> 1177 bytes
 src/icons/48x48/CloneMapWorkspace.png              |  Bin 2521 -> 2555 bytes
 src/icons/48x48/Close.png                          |  Bin 1233 -> 1525 bytes
 src/icons/48x48/Combine.png                        |  Bin 979 -> 949 bytes
 src/icons/48x48/Copy.png                           |  Bin 649 -> 635 bytes
 src/icons/48x48/Cut.png                            |  Bin 2027 -> 1939 bytes
 src/icons/48x48/CutHistory.png                     |  Bin 1568 -> 1558 bytes
 src/icons/48x48/DBProject.png                      |  Bin 2245 -> 2217 bytes
 src/icons/48x48/Database.png                       |  Bin 1946 -> 2093 bytes
 src/icons/48x48/DatabaseConvert.png                |  Bin 2617 -> 2693 bytes
 src/icons/48x48/DatabaseSetup.png                  |  Bin 3348 -> 3575 bytes
 src/icons/48x48/DatabaseSync.png                   |  Bin 0 -> 2834 bytes
 src/icons/48x48/DelImage.png                       |  Bin 1442 -> 1457 bytes
 src/icons/48x48/DeleteMultiple.png                 |  Bin 1376 -> 1321 bytes
 src/icons/48x48/DeleteOne.png                      |  Bin 1133 -> 1096 bytes
 src/icons/48x48/Device.png                         |  Bin 825 -> 815 bytes
 src/icons/48x48/Down.png                           |  Bin 938 -> 857 bytes
 src/icons/48x48/EditDetails.png                    |  Bin 2565 -> 2527 bytes
 src/icons/48x48/EditText.png                       |  Bin 1529 -> 1565 bytes
 src/icons/48x48/Empty.png                          |  Bin 861 -> 817 bytes
 src/icons/48x48/Error.png                          |  Bin 1863 -> 1952 bytes
 src/icons/48x48/FilterModifyExtension.png          |  Bin 0 -> 2488 bytes
 src/icons/48x48/FitProject.png                     |  Bin 0 -> 1675 bytes
 src/icons/48x48/FolderDEM.png                      |  Bin 1135 -> 1138 bytes
 src/icons/48x48/FolderMap.png                      |  Bin 2512 -> 2570 bytes
 src/icons/48x48/Font.png                           |  Bin 804 -> 717 bytes
 src/icons/48x48/FromMap.png                        |  Bin 3032 -> 3045 bytes
 src/icons/48x48/GpxProject.png                     |  Bin 1923 -> 1823 bytes
 src/icons/48x48/Grid.png                           |  Bin 661 -> 676 bytes
 src/icons/48x48/GridSetup.png                      |  Bin 3319 -> 3295 bytes
 src/icons/48x48/GridWizzard.png                    |  Bin 2415 -> 2436 bytes
 src/icons/48x48/Help.png                           |  Bin 1770 -> 1958 bytes
 src/icons/48x48/Image.png                          |  Bin 1368 -> 1391 bytes
 src/icons/48x48/Info.png                           |  Bin 1402 -> 1498 bytes
 src/icons/48x48/Left.png                           |  Bin 976 -> 893 bytes
 src/icons/48x48/Limit.png                          |  Bin 0 -> 1715 bytes
 src/icons/48x48/LimitMax.png                       |  Bin 0 -> 928 bytes
 src/icons/48x48/LimitMin.png                       |  Bin 0 -> 993 bytes
 src/icons/48x48/LimitSys.png                       |  Bin 0 -> 2882 bytes
 src/icons/48x48/LimitUsr.png                       |  Bin 0 -> 2051 bytes
 src/icons/48x48/LineMove.png                       |  Bin 1784 -> 1681 bytes
 src/icons/48x48/LineWidthDef.png                   |  Bin 0 -> 3192 bytes
 src/icons/48x48/LineWidthUser.png                  |  Bin 0 -> 1772 bytes
 src/icons/48x48/Link.png                           |  Bin 1093 -> 1286 bytes
 src/icons/48x48/LoadGIS.png                        |  Bin 1508 -> 1444 bytes
 src/icons/48x48/LoadView.png                       |  Bin 2351 -> 2392 bytes
 src/icons/48x48/Lock.png                           |  Bin 1372 -> 1332 bytes
 src/icons/48x48/Map.png                            |  Bin 1923 -> 1841 bytes
 src/icons/48x48/MimeDemVRT.png                     |  Bin 1846 -> 1751 bytes
 src/icons/48x48/MimeGEMF.png                       |  Bin 0 -> 3130 bytes
 src/icons/48x48/MimeIMG.png                        |  Bin 2824 -> 2884 bytes
 src/icons/48x48/MimeJNX.png                        |  Bin 2874 -> 2918 bytes
 src/icons/48x48/MimeMAP.png                        |  Bin 2903 -> 2987 bytes
 src/icons/48x48/MimeRMAP.png                       |  Bin 3105 -> 3149 bytes
 src/icons/48x48/MimeTMS.png                        |  Bin 2203 -> 2225 bytes
 src/icons/48x48/MimeVRT.png                        |  Bin 2839 -> 2805 bytes
 src/icons/48x48/MimeWMTS.png                       |  Bin 3014 -> 3015 bytes
 src/icons/48x48/MouseWheel.png                     |  Bin 1839 -> 1766 bytes
 src/icons/48x48/Move.png                           |  Bin 1126 -> 1086 bytes
 src/icons/48x48/MoveArrow.png                      |  Bin 933 -> 1054 bytes
 src/icons/48x48/MySQL.png                          |  Bin 0 -> 3449 bytes
 src/icons/48x48/MySQLNoConn.png                    |  Bin 0 -> 3485 bytes
 src/icons/48x48/NightDay.png                       |  Bin 1455 -> 1355 bytes
 src/icons/48x48/NoFix.png                          |  Bin 955 -> 925 bytes
 src/icons/48x48/NoGo.png                           |  Bin 2231 -> 2176 bytes
 src/icons/48x48/O.png                              |  Bin 1090 -> 1021 bytes
 src/icons/48x48/Off.png                            |  Bin 1631 -> 1619 bytes
 src/icons/48x48/Opacity.png                        |  Bin 1168 -> 1177 bytes
 src/icons/48x48/POIText.png                        |  Bin 1099 -> 1007 bytes
 src/icons/48x48/Paste.png                          |  Bin 544 -> 524 bytes
 src/icons/48x48/PathBlue.png                       |  Bin 756 -> 743 bytes
 src/icons/48x48/PathGreen.png                      |  Bin 753 -> 758 bytes
 src/icons/48x48/PathOrange.png                     |  Bin 733 -> 705 bytes
 src/icons/48x48/Pattern.png                        |  Bin 2260 -> 2571 bytes
 src/icons/48x48/PointHide.png                      |  Bin 1175 -> 1149 bytes
 src/icons/48x48/PointMove.png                      |  Bin 1518 -> 1319 bytes
 src/icons/48x48/PointShow.png                      |  Bin 869 -> 800 bytes
 src/icons/48x48/Print.png                          |  Bin 1162 -> 1139 bytes
 src/icons/48x48/PrintSave.png                      |  Bin 1069 -> 1032 bytes
 src/icons/48x48/ProfileToWindow.png                |  Bin 1649 -> 1640 bytes
 src/icons/48x48/Progress.png                       |  Bin 650 -> 640 bytes
 src/icons/48x48/QMapShack.png                      |  Bin 2512 -> 2751 bytes
 src/icons/48x48/QmsProject.png                     |  Bin 2108 -> 1999 bytes
 src/icons/48x48/Redo.png                           |  Bin 1344 -> 1245 bytes
 src/icons/48x48/ReloadImage.png                    |  Bin 1723 -> 1734 bytes
 src/icons/48x48/Reset.png                          |  Bin 1896 -> 1794 bytes
 src/icons/48x48/Reverse.png                        |  Bin 1088 -> 970 bytes
 src/icons/48x48/Right.png                          |  Bin 912 -> 869 bytes
 src/icons/48x48/Route.png                          |  Bin 1246 -> 1275 bytes
 src/icons/48x48/RouteSetup.png                     |  Bin 1261 -> 1218 bytes
 src/icons/48x48/RteInstr.png                       |  Bin 1518 -> 1462 bytes
 src/icons/48x48/SQLite.png                         |  Bin 0 -> 3312 bytes
 src/icons/48x48/Save.png                           |  Bin 422 -> 420 bytes
 src/icons/48x48/SaveAllGIS.png                     |  Bin 989 -> 1039 bytes
 src/icons/48x48/SaveGIS.png                        |  Bin 989 -> 1039 bytes
 src/icons/48x48/SaveGISAs.png                      |  Bin 2010 -> 2019 bytes
 src/icons/48x48/SaveView.png                       |  Bin 2196 -> 2253 bytes
 src/icons/48x48/Scale.png                          |  Bin 514 -> 489 bytes
 src/icons/48x48/SearchGoogle.png                   |  Bin 3119 -> 3110 bytes
 src/icons/48x48/SelectColor.png                    |  Bin 2613 -> 2573 bytes
 src/icons/48x48/SelectRange.png                    |  Bin 1129 -> 1091 bytes
 src/icons/48x48/SetEle.png                         |  Bin 903 -> 848 bytes
 src/icons/48x48/SetupCoordFormat.png               |  Bin 1725 -> 1705 bytes
 src/icons/48x48/SetupMapWorkspace.png              |  Bin 3507 -> 3473 bytes
 src/icons/48x48/SetupWptSym.png                    |  Bin 0 -> 3293 bytes
 src/icons/48x48/SizeArrow.png                      |  Bin 807 -> 701 bytes
 src/icons/48x48/SlfProject.png                     |  Bin 0 -> 1859 bytes
 src/icons/48x48/Start.png                          |  Bin 1264 -> 1215 bytes
 src/icons/48x48/Tainted.png                        |  Bin 1896 -> 1829 bytes
 src/icons/48x48/TextBold.png                       |  Bin 742 -> 647 bytes
 src/icons/48x48/TextCenter.png                     |  Bin 407 -> 388 bytes
 src/icons/48x48/TextItalic.png                     |  Bin 493 -> 455 bytes
 src/icons/48x48/TextJustified.png                  |  Bin 381 -> 363 bytes
 src/icons/48x48/TextLeft.png                       |  Bin 403 -> 385 bytes
 src/icons/48x48/TextRight.png                      |  Bin 405 -> 386 bytes
 src/icons/48x48/TextUnderlined.png                 |  Bin 629 -> 521 bytes
 src/icons/48x48/Time.png                           |  Bin 1992 -> 1912 bytes
 src/icons/48x48/TimeZoneSetup.png                  |  Bin 3847 -> 3801 bytes
 src/icons/48x48/ToBottom.png                       |  Bin 932 -> 871 bytes
 src/icons/48x48/ToTop.png                          |  Bin 902 -> 868 bytes
 src/icons/48x48/ToolTip.png                        |  Bin 1587 -> 1491 bytes
 src/icons/48x48/Track.png                          |  Bin 1270 -> 1174 bytes
 src/icons/48x48/TrkCut.png                         |  Bin 2422 -> 2396 bytes
 src/icons/48x48/TrkProfile.png                     |  Bin 1359 -> 1370 bytes
 src/icons/48x48/UnLock.png                         |  Bin 1509 -> 1485 bytes
 src/icons/48x48/Undo.png                           |  Bin 1370 -> 1303 bytes
 src/icons/48x48/UnitSetup.png                      |  Bin 4223 -> 4048 bytes
 src/icons/48x48/Up.png                             |  Bin 915 -> 877 bytes
 src/icons/48x48/V.png                              |  Bin 991 -> 887 bytes
 src/icons/48x48/VrtBuilder.png                     |  Bin 4166 -> 4119 bytes
 src/icons/48x48/WptMove.png                        |  Bin 1537 -> 1415 bytes
 src/icons/48x48/WptProj.png                        |  Bin 1239 -> 1122 bytes
 src/icons/48x48/WptProx.png                        |  Bin 1341 -> 1396 bytes
 src/icons/48x48/Zoom.png                           |  Bin 1784 -> 1712 bytes
 src/icons/ActSki.svg                               |  105 +
 src/icons/ArrowDef.svg                             |   95 +
 src/icons/ArrowUser.svg                            |  119 +
 src/icons/CSrcAccel.svg                            |  126 +
 src/icons/CSrcCourse.svg                           |  388 +
 src/icons/DatabaseSync.svg                         |  166 +
 src/icons/FilterModifyExtension.svg                |  181 +
 src/icons/FitProject.svg                           |  114 +
 src/icons/Limit.svg                                |  131 +
 src/icons/LimitMax.svg                             |  103 +
 src/icons/LimitMin.svg                             |  100 +
 src/icons/LimitSys.svg                             |  123 +
 src/icons/LimitUsr.svg                             |  147 +
 src/icons/LineWidthDef.svg                         |  102 +
 src/icons/LineWidthUser.svg                        |  124 +
 src/icons/MimeGEMF.svg                             |   91 +
 src/icons/MySQL.svg                                |  175 +
 src/icons/MySQLNoConn.svg                          |  187 +
 src/icons/QMapShack.svg                            | 2094 ++++-
 src/icons/SQLite.svg                               |  175 +
 src/icons/SetupWptSym.svg                          |   87 +
 src/icons/SlfProject.svg                           |  115 +
 src/icons/makeicons                                |    3 +
 src/locale/{qmapshack_es.ts => qmapshack.ts}       | 8275 +++++++++---------
 src/locale/qmapshack_cs.ts                         | 3471 ++++++--
 src/locale/qmapshack_de.desktop                    |    3 +
 src/locale/qmapshack_de.ts                         | 9153 ++++++++++----------
 src/locale/qmapshack_es.ts                         | 3485 +++++---
 src/locale/qmapshack_fr.ts                         | 3706 +++++---
 src/locale/qmapshack_nl.ts                         | 3768 +++++---
 src/main.cpp                                       |   12 +-
 src/map/CMapDraw.cpp                               |   37 +-
 src/map/CMapDraw.h                                 |    9 +-
 src/map/CMapGEMF.cpp                               |  300 +
 src/map/CMapGEMF.h                                 |   73 +
 src/map/CMapIMG.cpp                                |   12 +-
 src/map/CMapIMG.h                                  |    9 +-
 src/map/CMapItem.cpp                               |   11 +-
 src/map/CMapItem.h                                 |    2 +-
 src/map/CMapJNX.cpp                                |    2 +-
 src/map/CMapJNX.h                                  |   10 +-
 src/map/CMapList.cpp                               |   86 +-
 src/map/CMapList.h                                 |    9 +-
 src/map/CMapMAP.cpp                                |    2 +-
 src/map/CMapMAP.h                                  |   23 +-
 src/map/CMapPathSetup.cpp                          |   10 +-
 src/map/CMapPathSetup.h                            |    2 +-
 src/map/CMapPropSetup.cpp                          |   49 +-
 src/map/CMapPropSetup.h                            |    4 +-
 src/map/CMapRMAP.cpp                               |   10 +-
 src/map/CMapRMAP.h                                 |   20 +-
 src/map/CMapTMS.cpp                                |   18 +-
 src/map/CMapTMS.h                                  |   14 +-
 src/map/CMapVRT.cpp                                |   32 +-
 src/map/CMapVRT.h                                  |   14 +-
 src/map/CMapWMTS.cpp                               |   14 +-
 src/map/CMapWMTS.h                                 |   14 +-
 src/map/IMap.cpp                                   |   16 +-
 src/map/IMap.h                                     |   32 +-
 src/map/IMapList.ui                                |   33 +
 src/map/IMapProp.cpp                               |    2 +-
 src/map/IMapProp.h                                 |    2 +-
 src/map/IMapPropSetup.cpp                          |    2 +-
 src/map/cache/CDiskCache.cpp                       |    2 +-
 src/map/cache/CDiskCache.h                         |    6 +-
 src/map/garmin/CGarminStrTbl6.cpp                  |    2 +-
 src/map/garmin/CGarminStrTbl6.h                    |    8 +-
 src/map/garmin/CGarminStrTbl8.h                    |    2 +-
 src/map/garmin/CGarminStrTblUtf8.h                 |    4 +-
 src/map/garmin/CGarminTyp.cpp                      |    4 +-
 src/map/garmin/CGarminTyp.h                        |   23 +-
 src/map/garmin/IGarminStrTbl.h                     |    4 +-
 src/map/mapsforge/types.cpp                        |    4 +-
 src/mouse/CMouseDummy.h                            |   12 +-
 src/mouse/CMouseEditArea.cpp                       |    6 +-
 src/mouse/CMouseEditArea.h                         |   12 +-
 src/mouse/CMouseEditRte.cpp                        |    6 +-
 src/mouse/CMouseEditRte.h                          |   10 +-
 src/mouse/CMouseEditTrk.cpp                        |    8 +-
 src/mouse/CMouseEditTrk.h                          |   10 +-
 src/mouse/CMouseMoveWpt.cpp                        |    2 +-
 src/mouse/CMouseMoveWpt.h                          |   12 +-
 src/mouse/CMouseNormal.cpp                         |   13 +-
 src/mouse/CMouseNormal.h                           |   29 +-
 src/mouse/CMousePrint.h                            |   10 +-
 src/mouse/CMouseRangeTrk.cpp                       |   41 +-
 src/mouse/CMouseRangeTrk.h                         |   12 +-
 src/mouse/CMouseWptBubble.h                        |   10 +-
 src/mouse/CScrOptRangeTrk.cpp                      |   10 +-
 src/mouse/CScrOptRangeTrk.h                        |    4 +-
 src/mouse/CScrOptUnclutter.cpp                     |    2 +-
 src/mouse/CScrOptUnclutter.h                       |    4 +-
 src/mouse/IMouse.cpp                               |    4 +-
 src/mouse/IMouse.h                                 |   14 +-
 src/mouse/IScrOpt.h                                |    6 +-
 src/mouse/line/CLineOpAddPoint.h                   |   12 +-
 src/mouse/line/CLineOpDeletePoint.h                |    8 +-
 src/mouse/line/CLineOpMovePoint.h                  |   12 +-
 src/mouse/line/CLineOpSelectRange.cpp              |   18 +-
 src/mouse/line/CLineOpSelectRange.h                |   14 +-
 src/mouse/line/CScrOptEditLine.h                   |    2 +-
 src/mouse/line/CScrOptRangeLine.cpp                |    2 +-
 src/mouse/line/CScrOptRangeLine.h                  |    2 +-
 src/mouse/line/ILineOp.cpp                         |    2 +-
 src/mouse/line/IMouseEditLine.cpp                  |   71 +-
 src/mouse/line/IMouseEditLine.h                    |   21 +-
 src/mouse/line/IScrOptEditLine.ui                  |   15 +-
 src/plot/CPlot.cpp                                 |   40 +-
 src/plot/CPlot.h                                   |   19 +-
 src/plot/CPlotAxis.cpp                             |  214 +-
 src/plot/CPlotAxis.h                               |   47 +-
 src/plot/CPlotAxisTime.cpp                         |   32 +-
 src/plot/CPlotAxisTime.h                           |   19 +-
 src/plot/CPlotData.cpp                             |   33 +-
 src/plot/CPlotData.h                               |    4 +-
 src/plot/CPlotProfile.cpp                          |   38 +-
 src/plot/CPlotProfile.h                            |   16 +-
 src/plot/CPlotTrack.h                              |    4 +-
 src/plot/IPlot.cpp                                 |  481 +-
 src/plot/IPlot.h                                   |   55 +-
 src/plot/ITrack.cpp                                |    2 +-
 src/plot/ITrack.h                                  |    2 +-
 src/print/CPrintDialog.cpp                         |    8 +-
 src/print/CPrintDialog.h                           |    2 +-
 src/print/IPrintDialog.ui                          |   20 +
 src/qlgt/CQlgtDb.h                                 |    2 +
 src/qlgt/CQlgtDiary.h                              |    2 +-
 src/qlgt/CQlgtRoute.h                              |    2 +-
 src/qlgt/CQlgtTrack.cpp                            |   11 +-
 src/qlgt/CQlgtTrack.h                              |   69 +-
 src/qlgt/CQlgtWpt.cpp                              |    4 +-
 src/qlgt/CQlgtWpt.h                                |   14 +-
 src/qlgt/CQmsDb.cpp                                |    9 +-
 src/qlgt/CQmsDb.h                                  |    5 +-
 src/qlgt/IItem.h                                   |    2 +-
 src/qlgt/IQlgtOverlay.cpp                          |    1 -
 src/qlgt/IQlgtOverlay.h                            |    8 +-
 src/qlgt/converter.cpp                             |    8 +-
 src/resources.qrc                                  |   45 +
 src/test/CGpxProject.cpp                           |   70 +
 src/test/CSlfReader.cpp                            |   66 +
 src/test/input/qtt_gpx_file0.gpx                   | 5768 ++++++++++++
 src/test/input/qtt_gpx_file0.gpx.xml               |   23 +
 src/test/input/qtt_slf_file0.slf                   |    2 +
 src/test/input/qtt_slf_file0.slf.xml               |   27 +
 src/test/input/randomize_hr.awk                    |   27 +
 src/test/main.cpp                                  |  200 +
 src/test/test_QMapShack.h                          |   61 +
 src/tool/CImportDatabase.cpp                       |   10 +-
 src/tool/CImportDatabase.h                         |    1 -
 src/tool/CMapVrtBuilder.cpp                        |    6 +-
 src/tool/CMapVrtBuilder.h                          |    2 +-
 src/tool/CRoutinoDatabaseBuilder.cpp               |    8 +-
 src/tool/CRoutinoDatabaseBuilder.h                 |    2 +-
 src/tool/IToolShell.cpp                            |    9 +-
 src/units/CCoordFormatSetup.h                      |    2 +-
 src/units/CTimeZoneSetup.h                         |    2 +-
 src/units/CUnitImperial.cpp                        |    8 +-
 src/units/CUnitImperial.h                          |   13 +-
 src/units/CUnitMetric.cpp                          |   10 +-
 src/units/CUnitMetric.h                            |   13 +-
 src/units/CUnitNautic.cpp                          |   10 +-
 src/units/CUnitNautic.h                            |   16 +-
 src/units/CUnitsSetup.h                            |    3 +-
 src/units/IUnit.cpp                                |   36 +-
 src/units/IUnit.h                                  |   26 +-
 src/widgets/CColorChooser.cpp                      |   64 +
 .../wpt/CProjWpt.h => widgets/CColorChooser.h}     |   27 +-
 src/widgets/CColorLegend.cpp                       |   40 +-
 src/widgets/CColorLegend.h                         |   28 +-
 src/widgets/CDoubleSpinBox.h                       |    6 +-
 src/widgets/CFadingIcon.cpp                        |    2 +-
 src/widgets/CHistoryListWidget.cpp                 |   16 +-
 src/widgets/CLineEdit.cpp                          |   90 +
 src/widgets/{CTinySpinBox.h => CLineEdit.h}        |   27 +-
 src/widgets/CPhotoAlbum.cpp                        |    4 +-
 src/widgets/CPhotoAlbum.h                          |    6 +-
 src/widgets/CTextEditWidget.cpp                    |   40 +-
 src/widgets/CTinySpinBox.h                         |    8 +-
 src/widgets/IColorChooser.ui                       |   43 +
 templates/header.h                                 |    2 +-
 templates/source.c                                 |    2 +-
 templates/source.cpp                               |    2 +-
 818 files changed, 54409 insertions(+), 19470 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7eeb853..cae108c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,6 +2,15 @@ cmake_minimum_required(VERSION 3.0.0)
 
 project(QMapShack)
 
+option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF)
+
+# Needed to properly handle extract translations strings when using the Ninja
+# generator.
+if (COMMAND CMAKE_POLICY)
+    if (POLICY CMP0058)
+        cmake_policy(SET CMP0058 NEW)
+    endif()
+endif()
 
 if(WIN32)
 set(QT_DEV_PATH   "C:\\Qt\\5.4\\msvc2013_64" CACHE PATH "Path to directory containing Qt5 include and lib, e.g. C:\\Qt5\\5.3\\msvc2013_64")
@@ -16,8 +25,8 @@ endif(WIN32)
 set(APPLICATION_NAME qmapshack)
 
 set(APPLICATION_VERSION_MAJOR "1")
-set(APPLICATION_VERSION_MINOR "5")
-set(APPLICATION_VERSION_PATCH "1")
+set(APPLICATION_VERSION_MINOR "6")
+set(APPLICATION_VERSION_PATCH "0")
 
 add_definitions(-DVER_MAJOR=${APPLICATION_VERSION_MAJOR} -DVER_MINOR=${APPLICATION_VERSION_MINOR} -DVER_STEP=${APPLICATION_VERSION_PATCH} -DAPPLICATION_NAME=${PROJECT_NAME})
 
@@ -45,6 +54,10 @@ set(CMAKE_MODULE_PATH
   ${CMAKE_SOURCE_DIR}/cmake/Modules
 )
 
+# Bring translation support in
+include(TranslateTs)
+include(TranslateDesktop)
+
 # add definitions
 include(DefineCMakeDefaults)
 include(DefineCompilerFlags)
@@ -62,13 +75,6 @@ add_subdirectory(src)
 if (UNIX AND NOT WIN32 AND NOT APPLE)
   install(
     FILES
-      qmapshack.desktop
-    DESTINATION
-      ${XDG_APPS_DIR}
-  )
-
-  install(
-    FILES
       src/icons/48x48/QMapShack.png
     DESTINATION
       ${DATA_INSTALL_PREFIX}/pixmaps
diff --git a/CMakeLists.txt.user b/CMakeLists.txt.user
index 8778814..19abeef 100644
--- a/CMakeLists.txt.user
+++ b/CMakeLists.txt.user
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 3.5.1, 2015-11-22T17:55:20. -->
+<!-- Written by QtCreator 3.6.0, 2016-02-22T13:02:45. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
-  <value type="QByteArray">{f0360923-ff9d-4a52-8b8f-72d5ce639493}</value>
+  <value type="QByteArray">{2664d6c3-cac3-44ef-bde0-590e210eae25}</value>
  </data>
  <data>
   <variable>ProjectExplorer.Project.ActiveTarget</variable>
@@ -60,11 +60,12 @@
   <valuemap type="QVariantMap">
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{5eb63cc2-9ef2-4dc1-ab45-bc82e79614e7}</value>
+   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{021ef025-5564-47de-9a05-7e6d336dd5ab}</value>
    <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
    <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
    <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
    <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+    <value type="QString" key="CMakeProjectManager.CMakeBuildConfiguration.InitialArgument"></value>
     <value type="bool" key="CMakeProjectManager.CMakeBuildConfiguration.UseNinja">false</value>
     <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/oeichler/Code/cpp/build_QMapShack</value>
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
@@ -122,6 +123,10 @@
    <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
    <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
    <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+    <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
+    <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">0</value>
+    <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
+    <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
     <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
     <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
     <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
@@ -157,8 +162,9 @@
      <value type="int">14</value>
     </valuelist>
     <value type="QString" key="CMakeProjectManager.CMakeRunConfiguation.Title">qmapshack</value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments"></value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory"></value>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments">-d</value>
+    <value type="bool" key="CMakeProjectManager.CMakeRunConfiguration.UseTerminal">false</value>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory">/home/oeichler/Code/cpp/build_QMapShack/</value>
     <value type="int" key="PE.EnvironmentAspect.Base">2</value>
     <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmapshack</value>
@@ -171,7 +177,62 @@
     <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
     <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
    </valuemap>
-   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
+    <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
+    <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">0</value>
+    <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
+    <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+     <value type="int">0</value>
+     <value type="int">1</value>
+     <value type="int">2</value>
+     <value type="int">3</value>
+     <value type="int">4</value>
+     <value type="int">5</value>
+     <value type="int">6</value>
+     <value type="int">7</value>
+     <value type="int">8</value>
+     <value type="int">9</value>
+     <value type="int">10</value>
+     <value type="int">11</value>
+     <value type="int">12</value>
+     <value type="int">13</value>
+     <value type="int">14</value>
+    </valuelist>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguation.Title">qttest</value>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments"></value>
+    <value type="bool" key="CMakeProjectManager.CMakeRunConfiguration.UseTerminal">false</value>
+    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory"></value>
+    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qttest</value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.qttest</value>
+    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+   </valuemap>
+   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">2</value>
   </valuemap>
  </data>
  <data>
diff --git a/CMakeLists.txt.user.044d553 b/CMakeLists.txt.user.044d553
deleted file mode 100644
index e8260af..0000000
--- a/CMakeLists.txt.user.044d553
+++ /dev/null
@@ -1,292 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 3.5.1, 2015-11-19T20:54:38. -->
-<qtcreator>
- <data>
-  <variable>EnvironmentId</variable>
-  <value type="QByteArray">{044d553a-749a-4a4b-b707-1344605bd255}</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.ActiveTarget</variable>
-  <value type="int">0</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.EditorSettings</variable>
-  <valuemap type="QVariantMap">
-   <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
-   <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
-   <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
-   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
-    <value type="QString" key="language">Cpp</value>
-    <valuemap type="QVariantMap" key="value">
-     <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
-    </valuemap>
-   </valuemap>
-   <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
-    <value type="QString" key="language">QmlJS</value>
-    <valuemap type="QVariantMap" key="value">
-     <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
-    </valuemap>
-   </valuemap>
-   <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
-   <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
-   <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
-   <value type="int" key="EditorConfiguration.IndentSize">4</value>
-   <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
-   <value type="int" key="EditorConfiguration.MarginColumn">80</value>
-   <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
-   <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
-   <value type="int" key="EditorConfiguration.PaddingMode">1</value>
-   <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
-   <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
-   <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
-   <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
-   <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
-   <value type="int" key="EditorConfiguration.TabSize">8</value>
-   <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
-   <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
-   <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
-   <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
-   <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
-   <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
-  </valuemap>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.PluginSettings</variable>
-  <valuemap type="QVariantMap"/>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.Target.0</variable>
-  <valuemap type="QVariantMap">
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Qt 4.8.4 in Pfad (System)</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt 4.8.4 in Pfad (System)</value>
-   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{b3896d75-6773-49ab-b85b-a90805c4269a}</value>
-   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
-   <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
-   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
-    <value type="bool" key="CMakeProjectManager.CMakeBuildConfiguration.UseNinja">false</value>
-    <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/oeichler/Code/cpp/build_QMapShack</value>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments">-j8</value>
-      <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
-      <value type="bool" key="CMakeProjectManager.MakeStep.Clean">false</value>
-      <value type="QString" key="CMakeProjectManager.MakeStep.MakeCommand"></value>
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
-    </valuemap>
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
-     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
-      <value type="QString" key="CMakeProjectManager.MakeStep.AdditionalArguments">clean</value>
-      <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"/>
-      <value type="bool" key="CMakeProjectManager.MakeStep.Clean">true</value>
-      <value type="QString" key="CMakeProjectManager.MakeStep.MakeCommand"></value>
-      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
-     </valuemap>
-     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
-    <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
-    <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">all</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
-   </valuemap>
-   <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">1</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
-    <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
-     <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deployment</value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-     <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
-    </valuemap>
-    <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Lokales Deployment</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
-   </valuemap>
-   <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
-    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
-    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
-    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
-    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
-    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
-    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
-    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
-    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
-     <value type="int">0</value>
-     <value type="int">1</value>
-     <value type="int">2</value>
-     <value type="int">3</value>
-     <value type="int">4</value>
-     <value type="int">5</value>
-     <value type="int">6</value>
-     <value type="int">7</value>
-     <value type="int">8</value>
-     <value type="int">9</value>
-     <value type="int">10</value>
-     <value type="int">11</value>
-     <value type="int">12</value>
-     <value type="int">13</value>
-     <value type="int">14</value>
-    </valuelist>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguation.Title">qmapshack</value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments"></value>
-    <value type="bool" key="CMakeProjectManager.CMakeRunConfiguration.UseTerminal">false</value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory"></value>
-    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
-    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmapshack</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.qmapshack</value>
-    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
-    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
-    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
-    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
-   </valuemap>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.1">
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
-    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
-    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
-    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
-    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
-    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
-    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
-    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
-    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
-     <value type="int">0</value>
-     <value type="int">1</value>
-     <value type="int">2</value>
-     <value type="int">3</value>
-     <value type="int">4</value>
-     <value type="int">5</value>
-     <value type="int">6</value>
-     <value type="int">7</value>
-     <value type="int">8</value>
-     <value type="int">9</value>
-     <value type="int">10</value>
-     <value type="int">11</value>
-     <value type="int">12</value>
-     <value type="int">13</value>
-     <value type="int">14</value>
-    </valuelist>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguation.Title">router</value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments"></value>
-    <value type="bool" key="CMakeProjectManager.CMakeRunConfiguration.UseTerminal">false</value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory"></value>
-    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
-    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">router (deaktiviert)</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.router</value>
-    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
-    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
-    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
-    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
-   </valuemap>
-   <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.2">
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
-    <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
-    <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
-    <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
-    <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
-    <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
-    <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
-    <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
-    <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
-    <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
-    <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
-    <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
-     <value type="int">0</value>
-     <value type="int">1</value>
-     <value type="int">2</value>
-     <value type="int">3</value>
-     <value type="int">4</value>
-     <value type="int">5</value>
-     <value type="int">6</value>
-     <value type="int">7</value>
-     <value type="int">8</value>
-     <value type="int">9</value>
-     <value type="int">10</value>
-     <value type="int">11</value>
-     <value type="int">12</value>
-     <value type="int">13</value>
-     <value type="int">14</value>
-    </valuelist>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguation.Title">planetsplitter</value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.Arguments"></value>
-    <value type="bool" key="CMakeProjectManager.CMakeRunConfiguration.UseTerminal">false</value>
-    <value type="QString" key="CMakeProjectManager.CMakeRunConfiguration.UserWorkingDirectory"></value>
-    <value type="int" key="PE.EnvironmentAspect.Base">2</value>
-    <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">planetsplitter (deaktiviert)</value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
-    <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.planetsplitter</value>
-    <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
-    <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
-    <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
-    <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
-    <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
-   </valuemap>
-   <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">3</value>
-  </valuemap>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.TargetCount</variable>
-  <value type="int">1</value>
- </data>
- <data>
-  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
-  <value type="int">18</value>
- </data>
- <data>
-  <variable>Version</variable>
-  <value type="int">18</value>
- </data>
-</qtcreator>
diff --git a/MacOSX/HowtoBuildOSX.txt b/MacOSX/HowtoBuildOSX.txt
new file mode 100644
index 0000000..8dc27dc
--- /dev/null
+++ b/MacOSX/HowtoBuildOSX.txt
@@ -0,0 +1,132 @@
+Howto Building QMapShack on OS-X
+********************************
+
+This document describes how to build QMapShack on OS-X.
+All commands listed in this how to are executed in a terminal. Bash version 3 and
+above must be installed to execute the scripts.
+
+Additional Software & Installation
+**********************************
+To be able to build QMapShack there are several software packages and libraries 
+required:
+- proj4 library (version x)
+- gdal library (version x)
+- qt5 framework (version 5.5 and above)
+- routino library (version)
+- qmapshack
+- cmake (version 3.x and above)
+- svn command line tool
+- mercurial (hg) command line tool
+
+The best way is to install most of the required packages is by using brew.
+Download the brew package manager if you not already have:
+ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
+
+After istalling brew use it to install most of the required packages:
+brew install proj4
+brew install gdal
+brew install cmake
+brew install qt5 --with-d-bus, --with-mysql
+brew install svn
+brew install hg
+
+The qt5 package needs some patience if you have selected the options "--with-d-bus" 
+and "--with-mysql".
+But you will need this to successfully build QMapShack. You may also considering 
+to install the qt5 additions "--with-docs --with-examples --with-developer"
+
+
+The routino library source must be downloaded from the SVN repository
+"http://routino.org/svn/trunk/" built manually.
+To checkout routino create a new directory where the source should be stored,
+cd into the directory and checkout routino with the command:
+svn checkout http://routino.org/svn/trunk/
+
+To make the build easier, there is the bash script "build-routino.sh" in the same 
+directory as this how to. To run the script, you need to set two environment 
+variables in advanced:
+
+ROUTINO_LIB_DIR=... (absolute path to directory where the build library and other files will be stored)
+ROUTINO_SRC_DIR=... (absolute path to directory where the source code will be checked out)
+
+the call the script:
+
+./build-routino.sh routino-build
+
+
+Building and Bundling QMapShack
+*******************************
+Now you need to get the source of QMapShack:
+hg clone https://bitbucket.org/maproom/qmapshack
+
+In the same directory as this how to is the bash script "bundle.sh". The script 
+does all steps for packaging the application but not building the binary.
+So you need to build the binary first with the command:
+
+mkdir build_QMapShack
+cd build_QMapShack
+cmake ../QMapShack -DCMAKE_PREFIX_PATH=/usr/local/Cellar/qt5/5.5.1_2 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.11 -DROUTINO_DEV_PATH=/data/GPS/dev/routino-lib -DCMAKE_BUILD_TYPE=Release
+make
+
+"QMapShack" is the relative path to where you have checked out QMapShack.
+
+The four passed parameter are more or less self describing:
+
+CMAKE_PREFIX_PATH path to used libraries by QMapShack, QT5 needs to be set by default.
+CMAKE_OSX_DEPLOYMENT_TARGET the target system of the build (10.11 is the El Capitan OS-X, see https://en.wikipedia.org/wiki/OS_X#Versions for a full list)
+ROUTINO_DEV_PATH  The path to the routino library (is the same as you set previously with ROUTINO_LIB_DIR)
+CMAKE_BUILD_TYPE "Debug" or "Release" depending what you want.
+
+If the build was successful, you can run the packaging with several environment 
+variables set:
+
+QT_DIR=...            (absolute path to the qt5 library base package, same as in CMAKE_PREFIX_PATH)
+GDAL_DIR=...          (absolute path to the gdal library base package)
+PROJ_DIR=...          (absolute path to the proj4 library base package)
+ROUTINO_LIB_DIR=..    (absolute path to the routino library base package, same as ROUTINO_LIB_DIR / ROUTINO_DEV_PATH)
+BUILD_DIR=..          (absolute path to the QMapShack build directory, the created directory "build_QMapShack" for the cmake build)
+QMS_SRC_DIR=...       (absolute path to the QMapShack source, the directory "QMapShack" used by cmake)
+BUILD_BIN_DIR=...     (absolute path to the direcotry with the qmapshack binary, typically build_QMapShack/bin for cmake build; depends on IDE)
+BUILD_RELEASE_DIR=... (absolute path to the direcotry where the application bundle should be placed)
+
+./bundle.sh bundle
+
+If everything is ok, you will get the package "QMapShack.app" in the directory "BUILD_RELEASE_DIR".
+Double-click on the package and have fun with QMapShack.
+
+
+Debugging QMapShack
+*******************
+The best way to debug QMapShack is using your IDE. To open QMapShack do for...
+
+* Create Xcode project from source:
+
+mkdir build_xcode
+cmake ../QMapShack -G Xcode -D....
+
+The same command as described in the build with cmake, except of the additional 
+option "-G Xcode".
+
+* JetBrains CLion:
+Nothing to be done, just open the Project folder in CLion.
+You need to set "CMake options" under "Preferences > Build, Execution, Development > CMake".
+
+-DCMAKE_PREFIX_PATH=/usr/local/Cellar/qt5/5.5.1_2 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.11 -DROUTINO_DEV_PATH=/data/GPS/dev/routino-lib
+
+The list is the same as described for the cmake build above.
+
+
+A note about directory structure in QMapShack
+********************************************
+QMapShack relies on the directory structure of a OS-X application bundle. This 
+means that you can not run QMapShack correctly if you just make a build (binary)
+and run this. You need many different files placed with the correct relative path
+to the binary. If you don't have this, you will get already at the startup of 
+QMapShack an error message (which you can click away at your own risk).
+The easiest way to have a fully working version from within your IDE of QMapShack:
+- Create a bundle as described above in "Building and Bundling QMapShack"
+- Open the bundle QMapShack.app and copy the subdirectory Contents/Resources
+- Paste the copied directory Resources relative one directory up to the binary
+qmapshack directory (../Resources)
+
+When starting qmapshack now, there shouldn't be an error message anymore.
diff --git a/MacOSX/build-cask.sh b/MacOSX/build-cask.sh
deleted file mode 100644
index 909f0c9..0000000
--- a/MacOSX/build-cask.sh
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/bin/bash
-
-DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-source $DIR/env-path.sh
-
-GITHUB_USER='kribe'
-CASK_DIR=$(brew --prefix)/Library/Taps/caskroom/homebrew-cask
-CASK_SRC_DIR=/$ROOT_DIR/homebrew-cask
-CASK_QMS_FILE=Casks/qmapshack.rb
-CASK_QMS='qmapshack'
-
-function command {
-    echo "$CASK_DIR/"
-    echo "CREATE BRANCH:" 
-    echo "git checkout $CASK_QMS"
-    echo "git pull"
-    echo "git remote -v"
-    echo "git remote add $GITHUB_USER https://github.com/$GITHUB_USER/homebrew-cask"
-    echo "git checkout remotes/origin/$CASK_QMS -b $CASK_QMS"
-    echo ""
-    echo "COMMIT BRANCH:"
-    echo "git status"
-    echo "git commit -m 'QMapShack v $VERSION_FILE' -v"
-    echo "git push $GITHUB_USER $CASK_QMS"
-    echo "git checkout master"
-    echo ""
-    echo "PULL REQUEST ERSTELLEN:"
-    echo "https://github.com/$GITHUB_USER/homebrew-cask" 
-}
-
-function updateCask {
-    cp $CASK_SRC_DIR/$CASK_QMS_FILE ./qmapshack-save-src.rb
-    cp $CASK_DIR/$CASK_QMS_FILE ./qmapshack-save.rb
-    
-    cd $CASK_SRC_DIR
-    
-    FILE_NAME=`ls $BUILD_RELEASE_DIR/*.tar.gz | sort -n | head -1`
-    SHASUM=`shasum -a 256 $FILE_NAME | awk '{ print $1 }'`
-    
-    VERSION_FILE="${FILE_NAME%.tar.gz}"
-    VERSION_FILE="${VERSION_FILE#*MacOSX\_}"
-    
-    cat $CASK_SRC_DIR/$CASK_QMS_FILE
-    echo "$FILE_NAME $SHASUM $VERSION_FILE" 
-    sed "s/version .*/version '$VERSION_FILE'/" $CASK_SRC_DIR/$CASK_QMS_FILE > ./qmapshack.tmp
-    sed "s/sha256.*/sha256 '$SHASUM'/"  ./qmapshack.tmp > $CASK_SRC_DIR/$CASK_QMS_FILE
-    rm ./qmapshack.tmp
-    cat $CASK_SRC_DIR/$CASK_QMS_FILE
-    cp $CASK_SRC_DIR/$CASK_QMS_FILE $CASK_DIR/$CASK_QMS_FILE
-    brew cask install $CASK_QMS
-    brew cask audit $CASK_QMS --download
-    
-    command
-    
-}
-
-if [[ "$1" == "cask" ]]; then
-    updateCask
-fi
\ No newline at end of file
diff --git a/MacOSX/build-qmapshack.sh b/MacOSX/build-qmapshack.sh
deleted file mode 100644
index d304fa0..0000000
--- a/MacOSX/build-qmapshack.sh
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/bin/bash
-
-DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-source $DIR/env-path.sh
-
-
-function installLibraies {
-    if ! [ -x "$(command -v brew)" ]; then
-        ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
-    fi
-    brew install caskroom/cask/brew-cask
-    
-    brew install qt5
-    brew install gdal
-    brew install proj
-}
-
-function updateLibraies {
-    brew update
-    
-    brew upgrade caskroom/cask/brew-cask
-    brew info qt5
-    brew info gdal
-    brew info proj
-    
-    brew outdated
-    # brew upgrade
-    brew upgrade qt5
-    brew upgrade gdal
-    brew upgrade proj
-}
-
-
-# mhg update
-# mhg pull
-
-function makeXcodePrj {
-    
-    if [  -d $BUILD_DIR ]; then
-        rm -rf $BUILD_DIR  
-    fi
-    mkdir $BUILD_DIR
-    cd $BUILD_DIR
-    cmake -G Xcode -D CMAKE_PREFIX_PATH=$QT_DIR -D CMAKE_OSX_DEPLOYMENT_TARGET=10.5 -D ROUTINO_DEV_PATH=$LIB_ROUTINO_DIR $SRC_QMAPSHACK_DIR
-}
-
-function setFormatter {
-    cp ./clang-format /~/.clang-format
-}
-
-
-if [[ "$1" == "format" ]]; then
-    setFormatter
-fi
-
-if [[ "$1" == "xcode" ]]; then
-    makeXcodePrj
-fi
-
-if [[ "$1" == "pre-install" ]]; then
-    installLibraies
-    updateLibraies
-fi
-
-# -d -h -c 
-if [[ "$1" == "run" ]]; then
-    $BUILD_BUNDLE_APP_FILE $2 $3 $4 $5 $6
-fi
-
-if [[ "$1" == "run-bare" ]]; then
-    $BUILD_RELEASE_DIR/$APP_NAME $2 $3 $4 $5 $6
-fi
\ No newline at end of file
diff --git a/MacOSX/build-routino.sh b/MacOSX/build-routino.sh
index ebc57f5..ead034c 100644
--- a/MacOSX/build-routino.sh
+++ b/MacOSX/build-routino.sh
@@ -1,31 +1,44 @@
 #!/bin/bash
 
-DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-source $DIR/env-path.sh
+if [[ "$ROUTINO_LIB_DIR" == "" ]]; then
+	echo "ROUTINO_LIB_DIR not set"
+fi
+if [[ "$ROUTINO_SRC_DIR" == "" ]]; then
+	echo "ROUTINO_SRC_DIR not set"
+fi
 
-SRC_ROUTINO_DIR_B=$ROOT_DIR/routino-lib-src
-SRC_ROUTINO_DIR_T=$ROOT_DIR/routino-src
-SRC_ROUTINO_DIR=$SRC_ROUTINO_DIR_T
+
+ROUTINO_LIB_LIB_DIR=$ROUTINO_LIB_DIR/lib
+ROUTINO_LIB_H_DIR=$ROUTINO_LIB_DIR/include
+ROUTINO_LIB_XML_DIR=$ROUTINO_LIB_DIR/xml
 
 REPO_URL_B=http://routino.org/svn/branches/libroutino/
 REPO_URL_T=http://routino.org/svn/trunk/
 
+
+function checkoutRoutino {
+	if ! [ -d "$ROUTINO_SRC_DIR" ]; then
+		mkdir $ROUTINO_SRC_DIR
+		svn checkout $REPO_URL_T
+	fi
+}
+
 function updateRoutino {
-    svn revert $SRC_ROUTINO_DIR
-    svn update $SRC_ROUTINO_DIR
+    svn revert $ROUTINO_SRC_DIR
+    svn update $ROUTINO_SRC_DIR
 }
 
 function buildRoutino {
-    cd $SRC_ROUTINO_DIR
-    rm $SRC_ROUTINO_DIR/src/*.o
-    rm $SRC_ROUTINO_DIR/src/filedumper
-    rm $SRC_ROUTINO_DIR/src/filedumper-slim
-    rm $SRC_ROUTINO_DIR/src/filedumperx
-    rm $SRC_ROUTINO_DIR/src/libroutino.so
-    rm $SRC_ROUTINO_DIR/src/planetsplitter
-    rm $SRC_ROUTINO_DIR/src/planetsplitter-slim
-    rm $SRC_ROUTINO_DIR/src/router
-    rm $SRC_ROUTINO_DIR/src/router-slim
+    cd $ROUTINO_SRC_DIR
+    rm $ROUTINO_SRC_DIR/src/*.o
+    rm $ROUTINO_SRC_DIR/src/filedumper
+    rm $ROUTINO_SRC_DIR/src/filedumper-slim
+    rm $ROUTINO_SRC_DIR/src/filedumperx
+    rm $ROUTINO_SRC_DIR/src/libroutino.so
+    rm $ROUTINO_SRC_DIR/src/planetsplitter
+    rm $ROUTINO_SRC_DIR/src/planetsplitter-slim
+    rm $ROUTINO_SRC_DIR/src/router
+    rm $ROUTINO_SRC_DIR/src/router-slim
     
     pimpMakefileConf
     
@@ -33,16 +46,16 @@ function buildRoutino {
 }
 
 function adjustLinking {
-     sudo install_name_tool -id $LIB_ROUTINO_LIB_DIR/libroutino.so $LIB_ROUTINO_LIB_DIR/libroutino.so
-     sudo install_name_tool -id $LIB_ROUTINO_LIB_DIR/routino.so $LIB_ROUTINO_LIB_DIR/routino.so
-     sudo install_name_tool -id $LIB_ROUTINO_LIB_DIR/routino.a $LIB_ROUTINO_LIB_DIR/routino.a
-     sudo install_name_tool -id $LIB_ROUTINO_LIB_DIR/libroutino.a $LIB_ROUTINO_LIB_DIR/libroutino.a
+     sudo install_name_tool -id $ROUTINO_LIB_LIB_DIR/libroutino.so $ROUTINO_LIB_LIB_DIR/libroutino.so
+     sudo install_name_tool -id $ROUTINO_LIB_LIB_DIR/routino.so $ROUTINO_LIB_LIB_DIR/routino.so
+     sudo install_name_tool -id $ROUTINO_LIB_LIB_DIR/routino.a $ROUTINO_LIB_LIB_DIR/routino.a
+     sudo install_name_tool -id $ROUTINO_LIB_LIB_DIR/libroutino.a $ROUTINO_LIB_LIB_DIR/libroutino.a
 }
 
 function pimpMakefileConf {
-    sed 's/LDFLAGS_SONAME.*/LDFLAGS_SONAME=-dynamiclib -Wl,-headerpad_max_install_names,-undefined,dynamic_lookup,-compatibility_version,$(SOVERSION),-current_version,$(SOVERSION),-install_name,"libroutino.so" -o "libroutino.so"/' $SRC_ROUTINO_DIR/Makefile.conf> ./makefile.tmp
+    sed 's/LDFLAGS_SONAME.*/LDFLAGS_SONAME=-dynamiclib -Wl,-headerpad_max_install_names,-undefined,dynamic_lookup,-compatibility_version,$(SOVERSION),-current_version,$(SOVERSION),-install_name,"libroutino.so" -o "libroutino.so"/' $ROUTINO_SRC_DIR/Makefile.conf> ./makefile.tmp
     sed 's/LDFLAGS_SLIM_SONAME.*/LDFLAGS_SLIM_SONAME=-dynamiclib -Wl,-headerpad_max_install_names,-undefined,dynamic_lookup,-compatibility_version,$(SOVERSION),-current_version,$(SOVERSION),-install_name,"libroutino-slim.so" -o "libroutino-slim.so"/' ./makefile.tmp > ./makefile2.tmp
-    sed 's/LDFLAGS_LDSO.*/LDFLAGS_LDSO=-Wl/' ./makefile2.tmp > $SRC_ROUTINO_DIR/Makefile.conf
+    sed 's/LDFLAGS_LDSO.*/LDFLAGS_LDSO=-Wl/' ./makefile2.tmp > $ROUTINO_SRC_DIR/Makefile.conf
     
     rm ./makefile.tmp
     rm ./makefile2.tmp
@@ -54,28 +67,29 @@ function pimpMakefileConf {
 }
 
 function releaseRoutino {
-    rm -R $LIB_ROUTINO_DIR/*
-    mkdir $LIB_ROUTINO_LIB_DIR
-    mkdir $LIB_ROUTINO_H_DIR
-    mkdir $LIB_ROUTINO_XML_DIR
+    rm -R $ROUTINO_LIB_DIR/*
+    mkdir $ROUTINO_LIB_LIB_DIR
+    mkdir $ROUTINO_LIB_H_DIR
+    mkdir $ROUTINO_LIB_XML_DIR
     
-    cp $SRC_ROUTINO_DIR/src/libroutino.so             $LIB_ROUTINO_LIB_DIR
-    cp $SRC_ROUTINO_DIR/src/routino.h                 $LIB_ROUTINO_H_DIR
-    cp $SRC_ROUTINO_DIR/xml/routino-profiles.xml      $LIB_ROUTINO_XML_DIR
-    cp $SRC_ROUTINO_DIR/xml/routino-tagging.xml       $LIB_ROUTINO_XML_DIR
-    cp $SRC_ROUTINO_DIR/xml/routino-translations.xml  $LIB_ROUTINO_XML_DIR
+    cp $ROUTINO_SRC_DIR/src/libroutino.so             $ROUTINO_LIB_LIB_DIR
+    cp $ROUTINO_SRC_DIR/src/routino.h                 $ROUTINO_LIB_H_DIR
+    cp $ROUTINO_SRC_DIR/xml/routino-profiles.xml      $ROUTINO_LIB_XML_DIR
+    cp $ROUTINO_SRC_DIR/xml/routino-tagging.xml       $ROUTINO_LIB_XML_DIR
+    cp $ROUTINO_SRC_DIR/xml/routino-translations.xml  $ROUTINO_LIB_XML_DIR
     
-    cp $LIB_ROUTINO_LIB_DIR/libroutino.so             $LIB_ROUTINO_LIB_DIR/routino
-    cp $LIB_ROUTINO_LIB_DIR/libroutino.so             $LIB_ROUTINO_LIB_DIR/routino.so
-    cp $LIB_ROUTINO_LIB_DIR/libroutino.so             $LIB_ROUTINO_LIB_DIR/routino.a
-    cp $LIB_ROUTINO_LIB_DIR/libroutino.so             $LIB_ROUTINO_LIB_DIR/libroutino.a
+    cp $ROUTINO_LIB_LIB_DIR/libroutino.so             $ROUTINO_LIB_LIB_DIR/routino
+    cp $ROUTINO_LIB_LIB_DIR/libroutino.so             $ROUTINO_LIB_LIB_DIR/routino.so
+    cp $ROUTINO_LIB_LIB_DIR/libroutino.so             $ROUTINO_LIB_LIB_DIR/routino.a
+    cp $ROUTINO_LIB_LIB_DIR/libroutino.so             $ROUTINO_LIB_LIB_DIR/libroutino.a
 
-    cp $LIB_ROUTINO_XML_DIR/routino-profiles.xml      $LIB_ROUTINO_XML_DIR/profiles.xml
-    cp $LIB_ROUTINO_XML_DIR/routino-tagging.xml       $LIB_ROUTINO_XML_DIR/tagging.xml
-    cp $LIB_ROUTINO_XML_DIR/routino-translations.xml  $LIB_ROUTINO_XML_DIR/translations.xml
+    cp $ROUTINO_LIB_XML_DIR/routino-profiles.xml      $ROUTINO_LIB_XML_DIR/profiles.xml
+    cp $ROUTINO_LIB_XML_DIR/routino-tagging.xml       $ROUTINO_LIB_XML_DIR/tagging.xml
+    cp $ROUTINO_LIB_XML_DIR/routino-translations.xml  $ROUTINO_LIB_XML_DIR/translations.xml
 }
 
 if [[ "$1" == "routino-build" ]]; then
+	checkoutRoutino
     updateRoutino
     buildRoutino
     releaseRoutino
diff --git a/MacOSX/bundle.sh b/MacOSX/bundle.sh
index 5462b27..b3cd17b 100755
--- a/MacOSX/bundle.sh
+++ b/MacOSX/bundle.sh
@@ -8,7 +8,6 @@ BUILD_TIME=$(date +"%y-%m-%dT%H:%M:%S")
 BUILD_HASH_KEY=0
 
 
-
 function buildIcon {
     rm -rf $BUILD_BIN_DIR/$APP_NAME.iconset
     mkdir $BUILD_BIN_DIR/$APP_NAME.iconset
@@ -40,26 +39,27 @@ function buildAppStructure {
     #         <libs>
     #      PlugIns
     #         <libs>
-    if [ ! -f "$BUILD_RELEASE_DIR/$APP_NAME" ]; then
-        cp $BUILD_BUNDLE_APP_DIR/$APP_NAME  $BUILD_RELEASE_DIR
-    fi
     
     rm -rf $BUILD_BUNDLE_DIR
-
     mkdir $BUILD_BUNDLE_DIR
+    
+    # predefined data
     cp -R $SRC_RESOURCES_DIR/Contents $BUILD_BUNDLE_DIR
     
+    # new icon, if one has been created (otherwise the one from predefined data
     if [ -f "$BUILD_BIN_DIR/$APP_NAME.icns" ]; then
-        cp $BUILD_BIN_DIR/$APP_NAME.icns $BUILD_BUNDLE_RES_DIR
+        cp $BUILD_BIN_DIR/$APP_NAME.icns $BUILD_BUNDLE_RES_DIR/
     fi
     
-    cp $BUILD_RELEASE_DIR/$APP_NAME  $BUILD_BUNDLE_APP_DIR
+    # binary
+    mkdir $BUILD_BUNDLE_APP_DIR
+    cp $BUILD_BIN_DIR/qmapshack  $BUILD_BUNDLE_APP_DIR/$APP_NAME
     
     mkdir $BUILD_BUNDLE_RES_QM_DIR
     mkdir $BUILD_BUNDLE_RES_GDAL_DIR
     mkdir $BUILD_BUNDLE_RES_PROJ_DIR
     mkdir $BUILD_BUNDLE_RES_ROUTINO_DIR
-    cp $BUILD_DIR/src/*.qm $BUILD_BUNDLE_RES_QM_DIR
+    cp $BUILD_BIN_DIR/*.qm $BUILD_BUNDLE_RES_QM_DIR
 }
 
 function qtDeploy {
@@ -90,7 +90,7 @@ function adjustLinking {
  
     for F in `find $BUILD_BUNDLE_PLUGIN_DIR -type f -type f \( -iname "*.dylib" -o -iname "*.so" \)` 
     do 
-        adjustLinkQt $F "Qt"
+        adjustLinkQt $F "libq"
     done
 
     for F in `find $BUILD_BUNDLE_FRW_DIR/Qt*.framework/Versions/5 -type f -maxdepth 1` 
@@ -109,8 +109,8 @@ function adjustLinking {
 }
 
 function adjustLinkQt {
-    F=$1
-    L=$2
+    F=$1 # file
+    L=$2 # search condition
     FREL=${F##*/}
     
     #printLinking $F
@@ -132,12 +132,11 @@ function adjustLinkQt {
             fi
             
             PREL="@executable_path/../Frameworks/$LIB"
-                
-            if [[ "$P" == *"PlugIns"* ]]; then
+            
+            if [[ "$P" == *"plugins"* ]]; then
                 # subdirectory for PlugIns
-                PREL=$(P##PlugIns/) # remove prepart
-                PREL=$(PREL%%/) # remove slash at end
-                LIB=$PREL/$LIB
+                PREL=${P##*plugins/} # remove prepart
+                LIB=$PREL
                 PREL="@executable_path/../PlugIns/$LIB"
             fi
             
@@ -155,7 +154,7 @@ function adjustLinkQt {
 
 
 function copyAdditionalLibraries {
-    cp $LIB_ROUTINO_LIB_DIR/libroutino.so $BUILD_BUNDLE_FRW_DIR
+    cp $ROUTINO_LIB_LIB_DIR/libroutino.so $BUILD_BUNDLE_FRW_DIR
     cp -R $QT_DIR/lib/QtSensors.framework $BUILD_BUNDLE_FRW_DIR
     cp -R $QT_DIR/lib/QtPositioning.framework $BUILD_BUNDLE_FRW_DIR
     cp -R $QT_DIR/lib/QtMultimediaWidgets.framework $BUILD_BUNDLE_FRW_DIR
@@ -165,7 +164,9 @@ function copyAdditionalLibraries {
     cp -R $QT_DIR/lib/QtQuick.framework $BUILD_BUNDLE_FRW_DIR
     cp -R $QT_DIR/lib/QtQml.framework $BUILD_BUNDLE_FRW_DIR
     cp -R $QT_DIR/lib/QtWebChannel.framework $BUILD_BUNDLE_FRW_DIR
+    # TODO remove QT Bus, is only for linux needed
     cp -R $QT_DIR/lib/QtDBus.framework $BUILD_BUNDLE_FRW_DIR
+
 }
 
 function copyExternalFiles {
@@ -176,9 +177,9 @@ function copyExternalFiles {
     cp $GDAL_DIR/share/gdal/* $BUILD_BUNDLE_RES_GDAL_DIR
     cp $PROJ_DIR/share/proj/* $BUILD_BUNDLE_RES_PROJ_DIR
     
-    cp $LIB_ROUTINO_XML_DIR/profiles.xml $BUILD_BUNDLE_RES_ROUTINO_DIR
-    cp $LIB_ROUTINO_XML_DIR/translations.xml $BUILD_BUNDLE_RES_ROUTINO_DIR
-    cp $LIB_ROUTINO_XML_DIR/tagging.xml $BUILD_BUNDLE_RES_ROUTINO_DIR
+    cp $ROUTINO_LIB_XML_DIR/profiles.xml $BUILD_BUNDLE_RES_ROUTINO_DIR
+    cp $ROUTINO_LIB_XML_DIR/translations.xml $BUILD_BUNDLE_RES_ROUTINO_DIR
+    cp $ROUTINO_LIB_XML_DIR/tagging.xml $BUILD_BUNDLE_RES_ROUTINO_DIR
 }
 
 
@@ -206,16 +207,16 @@ function extractVersion {
     # set(APPLICATION_VERSION_MINOR "3")
     # set(APPLICATION_VERSION_PATCH "0.libroutino")
     
-    MAJOR_VERSION=$(sed -n 's/.*APPLICATION_VERSION_MAJOR.*\"\(.*\)\".*/\1/p' $SRC_QMAPSHACK_DIR/CMakeLists.txt)
-    MINOR_VERSION=$(sed -n 's/.*APPLICATION_VERSION_MINOR.*\"\(.*\)\".*/\1/p' $SRC_QMAPSHACK_DIR/CMakeLists.txt)
-    PATCH_VERSION=$(sed -n 's/.*APPLICATION_VERSION_PATCH.*\"\(.*\)\".*/\1/p' $SRC_QMAPSHACK_DIR/CMakeLists.txt)
+    MAJOR_VERSION=$(sed -n 's/.*APPLICATION_VERSION_MAJOR.*\"\(.*\)\".*/\1/p' $QMS_SRC_DIR/CMakeLists.txt)
+    MINOR_VERSION=$(sed -n 's/.*APPLICATION_VERSION_MINOR.*\"\(.*\)\".*/\1/p' $QMS_SRC_DIR/CMakeLists.txt)
+    PATCH_VERSION=$(sed -n 's/.*APPLICATION_VERSION_PATCH.*\"\(.*\)\".*/\1/p' $QMS_SRC_DIR/CMakeLists.txt)
     echo "$MAJOR_VERSION $MINOR_VERSION $PATCH_VERSION"
     APP_VERSION="$MAJOR_VERSION.$MINOR_VERSION.$PATCH_VERSION"
 }
 
 function readRevisionHash {
-    cd $SRC_DIR
-    BUILD_HASH_KEY=$($HG_BIN --debug id -i)
+    cd $QMS_SRC_DIR
+    BUILD_HASH_KEY=$(hg --debug id -i)
     
     if [[ "$BUILD_HASH_KEY" == *"+"* ]]; then
         read -p "BEWARE - There are uncommited chagnes..."
@@ -230,30 +231,10 @@ function updateInfoPlist {
     /usr/libexec/PlistBuddy -c "Set :BuildTime $BUILD_TIME"                   "$BUILD_BUNDLE_CONTENTS_DIR/Info.plist"
 }
 
-function buildBinary {
-    rm -rf $BUILD_RELEASE_DIR/$APP_NAME
-    mkdir $BUILD_BIN_DIR
-    mkdir $BUILD_RELEASE_DIR
-    xcodebuild -list -project $BUILD_DIR/$APP_NAME.xcodeproj
-    xcodebuild -project $BUILD_DIR/$APP_NAME.xcodeproj  -configuration Release build
-}
-
-function replaceBinary {
-    if [ -d "$BUILD_BUNDLE_APP_DIR" ]; then
-        cp $BUILD_RELEASE_DIR/$APP_NAME  $BUILD_BUNDLE_APP_DIR
-        adjustLinkQt $BUILD_BUNDLE_APP_FILE "Qt"
-        adjustLinkQt $BUILD_BUNDLE_APP_FILE "libroutino"
-    fi
-}
-
     
 if [[ "$1" == "icon" ]]; then
     buildIcon
 fi
-if [[ "$1" == "build" ]]; then
-    buildBinary
-    replaceBinary
-fi
 if [[ "$1" == "bundle" ]]; then
     echo "---extract version -----------------"
     extractVersion
diff --git a/MacOSX/env-path.sh b/MacOSX/env-path.sh
index 09f8216..aa0a781 100644
--- a/MacOSX/env-path.sh
+++ b/MacOSX/env-path.sh
@@ -1,32 +1,38 @@
 #!/bin/bash
 
-DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-SRC_DIR=$(dirname "$DIR")
-ROOT_DIR=$(dirname "$SRC_DIR")
+if [[ "$QT_DIR" == "" ]]; then
+	echo "QT_DIR not set"
+fi
+if [[ "$GDAL_DIR" == "" ]]; then
+	echo "GDAL_DIR not set"
+fi
+if [[ "$PROJ_DIR" == "" ]]; then
+	echo "PROJ_DIR not set"
+fi
+if [[ "$ROUTINO_LIB_DIR" == "" ]]; then
+	echo "ROUTINO_LIB_DIR not set"
+fi
+if [[ "$BUILD_DIR" == "" ]]; then
+	echo "BUILD_DIR not set"
+fi
+if [[ "$QMS_SRC_DIR" == "" ]]; then
+	echo "QMS_SRC_DIR not set"
+fi
+
+if [[ "$BUILD_BIN_DIR" == "" ]]; then
+	echo "BUILD_BIN_DIR not set"
+fi
+if [[ "$BUILD_RELEASE_DIR" == "" ]]; then
+	echo "BUILD_RELEASE_DIR not set"
+fi
 
 set -a
-# Set this pathes according to your environment
-# ---------------------------------------------
-LIB_BREW_DIR=/usr/local/Cellar
-# should use /usr/local/opt/qt5
-QT_DIR=$LIB_BREW_DIR/qt5/5.5.0
-GDAL_DIR=$LIB_BREW_DIR/gdal/1.11.3
-PROJ_DIR=$LIB_BREW_DIR/proj/4.9.2
-
-HG_BIN=/Applications/Dev/MacHg.app/Contents/Resources/localhg
-# ---------------------------------------------
-
 APP_NAME=QMapShack
 APP_BUNDLE=$APP_NAME.app
 
-SRC_QMAPSHACK_DIR=$ROOT_DIR/qmapshack-osx
-SRC_OSX_DIR=$SRC_QMAPSHACK_DIR/MacOSX
+SRC_OSX_DIR=$QMS_SRC_DIR/MacOSX
 SRC_RESOURCES_DIR=$SRC_OSX_DIR/resources
 
-BUILD_DIR=$ROOT_DIR/build_xcode_osx
-BUILD_BIN_DIR=$BUILD_DIR/bin
-BUILD_RELEASE_DIR=$BUILD_BIN_DIR/Release
-
 BUILD_BUNDLE_DIR=$BUILD_RELEASE_DIR/$APP_BUNDLE
 BUILD_BUNDLE_CONTENTS_DIR=$BUILD_BUNDLE_DIR/Contents
 BUILD_BUNDLE_APP_DIR=$BUILD_BUNDLE_DIR/Contents/MacOS
@@ -40,11 +46,7 @@ BUILD_BUNDLE_RES_GDAL_DIR=$BUILD_BUNDLE_RES_DIR/gdal
 BUILD_BUNDLE_RES_PROJ_DIR=$BUILD_BUNDLE_RES_DIR/proj
 BUILD_BUNDLE_RES_ROUTINO_DIR=$BUILD_BUNDLE_RES_DIR/routino
 
-
-LIB_ROUTINO_DIR=$ROOT_DIR/routino-lib
-LIB_ROUTINO_LIB_DIR=$ROOT_DIR/routino-lib/lib
-LIB_ROUTINO_H_DIR=$ROOT_DIR/routino-lib/include
-LIB_ROUTINO_XML_DIR=$ROOT_DIR/routino-lib/xml
-
+ROUTINO_LIB_LIB_DIR=$ROUTINO_LIB_DIR/lib
+ROUTINO_LIB_H_DIR=$ROUTINO_LIB_DIR/include
+ROUTINO_LIB_XML_DIR=$ROUTINO_LIB_DIR/xml
 set +a
-
diff --git a/README.md b/README.md
index c350064..bfaffdb 100644
--- a/README.md
+++ b/README.md
@@ -23,4 +23,6 @@ Next to QT5 you will need the development packages of:
 
 * Proj4
 * GDAL
-* Routino
\ No newline at end of file
+* Routino
+
+If you want to compile QMapShack for Windows have a look at nsi/3rdparty.txt and nsi/HOWTO-BUILD.txt in the source tree.
\ No newline at end of file
diff --git a/call_Uncrustify.cfg b/call_Uncrustify.cfg
index fb9cf8d..6ae3d5d 100644
--- a/call_Uncrustify.cfg
+++ b/call_Uncrustify.cfg
@@ -142,3 +142,5 @@ mod_full_brace_if=add
 mod_full_brace_while=add
 mod_full_brace_using=add
 mod_paren_on_return=remove
+sp_func_proto_paren=remove
+sp_func_def_paren=remove
\ No newline at end of file
diff --git a/changelog.txt b/changelog.txt
index 4d7a0bc..8edc1fd 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,3 +1,42 @@
+V 1.6.0
+* Fix: Toggle key focus of on-screen profile
+* Fix: Printing correct unit in a plot's xLabel instead of `distance [%1]`
+* Fix: CPlot: Replace hardcoded check for TotalElapsedSeconds() with proper values from the source actually used
+* Fix: Avoid div-by-zero in case the distance between two points is 0
+* Fix: Precision of plot scale for small values
+* Fix: Implemented linear interpolation for drawing zoomed plots correctly
+* Fix: Avoid drawing tics outside the plotting area
+* Add: Additional extensions created by `MIO Cyclo ver. 4.2`
+* Add: Map/DEM: Add move up/move down to context menu as alternative to drag-n-drop
+* Add: Support for .slf (Sigma Log Format) files
+* Add: Support for .fit (Garmin Fitness Format) files
+* Add: (Trk) Filter to split a single track containing several segments into several tracks
+* Add: (Trk) Filter to remove extension values
+* Add: Support for MySQL database
+* Add: Support for accessing the database from multiple instances at the same time
+* Add: User info to item history
+* Add: (Trk) Setup for line width and arrows
+* Add: (Trk) line coloring: local, global, automatic setup of limits
+* Add: (Trk) plot limits: local, global, automatic setup of limits 
+* Add: (Trk) colorize track by activity
+* Add: Adventures to Garmin devices. Projects are stored as adventure.
+* Add: "Archive" folder for Garmin devices. 
+* Add: Show/hide action for projects on devices.
+* Add: Support GEMF raster maps
+* Add: Make custom waypoint symbols path configurable
+* Add: Reflect partially loaded projects in the checkbox state
+* [Issue #80] Selected segment by select tool diseappears when zoom +- or pan
+* [Issue #86] Updating map path when adding new maps
+* [Issue #91] undo last change crashes qmapshack when drawing a track or a route
+* [Issue #89] *.GPX files are not recognized
+* [Issue #100] Show file/server when hovering a database
+* [Issue #106 ] Profil with no or bad data does not open trackdetails
+* [Issue #107] Patches for 'original' & 'debugging' typos
+* [Issue #108] Use the correct order of extensions for Garmin TPX1
+* [Issue #112] correct display of menu entries on OS-X for all languages.
+* A lot of lttle GUI fixes bug fixes and other improvements
+* Converted code closer to c++11
+
 V 1.5.1
 Line edit: Fix broken abort button
 
diff --git a/cmake/Modules/Qt5PatchedLinguistToolsMacros.cmake b/cmake/Modules/Qt5PatchedLinguistToolsMacros.cmake
new file mode 100644
index 0000000..e5c2f5c
--- /dev/null
+++ b/cmake/Modules/Qt5PatchedLinguistToolsMacros.cmake
@@ -0,0 +1,112 @@
+#=============================================================================
+# Copyright 2005-2011 Kitware, Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# * Redistributions of source code must retain the above copyright
+#   notice, this list of conditions and the following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above copyright
+#   notice, this list of conditions and the following disclaimer in the
+#   documentation and/or other materials provided with the distribution.
+#
+# * Neither the name of Kitware, Inc. nor the names of its
+#   contributors may be used to endorse or promote products derived
+#   from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#=============================================================================
+
+include(CMakeParseArguments)
+
+function(QT5_PATCHED_CREATE_TRANSLATION _qm_files)
+    set(options)
+    set(oneValueArgs)
+    set(multiValueArgs OPTIONS)
+
+    cmake_parse_arguments(_LUPDATE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+    set(_lupdate_files ${_LUPDATE_UNPARSED_ARGUMENTS})
+    set(_lupdate_options ${_LUPDATE_OPTIONS})
+
+    set(_my_sources)
+    set(_my_tsfiles)
+    foreach(_file ${_lupdate_files})
+        get_filename_component(_ext ${_file} EXT)
+        get_filename_component(_abs_FILE ${_file} ABSOLUTE)
+        if(_ext MATCHES "ts")
+            list(APPEND _my_tsfiles ${_abs_FILE})
+        else()
+            list(APPEND _my_sources ${_abs_FILE})
+        endif()
+    endforeach()
+    foreach(_ts_file ${_my_tsfiles})
+        if(_my_sources)
+          # make a list file to call lupdate on, so we don't make our commands too
+          # long for some systems
+#          get_filename_component(_ts_name ${_ts_file} NAME_WE)
+
+          get_filename_component(_name ${_ts_file} NAME)
+          string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" _ts_name ${_name})
+
+          set(_ts_lst_file "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_ts_name}_lst_file")
+          set(_lst_file_srcs)
+          foreach(_lst_file_src ${_my_sources})
+              set(_lst_file_srcs "${_lst_file_src}\n${_lst_file_srcs}")
+          endforeach()
+
+          get_directory_property(_inc_DIRS INCLUDE_DIRECTORIES)
+          foreach(_pro_include ${_inc_DIRS})
+              get_filename_component(_abs_include "${_pro_include}" ABSOLUTE)
+              set(_lst_file_srcs "-I${_pro_include}\n${_lst_file_srcs}")
+          endforeach()
+
+          file(WRITE ${_ts_lst_file} "${_lst_file_srcs}")
+        endif()
+        add_custom_command(OUTPUT ${_ts_file}
+            COMMAND ${Qt5_LUPDATE_EXECUTABLE}
+            ARGS ${_lupdate_options} "@${_ts_lst_file}" -ts ${_ts_file}
+            DEPENDS ${_my_sources} ${_ts_lst_file} VERBATIM)
+    endforeach()
+    qt5_patched_add_translation(${_qm_files} ${_my_tsfiles})
+    set(${_qm_files} ${${_qm_files}} PARENT_SCOPE)
+endfunction()
+
+
+function(QT5_PATCHED_ADD_TRANSLATION _qm_files)
+    foreach(_current_FILE ${ARGN})
+        get_filename_component(_abs_FILE ${_current_FILE} ABSOLUTE)
+#        get_filename_component(qm ${_abs_FILE} NAME_WE)
+
+        get_filename_component(_name ${_abs_FILE} NAME)
+        string(REGEX REPLACE "^(.+)(\\.[^.]+)$" "\\1" qm ${_name})
+
+        get_source_file_property(output_location ${_abs_FILE} OUTPUT_LOCATION)
+        if(output_location)
+            file(MAKE_DIRECTORY "${output_location}")
+            set(qm "${output_location}/${qm}.qm")
+        else()
+            set(qm "${CMAKE_CURRENT_BINARY_DIR}/${qm}.qm")
+        endif()
+
+        add_custom_command(OUTPUT ${qm}
+            COMMAND ${Qt5_LRELEASE_EXECUTABLE}
+            ARGS ${_abs_FILE} -qm ${qm}
+            DEPENDS ${_abs_FILE} VERBATIM
+        )
+        list(APPEND ${_qm_files} ${qm})
+    endforeach()
+    set(${_qm_files} ${${_qm_files}} PARENT_SCOPE)
+endfunction()
diff --git a/cmake/Modules/TranslateDesktop.cmake b/cmake/Modules/TranslateDesktop.cmake
new file mode 100644
index 0000000..0d19e32
--- /dev/null
+++ b/cmake/Modules/TranslateDesktop.cmake
@@ -0,0 +1,89 @@
+#=============================================================================
+# The translate_desktop() function was copied from the
+# LXQt LXQtTranslate.cmake
+#
+# Original Author: Alexander Sokolov <sokoloff.a at gmail.com>
+#
+# funtion translate_desktop(_RESULT
+#                           SOURCES <sources>
+#                           [TRANSLATION_DIR] translation_directory
+#                    )
+#     Output:
+#       _RESULT The generated .desktop (.desktop) files
+#
+#     Input:
+#
+#       SOURCES List of input desktop files (.destktop.in) to be translated
+#               (merged), relative to the CMakeList.txt.
+#
+#       TRANSLATION_DIR Optional path to the directory with the .ts files,
+#                        relative to the CMakeList.txt. Defaults to
+#                        "translations".
+#
+#=============================================================================
+
+function(translate_desktop _RESULT)
+    # Parse arguments ***************************************
+    set(oneValueArgs TRANSLATION_DIR)
+    set(multiValueArgs SOURCES)
+
+    cmake_parse_arguments(_ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+
+    # check for unknown arguments
+    set(_UNPARSED_ARGS ${_ARGS_UNPARSED_ARGUMENTS})
+    if (NOT ${_UNPARSED_ARGS} STREQUAL "")
+        MESSAGE(FATAL_ERROR
+          "Unknown arguments '${_UNPARSED_ARGS}'.\n"
+          "See translate_desktop() documentation for more information.\n"
+        )
+    endif()
+
+    if (NOT DEFINED _ARGS_SOURCES)
+        set(${_RESULT} "" PARENT_SCOPE)
+        return()
+    else()
+        set(_sources ${_ARGS_SOURCES})
+    endif()
+
+    if (NOT DEFINED _ARGS_TRANSLATION_DIR)
+        set(_translationDir "translations")
+    else()
+        set(_translationDir ${_ARGS_TRANSLATION_DIR})
+    endif()
+
+
+    get_filename_component (_translationDir ${_translationDir} ABSOLUTE)
+
+    foreach (_inFile ${_sources})
+        get_filename_component(_inFile   ${_inFile} ABSOLUTE)
+        get_filename_component(_fileName ${_inFile} NAME_WE)
+        #Extract the real extension ............
+        get_filename_component(_fileExt  ${_inFile} EXT)
+        string(REPLACE ".in" "" _fileExt ${_fileExt})
+        #.......................................
+        set(_outFile "${CMAKE_CURRENT_BINARY_DIR}/${_fileName}${_fileExt}")
+
+        file(GLOB _translations
+            ${_translationDir}/${_fileName}_*${_fileExt}
+        )
+
+        set(_pattern "'\\[.*]\\s*='")
+        if (_translations)
+            list(SORT _translations)
+            add_custom_command(OUTPUT ${_outFile}
+                COMMAND grep -v -a "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile}
+                COMMAND grep -h -a ${_pattern} ${_translations} >> ${_outFile}
+                COMMENT "Generating ${_fileName}${_fileExt}"
+            )
+        else()
+            add_custom_command(OUTPUT ${_outFile}
+                COMMAND grep -v -a "'#TRANSLATIONS_DIR='" ${_inFile} > ${_outFile}
+                COMMENT "Generating ${_fileName}${_fileExt}"
+            )
+        endif()
+
+        set(__result ${__result} ${_outFile})
+    endforeach()
+
+    set(${_RESULT} ${__result} PARENT_SCOPE)
+endfunction(translate_desktop)
diff --git a/cmake/Modules/TranslateTs.cmake b/cmake/Modules/TranslateTs.cmake
new file mode 100644
index 0000000..5be49c2
--- /dev/null
+++ b/cmake/Modules/TranslateTs.cmake
@@ -0,0 +1,149 @@
+#=============================================================================
+# Copyright 2014 Luís Pereira <luis.artur.pereira at gmail.com>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+# 3. The name of the author may not be used to endorse or promote products
+#    derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#=============================================================================
+#
+# funtion translate_ts(qmFiles
+#                           [USE_QT5 [Yes | No]]
+#                           [UPDATE_TRANSLATIONS [Yes | No]]
+#                           [UPDATE_OPTIONS] update_options
+#                           SOURCES <sources>
+#                           [TEMPLATE] translation_template
+#                           [TRANSLATION_DIR] translation_directory
+#                           [INSTALL_DIR] install_directory
+#                           [COMPONENT] component
+#                    )
+#     Output:
+#       qmFiles The generated compiled translations (.qm) files
+#
+#     Input:
+#       USE_QT5 Optional flag to choose between Qt4 and Qt5. Defaults to Qt5
+#
+#       UPDATE_TRANSLATIONS Optional flag. Setting it to Yes, extracts and
+#                           compiles the translations. Setting it No, only
+#                           compiles them.
+#
+#       UPDATE_OPTIONS Optional options to lupdate when UPDATE_TRANSLATIONS
+#                       is True.
+#
+#       TEMPLATE Optional translations files base name. Defaults to
+#                ${PROJECT_NAME}. An .ts extensions is added.
+#
+#       TRANSLATION_DIR Optional path to the directory with the .ts files,
+#                        relative to the CMakeList.txt. Defaults to
+#                        "translations".
+#
+#       INSTALL_DIR Optional destination of the file compiled files (qmFiles).
+#                    If not present no installation is performed
+#
+#       COMPONENT Optional install component. Only effective if INSTALL_DIR
+#                   present. Defaults to "Runtime".
+
+# CMake v2.8.3 needed to use the CMakeParseArguments module
+cmake_minimum_required(VERSION 2.8.3 FATAL_ERROR)
+
+# We use our patched version to round a annoying bug.
+include(Qt5PatchedLinguistToolsMacros)
+
+function(translate_ts qmFiles)
+    set(oneValueArgs USE_QT5 UPDATE_TRANSLATIONS TEMPLATE TRANSLATION_DIR INSTALL_DIR COMPONENT)
+    set(multiValueArgs SOURCES UPDATE_OPTIONS)
+    cmake_parse_arguments(TR "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
+
+    if (NOT DEFINED TR_UPDATE_TRANSLATIONS)
+        set(TR_UPDATE_TRANSLATIONS "No")
+    endif()
+
+    if (NOT DEFINED TR_UPDATE_OPTIONS)
+        set(TR_UPDATE_OPTIONS "")
+    endif()
+    message(STATUS "")
+
+    if (NOT DEFINED TR_USE_QT5)
+        set(TR_USE_QT5 "Yes")
+    endif()
+
+    if(NOT DEFINED TR_TEMPLATE)
+        set(TR_TEMPLATE "${PROJECT_NAME}")
+    endif()
+
+    if (NOT DEFINED TR_TRANSLATION_DIR)
+        set(TR_TRANSLATION_DIR "translations")
+    endif()
+
+    file(GLOB tsFiles "${TR_TRANSLATION_DIR}/${TR_TEMPLATE}_*.ts")
+    set(templateFile "${TR_TRANSLATION_DIR}/${TR_TEMPLATE}.ts")
+
+    if(TR_USE_QT5)
+        # Qt5
+        if (TR_UPDATE_TRANSLATIONS)
+            qt5_patched_create_translation(QMS
+                ${TR_SOURCES}
+                ${templateFile}
+                OPTIONS ${TR_UPDATE_OPTIONS}
+            )
+            qt5_patched_create_translation(QM
+                ${TR_SOURCES}
+                ${tsFiles}
+                OPTIONS ${TR_UPDATE_OPTIONS}
+            )
+        else()
+            qt5_patched_add_translation(QM ${tsFiles})
+        endif()
+    else()
+        # Qt4
+        if(TR_UPDATE_TRANSLATIONS)
+            qt4_create_translation(QMS
+                ${TR_SOURCES}
+                ${templateFile}
+                OPTIONS ${TR_UPDATE_OPTIONS}
+            )
+            qt4_create_translation(QM
+                ${TR_SOURCES}
+                ${tsFiles}
+                OPTIONS ${TR_UPDATE_OPTIONS}
+            )
+        else()
+            qt4_add_translation(QM ${tsFiles})
+        endif()
+    endif()
+
+    if(TR_UPDATE_TRANSLATIONS)
+        add_custom_target("update_${TR_TEMPLATE}_ts" ALL DEPENDS ${QMS})
+    endif()
+
+    if(DEFINED TR_INSTALL_DIR)
+        if(NOT DEFINED TR_COMPONENT)
+            set(TR_COMPONENT "Runtime")
+        endif()
+
+        install(FILES ${QM}
+            DESTINATION "${TR_INSTALL_DIR}"
+            COMPONENT "${TR_COMPONENT}"
+        )
+    endif()
+
+    set(${qmFiles} ${QM} PARENT_SCOPE)
+endfunction()
diff --git a/nsi/HOWTO-BUILD.txt b/nsi/HOWTO-BUILD.txt
index 4d61f7b..d76259c 100644
--- a/nsi/HOWTO-BUILD.txt
+++ b/nsi/HOWTO-BUILD.txt
@@ -10,6 +10,7 @@ It can be build with Visual Studio 2013 Community-Edition, too.
 Required tools for building and installing
 ============================================
 - Microsoft Visual Studio 2013 (short: VS2013)
+  Ensure that you have the latest update installed, see https://support.microsoft.com/en-us/kb/2829760
 - CMake 3.0 or later, available at http://www.cmake.org/
 - NSIS, available at http://nsis.sourceforge.net/Main_Page
 - The mingw64 toolchain (http://mingw-w64.org) is needed to 
diff --git a/nsi/QMapShack_Installer.nsi b/nsi/QMapShack_Installer.nsi
index 47b4205..8165651 100644
--- a/nsi/QMapShack_Installer.nsi
+++ b/nsi/QMapShack_Installer.nsi
@@ -134,9 +134,9 @@ Section "QMapShack" QMapShack
     File Files\Qt5Widgets.dll 
     File Files\Qt5WebKitWidgets.dll	
     File Files\Qt5Xml.dll
-	File Files\icudt53.dll
-	File Files\icuin53.dll
-	File Files\icuuc53.dll
+	File Files\icudt54.dll
+	File Files\icuin54.dll
+	File Files\icuuc54.dll
 	File Files\libEGL.dll
 	File Files\libGLESv2.dll
 
@@ -151,6 +151,9 @@ Section "QMapShack" QMapShack
 
   SetOutPath "$INSTDIR\sqldrivers\"
     File Files\sqldrivers\qsqlite.dll
+    File Files\sqldrivers\qsqlmysql.dll
+    File Files\sqldrivers\qsqlodbc.dll
+    File Files\sqldrivers\qsqlpsql.dll
 
   SetOutPath "$INSTDIR\platforms\"
     File Files\platforms\qwindows.dll	
@@ -183,6 +186,7 @@ Section "QMapShack" QMapShack
     File Files\routino.dll
     File Files\planetsplitter.exe
     File Files\libwinpthread-1.dll
+    File Files\libz-1.dll
   SetOutPath "$INSTDIR\routino-xml\"
 	File /r Files\routino-xml\*.*
   ;END Routino Files     
diff --git a/nsi/copyfiles.bat b/nsi/copyfiles.bat
index 030a555..12188f9 100644
--- a/nsi/copyfiles.bat
+++ b/nsi/copyfiles.bat
@@ -6,13 +6,14 @@ rem http://technet.microsoft.com/en-us/library/bb491035.aspx
 rem http://vlaurie.com/computers2/Articles/environment.htm
 
 rem Section 1.) Define path to Qt, MSVC, .... installations
-set QMSI_QT_PATH="C:\Qt5\5.4\msvc2013_64"
+set QMSI_QT_PATH="C:\Qt5\5.5\msvc2013_64"
 rem get the VC redistributable installer from http://www.microsoft.com/en-us/download/details.aspx?id=40784
 set QMSI_VCREDIST_PATH="M:\deploy"
 rem set QLGTI_LIBEXIF_PATH="D:\qlgt\tools\libexif"
 set QMSI_GDAL_PATH="M:\lib\gdal"
 set QMSI_PROJ_PATH="M:\lib\PROJ"
 set QMSI_ROUT_PATH="M:\src\routino_pkg"
+rem runtime libraries from mingw/msys - in my installation originally at C:\msys\opt\windows_64\bin
 set QMSI_MGW6_PATH="M:\lib\mingw64"
 
 rem Section 2.) Copy Files
@@ -40,9 +41,9 @@ copy %QMSI_QT_PATH%\bin\Qt5WebKit.dll
 copy %QMSI_QT_PATH%\bin\Qt5WebKitWidgets.dll
 copy %QMSI_QT_PATH%\bin\Qt5Widgets.dll
 copy %QMSI_QT_PATH%\bin\Qt5Xml.dll
-copy %QMSI_QT_PATH%\bin\icudt53.dll
-copy %QMSI_QT_PATH%\bin\icuin53.dll
-copy %QMSI_QT_PATH%\bin\icuuc53.dll
+copy %QMSI_QT_PATH%\bin\icudt54.dll
+copy %QMSI_QT_PATH%\bin\icuin54.dll
+copy %QMSI_QT_PATH%\bin\icuuc54.dll
 copy %QMSI_QT_PATH%\bin\libEGL.dll
 copy %QMSI_QT_PATH%\bin\libGLESv2.dll
 mkdir imageformats
@@ -58,6 +59,9 @@ cd ..
 mkdir sqldrivers
 cd sqldrivers
 copy %QMSI_QT_PATH%\plugins\sqldrivers\qsqlite.dll
+copy %QMSI_QT_PATH%\plugins\sqldrivers\qsqlmysql.dll
+copy %QMSI_QT_PATH%\plugins\sqldrivers\qsqlodbc.dll
+copy %QMSI_QT_PATH%\plugins\sqldrivers\qsqlpsql.dll
 cd ..
 mkdir platforms
 cd platforms
@@ -82,6 +86,7 @@ rem section 2.2.5) Routino
 copy %QMSI_ROUT_PATH%\lib\routino.dll
 copy %QMSI_ROUT_PATH%\bin\planetsplitter.exe
 copy %QMSI_MGW6_PATH%\libwinpthread-1.dll
+copy %QMSI_MGW6_PATH%\libz-1.dll
 xcopy %QMSI_ROUT_PATH%\xml routino-xml /s /i
 
 
diff --git a/qmapshack.1 b/qmapshack.1
index 3f1b379..7dc215d 100644
--- a/qmapshack.1
+++ b/qmapshack.1
@@ -33,7 +33,7 @@ Main features:
 .SH OPTIONS
 .TP
 \fB\-d\fR, \fB\-\-debug\fR
-Run with debuging output.
+Run with debugging output.
 .TP
 \fB\-h\fR, \fB\-\-help\fR
 Displays the help message.
diff --git a/qmapshack.desktop b/qmapshack.desktop.in
similarity index 77%
rename from qmapshack.desktop
rename to qmapshack.desktop.in
index 155e082..52d7ca9 100644
--- a/qmapshack.desktop
+++ b/qmapshack.desktop.in
@@ -6,8 +6,10 @@ Icon=QMapShack
 Terminal=false
 Type=Application
 X-MultipleArgs=false
-Categories=Qt;Utility;Geography;
+Categories=Qt;Geoscience;Geography;Science;
 GenericName=GPS device mapping utility
 Keywords=map;GPS;geocaching;waypoints;tracks;
 MimeType=application/x-gpx;
 StartupNotify=true
+
+#TRANSLATIONS_DIR=src/locale
diff --git a/src/CAbout.h b/src/CAbout.h
index 9fca841..04b8123 100644
--- a/src/CAbout.h
+++ b/src/CAbout.h
@@ -24,6 +24,7 @@
 
 class CAbout : public QDialog, private Ui::IAbout
 {
+    Q_DECLARE_TR_FUNCTIONS(CAbout)
 public:
     CAbout(QWidget * parent);
     virtual ~CAbout();
diff --git a/src/CMainWindow.cpp b/src/CMainWindow.cpp
index 401aee4..bd67522 100644
--- a/src/CMainWindow.cpp
+++ b/src/CMainWindow.cpp
@@ -1,941 +1,981 @@
-/**********************************************************************************************
-    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
-
-    This program 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.
-
-    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
-
-**********************************************************************************************/
-
-#include "CAbout.h"
-#include "CMainWindow.h"
-#include "canvas/CCanvas.h"
-#include "config.h"
-#include "dem/CDemDraw.h"
-#include "dem/CDemList.h"
-#include "gis/CGisWidget.h"
-#include "gis/IGisLine.h"
-#include "gis/WptIcons.h"
-#include "gis/db/CSetupWorkspace.h"
-#include "gis/prj/IGisProject.h"
-#include "gis/trk/CKnownExtension.h"
-#include "helpers/CProgressDialog.h"
-#include "helpers/CSettings.h"
-#include "map/CMapDraw.h"
-#include "map/CMapItem.h"
-#include "map/CMapList.h"
-#include "tool/CImportDatabase.h"
-#include "tool/CMapVrtBuilder.h"
-#include "tool/CRoutinoDatabaseBuilder.h"
-#include "units/CCoordFormatSetup.h"
-#include "units/CTimeZoneSetup.h"
-#include "units/CUnitsSetup.h"
-#include "units/IUnit.h"
-#include "version.h"
-
-#include <QtGui>
-#include <QtSql>
-#include <QtWidgets>
-
-#ifdef WIN32
-#include "device/CDeviceWatcherWindows.h"
-#include <dbt.h>
-#include <guiddef.h>
-#include <initguid.h>
-#include <usbiodef.h>
-#include <windows.h>
-#endif // WIN32
-
-CMainWindow * CMainWindow::pSelf = 0;
-
-CMainWindow::CMainWindow()
-{
-    SETTINGS;
-
-    pSelf = this;
-    setupUi(this);
-    setWindowTitle(WHAT_STR);
-
-    initWptIcons();
-
-    IUnit::self().setUnitType((IUnit::type_e)cfg.value("MainWindow/units",IUnit::eTypeMetric).toInt(), this);
-    CKnownExtension::init(IUnit::self());
-
-    gisWidget = new CGisWidget(menuProject, this);
-    dockGis->setWidget(gisWidget);
-
-    // start ---- restore window geometry -----
-    if ( cfg.contains("MainWindow/geometry"))
-    {
-        restoreGeometry(cfg.value("MainWindow/geometry").toByteArray());
-    }
-    else
-    {
-        setGeometry(0,0,800,600);
-    }
-
-    if ( cfg.contains("MainWindow/state"))
-    {
-        restoreState(cfg.value("MainWindow/state").toByteArray());
-    }
-    // end ---- restore window geometry -----
-
-
-    connect(actionAbout,                 SIGNAL(triggered()),            this,      SLOT(slotAbout()));
-    connect(actionHelp,                  SIGNAL(triggered()),            this,      SLOT(slotHelp()));
-    connect(actionAddMapView,            SIGNAL(triggered()),            this,      SLOT(slotAddCanvas()));
-    connect(actionCloneMapView,          SIGNAL(triggered()),            this,      SLOT(slotCloneCanvas()));
-    connect(actionShowScale,             SIGNAL(changed()),              this,      SLOT(slotUpdateCurrentWidget()));
-    connect(actionShowGrid,              SIGNAL(changed()),              this,      SLOT(update()));
-    connect(actionPOIText,               SIGNAL(changed()),              this,      SLOT(slotUpdateCurrentWidget()));
-    connect(actionMapToolTip,            SIGNAL(changed()),              this,      SLOT(slotUpdateCurrentWidget()));
-    connect(actionNightDay,              SIGNAL(changed()),              this,      SLOT(slotUpdateCurrentWidget()));
-    connect(actionProfileIsWindow,       SIGNAL(toggled(bool)),          this,      SLOT(slotSetProfileMode(bool)));
-    connect(actionSetupMapFont,          SIGNAL(triggered()),            this,      SLOT(slotSetupMapFont()));
-    connect(actionSetupGrid,             SIGNAL(triggered()),            this,      SLOT(slotSetupGrid()));
-    connect(actionSetupMapPaths,         SIGNAL(triggered()),            this,      SLOT(slotSetupMapPath()));
-    connect(actionSetupDEMPaths,         SIGNAL(triggered()),            this,      SLOT(slotSetupDemPath()));
-    connect(actionSetupMapView,          SIGNAL(triggered()),            this,      SLOT(slotSetupMapView()));
-    connect(actionSetupTimeZone,         SIGNAL(triggered()),            this,      SLOT(slotSetupTimeZone()));
-    connect(actionSetupUnits,            SIGNAL(triggered()),            this,      SLOT(slotSetupUnits()));
-    connect(actionSetupWorkspace,        SIGNAL(triggered()),            this,      SLOT(slotSetupWorkspace()));
-    connect(actionSetupCoordFormat,      SIGNAL(triggered(bool)),        this,      SLOT(slotSetupCoordFormat()));
-    connect(actionImportDatabase,        SIGNAL(triggered()),            this,      SLOT(slotImportDatabase()));
-    connect(actionSaveGISData,           SIGNAL(triggered()),            gisWidget, SLOT(slotSaveAll()));
-    connect(actionLoadGISData,           SIGNAL(triggered()),            this,      SLOT(slotLoadGISData()));
-    connect(actionVrtBuilder,            SIGNAL(triggered()),            this,      SLOT(slotBuildVrt()));
-    connect(actionStoreView,             SIGNAL(triggered()),            this,      SLOT(slotStoreView()));
-    connect(actionLoadView,              SIGNAL(triggered()),            this,      SLOT(slotLoadView()));
-    connect(actionClose,                 SIGNAL(triggered()),            this,      SLOT(close()));
-    connect(actionCreateRoutinoDatabase, SIGNAL(triggered()),            this,      SLOT(slotCreateRoutinoDatabase()));
-    connect(actionPrintMap,              SIGNAL(triggered()),            this,      SLOT(slotPrintMap()));
-    connect(tabWidget,                   SIGNAL(tabCloseRequested(int)), this,      SLOT(slotTabCloseRequest(int)));
-
-    connect(tabWidget,                   SIGNAL(currentChanged(int)),    this,      SLOT(slotCurrentTabCanvas(int)));
-    connect(tabMaps,                     SIGNAL(currentChanged(int)),    this,      SLOT(slotCurrentTabMaps(int)));
-    connect(tabDem,                      SIGNAL(currentChanged(int)),    this,      SLOT(slotCurrentTabDem(int)));
-
-    cfg.beginGroup("Canvas");
-    CMapDraw::loadMapPath(cfg);
-    CDemDraw::loadDemPath(cfg);
-
-    cfg.beginGroup("Views");
-    QStringList names = cfg.childGroups();
-
-    foreach(const QString &name, names)
-    {
-        CCanvas * view = new CCanvas(tabWidget, name);
-        tabWidget->addTab(view, view->objectName());
-        connect(view, SIGNAL(sigMousePosition(QPointF,qreal)), this, SLOT(slotMousePosition(QPointF, qreal)));
-
-        cfg.beginGroup(name);
-        view->loadConfig(cfg);
-        cfg.endGroup(); // name
-    }
-    if(names.isEmpty())
-    {
-        CCanvas * view = new CCanvas(tabWidget,"");
-        tabWidget->addTab(view, view->objectName());
-        connect(view, SIGNAL(sigMousePosition(QPointF, qreal)), this, SLOT(slotMousePosition(QPointF, qreal)));
-    }
-    cfg.endGroup(); // Views
-
-    actionShowScale->setChecked(cfg.value("isScaleVisible", true).toBool());
-    actionShowGrid->setChecked(cfg.value("isGridVisible", true).toBool());
-    actionPOIText->setChecked(cfg.value("POIText", true).toBool());
-    actionMapToolTip->setChecked(cfg.value("MapToolTip", true).toBool());
-    actionNightDay->setChecked(cfg.value("isNight", false).toBool());
-    actionFlipMouseWheel->setChecked(cfg.value("flipMouseWheel", false).toBool());
-    actionProfileIsWindow->setChecked(cfg.value("profileIsWindow", false).toBool());
-    mapFont = cfg.value("mapFont", font()).value<QFont>();
-    tabWidget->setCurrentIndex(cfg.value("visibleCanvas",0).toInt());
-    cfg.endGroup(); // Canvas
-
-    QByteArray tz;
-    IUnit::tz_mode_e tzmode;
-    bool useShortFormat;
-    tz = cfg.value("Units/timezone", "UTC").toByteArray();
-    tzmode = (IUnit::tz_mode_e)cfg.value("Units/timezone/mode", IUnit::eTZUtc).toInt();
-    useShortFormat = cfg.value("Units/time/useShortFormat", false).toBool();
-
-    IUnit::setTimeZoneSetup(tzmode, tz, useShortFormat);
-
-    IUnit::coord_format_e coordFormat;
-    coordFormat = (IUnit::coord_format_e)cfg.value("Units/coordFormat", IUnit::eCoordFormat1).toInt();
-    IUnit::setCoordFormat(coordFormat);
-
-
-    QStatusBar * status = statusBar();
-    lblPosWGS84 = new QLabel(status);
-    status->addPermanentWidget(lblPosWGS84);
-
-    lblElevation = new QLabel(status);
-    status->addPermanentWidget(lblElevation);
-
-    lblPosGrid = new QLabel(status);
-    status->addPermanentWidget(lblPosGrid);
-
-    menuWindow->addAction(dockMaps->toggleViewAction());
-    menuWindow->addAction(dockDem->toggleViewAction());
-    menuWindow->addAction(dockGis->toggleViewAction());
-    menuWindow->addAction(dockRte->toggleViewAction());
-
-    loadGISData(qlOpts->arguments);
-}
-
-CMainWindow::~CMainWindow()
-{
-    int cnt = 0;
-
-    SETTINGS;
-    cfg.setValue("MainWindow/state", saveState());
-    cfg.setValue("MainWindow/geometry", saveGeometry());
-    cfg.setValue("MainWindow/units", IUnit::self().type);
-
-
-    /*
-       The "Canvas" section will hold all settings global to all views
-       and "Views" section containing a subsection for each view.
-     */
-    cfg.beginGroup("Canvas");
-    QList<CCanvas*> allViews;
-    QList<QWidget*> allOtherTabs;
-
-    // save setup of all views
-    cfg.beginGroup("Views");
-    // remove all previous setups in this section first
-    cfg.remove("");
-
-    for(int i = 0; i < tabWidget->count(); i++)
-    {
-        CCanvas * view = dynamic_cast<CCanvas*>(tabWidget->widget(i));
-        if(view == 0)
-        {
-            allOtherTabs << tabWidget->widget(i);
-            continue;
-        }
-        cnt++;
-        // save views
-        cfg.beginGroup(view->objectName());
-        view->saveConfig(cfg);
-        cfg.endGroup();
-
-        allViews << view;
-    }
-    cfg.endGroup(); // Views
-
-    cfg.setValue("visibleCanvas", tabWidget->currentIndex());
-    cfg.setValue("isScaleVisible", actionShowScale->isChecked());
-    cfg.setValue("isGridVisible", actionShowGrid->isChecked());
-    cfg.setValue("POIText", actionPOIText->isChecked());
-    cfg.setValue("MapToolTip", actionMapToolTip->isChecked());
-    cfg.setValue("isNight", actionNightDay->isChecked());
-    cfg.setValue("flipMouseWheel", actionFlipMouseWheel->isChecked());
-    cfg.setValue("profileIsWindow",actionProfileIsWindow->isChecked());
-    cfg.setValue("mapFont", mapFont);
-    CMapDraw::saveMapPath(cfg);
-    CDemDraw::saveDemPath(cfg);
-    cfg.endGroup(); // Canvas
-
-
-    /*
-        Delete all widgets in the tab widget other than views. The IPlot objects
-        in a track detail dialog send update events to the view on destruction.
-        So it is important that these are destroyed first.
-     */
-    qDeleteAll(allOtherTabs);
-    /*
-        Delete all canvas objects now to make sure they are destroyed before all
-        other objects. This allows children of the canvas to access central objects
-        like CGisWidget safely upon their destruction. (e.g. CMouseRangeTrk to reset
-        it's track's draw mode by key)
-     */
-    qDeleteAll(allViews);
-
-    QByteArray tz;
-    IUnit::tz_mode_e tzmode;
-    bool useShortFormat;
-    IUnit::getTimeZoneSetup(tzmode, tz, useShortFormat);
-
-    cfg.setValue("Units/timezone", tz);
-    cfg.setValue("Units/timezone/mode", tzmode);
-    cfg.setValue("Units/time/useShortFormat", useShortFormat);
-
-    IUnit::coord_format_e coordFormat;
-    IUnit::getCoordFormat(coordFormat);
-    cfg.setValue("Units/coordFormat", coordFormat);
-}
-
-QWidget * CMainWindow::getBestWidgetForParent()
-{
-    QWidget * w = CProgressDialog::self();
-    if(w)
-    {
-        return w;
-    }
-
-    w = self().getVisibleCanvas();
-    if(w)
-    {
-        return w;
-    }
-
-    return &self();
-}
-
-bool CMainWindow::isScaleVisible()
-{
-    return actionShowScale->isChecked();
-}
-
-bool CMainWindow::isGridVisible()
-{
-    return actionShowGrid->isChecked();
-}
-
-bool CMainWindow::isNight()
-{
-    return actionNightDay->isChecked();
-}
-
-bool CMainWindow::isPOIText()
-{
-    return actionPOIText->isChecked();
-}
-
-bool CMainWindow::isMapToolTip()
-{
-    return actionMapToolTip->isChecked();
-}
-
-bool CMainWindow::flipMouseWheel()
-{
-    return actionFlipMouseWheel->isChecked();
-}
-
-bool CMainWindow::profileIsWindow()
-{
-    return actionProfileIsWindow->isChecked();
-}
-
-void CMainWindow::addMapList(CMapList * list, const QString &name)
-{
-    tabMaps->addTab(list,name);
-}
-
-void CMainWindow::addDemList(CDemList * list, const QString &name)
-{
-    tabDem->addTab(list,name);
-}
-
-void CMainWindow::addWidgetToTab(QWidget * w)
-{
-    if(tabWidget->indexOf(w) == NOIDX)
-    {
-        tabWidget->addTab(w, w->objectName());
-    }
-    tabWidget->setCurrentWidget(w);
-}
-
-CCanvas * CMainWindow::getVisibleCanvas()
-{
-    return dynamic_cast<CCanvas*>(tabWidget->currentWidget());
-}
-
-void CMainWindow::zoomCanvasTo(const QRectF rect)
-{
-    CCanvas * canvas = getVisibleCanvas();
-    if(canvas)
-    {
-        canvas->zoomTo(rect);
-    }
-}
-
-qreal CMainWindow::getEelevationAt(const QPointF& pos)
-{
-    CCanvas * canvas = getVisibleCanvas();
-    if(canvas)
-    {
-        return canvas->getElevationAt(pos);
-    }
-    return NOFLOAT;
-}
-
-
-void CMainWindow::getEelevationAt(SGisLine &line)
-{
-    CCanvas * canvas = getVisibleCanvas();
-    if(canvas)
-    {
-        canvas->getElevationAt(line);
-    }
-    else
-    {
-        for(int i = 0; i < tabWidget->count(); i++)
-        {
-            canvas = dynamic_cast<CCanvas*>(tabWidget->widget(i));
-            if(canvas)
-            {
-                canvas->getElevationAt(line);
-                return;
-            }
-        }
-
-        for(int i = 0; i < line.size(); i++)
-        {
-            line[i].resetElevation();
-        }
-    }
-}
-
-void CMainWindow::getEelevationAt(const QPolygonF &pos, QPolygonF& ele)
-{
-    CCanvas * canvas = getVisibleCanvas();
-    if(canvas)
-    {
-        canvas->getElevationAt(pos, ele);
-    }
-    else
-    {
-        for(int i = 0; i < tabWidget->count(); i++)
-        {
-            canvas = dynamic_cast<CCanvas*>(tabWidget->widget(i));
-            if(canvas)
-            {
-                canvas->getElevationAt(pos, ele);
-                return;
-            }
-        }
-        ele.clear();
-    }
-}
-
-void CMainWindow::slotAbout()
-{
-    CAbout dlg(this);
-    dlg.exec();
-}
-
-void CMainWindow::slotHelp()
-{
-    QDesktopServices::openUrl(QUrl("https://bitbucket.org/maproom/qmapshack/wiki/DocMain"));
-}
-
-
-void CMainWindow::slotAddCanvas()
-{
-    int i, cnt = 0;
-    for(i = 0; i < tabWidget->count(); i++)
-    {
-        CCanvas * canvas = dynamic_cast<CCanvas*>(tabWidget->widget(i));
-        if(canvas == 0)
-        {
-            continue;
-        }
-        cnt++;
-    }
-
-    CCanvas * canvas = new CCanvas(tabWidget,"");
-    tabWidget->addTab(canvas, canvas->objectName());
-    connect(canvas, SIGNAL(sigMousePosition(QPointF, qreal)), this, SLOT(slotMousePosition(QPointF, qreal)));
-
-    tabWidget->setCurrentWidget(canvas);
-}
-
-void CMainWindow::slotCloneCanvas()
-{
-    CCanvas * source = getVisibleCanvas();
-    if(source == 0)
-    {
-        return;
-    }
-
-    QTemporaryFile temp;
-    temp.open();
-    temp.close();
-
-    QSettings view(temp.fileName(), QSettings::IniFormat);
-    view.clear();
-
-    source->saveConfig(view);
-
-    slotAddCanvas();
-
-    CCanvas * target = getVisibleCanvas();
-    if(target == 0)
-    {
-        return;
-    }
-
-    target->loadConfig(view);
-    target->slotTriggerCompleteUpdate(CCanvas::redraw_e::eRedrawGis);
-
-    SETTINGS;
-    cfg.beginGroup("Canvas");
-    cfg.beginGroup("Views");
-    cfg.beginGroup(target->objectName());
-    target->saveConfig(cfg);
-    cfg.endGroup();
-    cfg.endGroup();
-    cfg.endGroup();
-}
-
-void CMainWindow::slotTabCloseRequest(int i)
-{
-    QMutexLocker lock(&CMapItem::mutexActiveMaps);
-
-    QWidget * w = tabWidget->widget(i);
-
-    delete w;
-}
-
-void CMainWindow::slotCurrentTabCanvas(int i)
-{
-    QString name = tabWidget->tabText(i);
-    for(int n = 0; n < tabMaps->count(); n++)
-    {
-        if(tabMaps->tabText(n) == name)
-        {
-            tabMaps->setCurrentIndex(n);
-            break;
-        }
-    }
-    for(int n = 0; n < tabDem->count(); n++)
-    {
-        if(tabDem->tabText(n) == name)
-        {
-            tabDem->setCurrentIndex(n);
-            break;
-        }
-    }
-
-    for(int n = 0; n < tabWidget->count(); n++)
-    {
-        CCanvas * canvas = dynamic_cast<CCanvas*>(tabWidget->widget(n));
-        if(canvas)
-        {
-            if(n == i)
-            {
-                canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
-                canvas->showProfile(true);
-            }
-            else
-            {
-                canvas->showProfile(false);
-            }
-        }
-    }
-}
-
-void CMainWindow::slotCurrentTabMaps(int i)
-{
-    QString name = tabMaps->tabText(i);
-    for(int n = 0; n < tabWidget->count(); n++)
-    {
-        if(tabWidget->tabText(n) == name)
-        {
-            tabWidget->setCurrentIndex(n);
-            break;
-        }
-    }
-    for(int n = 0; n < tabDem->count(); n++)
-    {
-        if(tabDem->tabText(n) == name)
-        {
-            tabDem->setCurrentIndex(n);
-            break;
-        }
-    }
-}
-
-void CMainWindow::slotCurrentTabDem(int i)
-{
-    QString name = tabMaps->tabText(i);
-    for(int n = 0; n < tabWidget->count(); n++)
-    {
-        if(tabWidget->tabText(n) == name)
-        {
-            tabWidget->setCurrentIndex(n);
-            break;
-        }
-    }
-    for(int n = 0; n < tabMaps->count(); n++)
-    {
-        if(tabMaps->tabText(n) == name)
-        {
-            tabMaps->setCurrentIndex(n);
-            break;
-        }
-    }
-}
-
-void CMainWindow::slotMousePosition(const QPointF& pos, qreal ele)
-{
-    QString str;
-    IUnit::degToStr(pos.x(), pos.y(), str);
-    lblPosWGS84->setText(str);
-
-    if(ele != NOFLOAT)
-    {
-        QString val, unit;
-        IUnit::self().meter2elevation(ele, val, unit);
-        lblElevation->setText(tr("Ele: %1%2").arg(val).arg(unit));
-        lblElevation->show();
-    }
-    else
-    {
-        lblElevation->hide();
-    }
-
-    if(actionShowGrid->isChecked())
-    {
-        CCanvas * canvas = getVisibleCanvas();
-        if(canvas)
-        {
-            QString str;
-            lblPosGrid->show();
-            canvas->convertGridPos2Str(pos, str, false);
-            lblPosGrid->setText(tr("[Grid: %1]").arg(str));
-        }
-    }
-    else
-    {
-        lblPosGrid->hide();
-    }
-}
-
-void CMainWindow::slotUpdateCurrentWidget()
-{
-    CCanvas * canvas = getVisibleCanvas();
-    if(canvas)
-    {
-        canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawAll);
-        return;
-    }
-
-    QWidget * w = tabWidget->currentWidget();
-    if(w)
-    {
-        w->update();
-        return;
-    }
-}
-
-
-void CMainWindow::slotSetupMapFont()
-{
-    bool ok = false;
-    QFont f = QFontDialog::getFont(&ok, mapFont, this);
-    if(ok)
-    {
-        mapFont = f;
-        QWidget * w = tabWidget->currentWidget();
-        if(w)
-        {
-            w->update();
-        }
-    }
-}
-
-void CMainWindow::slotSetupGrid()
-{
-    CCanvas * canvas = getVisibleCanvas();
-    if(canvas == 0)
-    {
-        return;
-    }
-    canvas->setupGrid();
-}
-
-void CMainWindow::slotSetupMapPath()
-{
-    CMapDraw::setupMapPath();
-}
-
-void CMainWindow::slotSetupDemPath()
-{
-    CDemDraw::setupDemPath();
-}
-
-void CMainWindow::slotSetupMapView()
-{
-    CCanvas * canvas = getVisibleCanvas();
-    if(canvas == 0)
-    {
-        return;
-    }
-    canvas->setup();
-}
-
-void CMainWindow::slotSetupTimeZone()
-{
-    CTimeZoneSetup dlg(this);
-    dlg.exec();
-}
-
-void CMainWindow::slotSetupUnits()
-{
-    CUnitsSetup dlg(this);
-    dlg.exec();
-
-    if(QDialog::Accepted == dlg.result())
-    {
-        CKnownExtension::init(IUnit::self());
-    }
-}
-
-void CMainWindow::slotSetupWorkspace()
-{
-    CSetupWorkspace dlg(this);
-    dlg.exec();
-}
-
-void CMainWindow::slotSetupCoordFormat()
-{
-    CCoordFormatSetup dlg(this);
-    dlg.exec();
-}
-
-void CMainWindow::slotImportDatabase()
-{
-    CImportDatabase * widget = new CImportDatabase(this);
-    addWidgetToTab(widget);
-}
-
-void CMainWindow::slotBuildVrt()
-{
-    CMapVrtBuilder * widget = new CMapVrtBuilder(this);
-    addWidgetToTab(widget);
-}
-
-void CMainWindow::slotCreateRoutinoDatabase()
-{
-    CRoutinoDatabaseBuilder * widget = new CRoutinoDatabaseBuilder(this);
-    addWidgetToTab(widget);
-}
-
-void CMainWindow::slotLoadGISData()
-{
-    SETTINGS;
-    QString path   = cfg.value("Paths/lastGisPath",   QDir::homePath()).toString();
-    QString filter = cfg.value("Paths/lastGisFilter", IGisProject::filedialogAllSupported).toString();
-
-    QStringList filenames = QFileDialog::getOpenFileNames(this, tr("Load GIS Data..."), path, IGisProject::filedialogLoadFilters, &filter);
-
-    if(filenames.isEmpty())
-    {
-        return;
-    }
-
-    loadGISData(filenames);
-
-    path = QFileInfo(filenames.first()).absolutePath();
-    cfg.setValue("Paths/lastGisPath",   path);
-    cfg.setValue("Paths/lastGisFilter", filter);
-}
-
-
-void CMainWindow::loadGISData(const QStringList& filenames)
-{
-    foreach(const QString &filename, filenames)
-    {
-        gisWidget->loadGisProject(filename);
-    }
-}
-
-
-void CMainWindow::slotStoreView()
-{
-    CCanvas * canvas = getVisibleCanvas();
-    if(canvas == 0)
-    {
-        return;
-    }
-
-    SETTINGS;
-    QString path = cfg.value("Paths/lastViewPath", QDir::homePath()).toString();
-    QString filename = QFileDialog::getSaveFileName( this, tr("Select output file"), path,"QMapShack View (*.view)");
-
-    if(filename.isEmpty())
-    {
-        return;
-    }
-
-    QFileInfo fi(filename);
-    if(fi.suffix().toLower() != "view")
-    {
-        filename += ".view";
-    }
-
-    QSettings view(filename, QSettings::IniFormat);
-    view.clear();
-
-    canvas->saveConfig(view);
-
-    path = fi.absolutePath();
-    cfg.setValue("Paths/lastViewPath", path);
-}
-
-void CMainWindow::slotLoadView()
-{
-    SETTINGS;
-    QString path = cfg.value("Paths/lastViewPath", QDir::homePath()).toString();
-    QString filename = QFileDialog::getOpenFileName(this, tr("Select file to load"), path, "QMapShack View (*.view)");
-
-    if(filename.isEmpty())
-    {
-        return;
-    }
-
-    slotAddCanvas();
-
-    CCanvas * canvas = getVisibleCanvas();
-    if(canvas == 0)
-    {
-        return;
-    }
-
-    QSettings view(filename, QSettings::IniFormat);
-    canvas->loadConfig(view);
-
-    cfg.beginGroup("Canvas");
-    cfg.beginGroup("Views");
-    cfg.beginGroup(canvas->objectName());
-    canvas->saveConfig(cfg);
-    cfg.endGroup();
-    cfg.endGroup();
-    cfg.endGroup();
-
-    QFileInfo fi(filename);
-    path = fi.absolutePath();
-    cfg.setValue("Paths/lastViewPath", path);
-}
-
-void CMainWindow::slotSetProfileMode(bool on)
-{
-    for(int i = 0; i < tabWidget->count(); i++)
-    {
-        CCanvas * view = dynamic_cast<CCanvas*>(tabWidget->widget(i));
-        if(view == 0)
-        {
-            continue;
-        }
-
-        view->showProfileAsWindow(on);
-    }
-}
-
-void CMainWindow::slotPrintMap()
-{
-    CCanvas * canvas = getVisibleCanvas();
-    if(canvas == 0)
-    {
-        return;
-    }
-
-    canvas->setMousePrint();
-}
-
-#ifdef WIN32
-
-static void sendDeviceEvent(DWORD unitmask, bool add)
-{
-    for (char i = 0; i < 26; ++i)
-    {
-        if (unitmask & 0x1)
-        {
-            QString path = QString(i + 'A') + ":/";
-            qDebug() << "sendDeviceEvent" << path << add;
-            CEventDevice * event = new CEventDevice(path, add);
-            QCoreApplication::postEvent(CDeviceWatcherWindows::self(), event);
-            //qDebug() << "postEvent";
-        }
-        unitmask = unitmask >> 1;
-    }
-}
-
-
-bool CMainWindow::nativeEvent(const QByteArray & eventType, void * message, long * result)
-{
-    MSG* msg = (MSG*)message;
-    //qDebug() << "nativeEvent" << eventType << msg->message << msg->lParam << msg->wParam;
-
-    if (WM_DEVICECHANGE == msg->message)
-    {
-        //qDebug() << "WM_DEVICECHANGE";
-        PDEV_BROADCAST_HDR pHdr = (PDEV_BROADCAST_HDR)msg->lParam;
-        switch (msg->wParam)
-        {
-        case DBT_DEVICEARRIVAL:
-        {
-            qDebug() << "DBT_DEVICEARRIVAL"<< pHdr->dbch_devicetype;
-            if (pHdr->dbch_devicetype == DBT_DEVTYP_VOLUME)
-            {
-                PDEV_BROADCAST_VOLUME pHdrv = (PDEV_BROADCAST_VOLUME)pHdr;
-                sendDeviceEvent(pHdrv->dbcv_unitmask, true);
-            }
-            break;
-        }
-
-        case  DBT_DEVICEREMOVECOMPLETE:
-        {
-            qDebug() << "DBT_DEVICEREMOVECOMPLETE" << pHdr->dbch_devicetype;
-            if (pHdr->dbch_devicetype == DBT_DEVTYP_VOLUME)
-            {
-                PDEV_BROADCAST_VOLUME pHdrv = (PDEV_BROADCAST_VOLUME)pHdr;
-                sendDeviceEvent(pHdrv->dbcv_unitmask, false);
-            }
-            break;
-        }
-
-        default:
-        {
-            break;
-        }
-        }
-    }
-
-    return QWidget::nativeEvent(eventType, message, result);
-}
-#endif // WIN32
-
-void CMainWindow::dragEnterEvent(QDragEnterEvent *event)
-{
-    if(event->mimeData()->hasUrls())
-    {
-        QList<QUrl> urls = event->mimeData()->urls();
-        QFileInfo fi(urls[0].path());
-        QString ext = fi.suffix().toUpper();
-
-        if ( (ext == "QMS") || (ext == "GPX"))
-        {
-            event->acceptProposedAction();
-        }
-    }
-}
-
-
-void CMainWindow::dropEvent(QDropEvent *event)
-{
-    QList<QUrl> urls = event->mimeData()->urls();
-    QUrl url;
-
-    QStringList filenames;
-    foreach(url, urls)
-    {
-        filenames << url.toLocalFile();
-    }
-
-    loadGISData(filenames);
-
-    event->acceptProposedAction();
-}
+/**********************************************************************************************
+    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "CAbout.h"
+#include "CMainWindow.h"
+#include "canvas/CCanvas.h"
+#include "config.h"
+#include "dem/CDemDraw.h"
+#include "dem/CDemList.h"
+#include "gis/CGisWidget.h"
+#include "gis/IGisLine.h"
+#include "gis/WptIcons.h"
+#include "gis/db/CSetupWorkspace.h"
+#include "gis/prj/IGisProject.h"
+#include "gis/trk/CActivityTrk.h"
+#include "gis/trk/CKnownExtension.h"
+#include "helpers/CProgressDialog.h"
+#include "helpers/CSettings.h"
+#include "helpers/CWptIconDialog.h"
+#include "map/CMapDraw.h"
+#include "map/CMapItem.h"
+#include "map/CMapList.h"
+#include "tool/CImportDatabase.h"
+#include "tool/CMapVrtBuilder.h"
+#include "tool/CRoutinoDatabaseBuilder.h"
+#include "units/CCoordFormatSetup.h"
+#include "units/CTimeZoneSetup.h"
+#include "units/CUnitsSetup.h"
+#include "units/IUnit.h"
+#include "version.h"
+
+#include <QtGui>
+#include <QtSql>
+#include <QtWidgets>
+
+#ifdef WIN32
+#include "device/CDeviceWatcherWindows.h"
+#include <dbt.h>
+#include <guiddef.h>
+#include <initguid.h>
+#include <usbiodef.h>
+#include <windows.h>
+#endif // WIN32
+
+CMainWindow * CMainWindow::pSelf = nullptr;
+
+CMainWindow::CMainWindow()
+    : id(qrand())
+{
+    qDebug() << "Application ID:" << id;
+    SETTINGS;
+
+    pSelf = this;
+    setupUi(this);
+    setWindowTitle(WHAT_STR);
+
+    initWptIcons();
+
+    IUnit::self().setUnitType((IUnit::type_e)cfg.value("MainWindow/units",IUnit::eTypeMetric).toInt(), this);
+    CKnownExtension::init(IUnit::self());
+    CActivityTrk::init();
+
+    gisWidget = new CGisWidget(menuProject, this);
+    dockGis->setWidget(gisWidget);
+
+    // start ---- restore window geometry -----
+    if ( cfg.contains("MainWindow/geometry"))
+    {
+        restoreGeometry(cfg.value("MainWindow/geometry").toByteArray());
+    }
+    else
+    {
+        setGeometry(0,0,800,600);
+    }
+
+    if ( cfg.contains("MainWindow/state"))
+    {
+        restoreState(cfg.value("MainWindow/state").toByteArray());
+    }
+    // end ---- restore window geometry -----
+
+
+    connect(actionAbout,                 &QAction::triggered,            this,      &CMainWindow::slotAbout);
+    connect(actionHelp,                  &QAction::triggered,            this,      &CMainWindow::slotHelp);
+    connect(actionAddMapView,            &QAction::triggered,            this,      &CMainWindow::slotAddCanvas);
+    connect(actionCloneMapView,          &QAction::triggered,            this,      &CMainWindow::slotCloneCanvas);
+    connect(actionShowScale,             &QAction::changed,              this,      &CMainWindow::slotUpdateCurrentWidget);
+    connect(actionShowGrid,              &QAction::changed,              this,      static_cast<void (CMainWindow::*)()>(&CMainWindow::update));
+    connect(actionPOIText,               &QAction::changed,              this,      &CMainWindow::slotUpdateCurrentWidget);
+    connect(actionMapToolTip,            &QAction::changed,              this,      &CMainWindow::slotUpdateCurrentWidget);
+    connect(actionNightDay,              &QAction::changed,              this,      &CMainWindow::slotUpdateCurrentWidget);
+    connect(actionProfileIsWindow,       &QAction::toggled,              this,      &CMainWindow::slotSetProfileMode);
+    connect(actionSetupMapFont,          &QAction::triggered,            this,      &CMainWindow::slotSetupMapFont);
+    connect(actionSetupGrid,             &QAction::triggered,            this,      &CMainWindow::slotSetupGrid);
+    connect(actionSetupMapPaths,         &QAction::triggered,            this,      &CMainWindow::slotSetupMapPath);
+    connect(actionSetupDEMPaths,         &QAction::triggered,            this,      &CMainWindow::slotSetupDemPath);
+    connect(actionSetupMapView,          &QAction::triggered,            this,      &CMainWindow::slotSetupMapView);
+    connect(actionSetupTimeZone,         &QAction::triggered,            this,      &CMainWindow::slotSetupTimeZone);
+    connect(actionSetupUnits,            &QAction::triggered,            this,      &CMainWindow::slotSetupUnits);
+    connect(actionSetupWorkspace,        &QAction::triggered,            this,      &CMainWindow::slotSetupWorkspace);
+    connect(actionSetupCoordFormat,      &QAction::triggered,            this,      &CMainWindow::slotSetupCoordFormat);
+    connect(actionImportDatabase,        &QAction::triggered,            this,      &CMainWindow::slotImportDatabase);
+    connect(actionSaveGISData,           &QAction::triggered,            gisWidget, &CGisWidget::slotSaveAll);
+    connect(actionLoadGISData,           &QAction::triggered,            this,      &CMainWindow::slotLoadGISData);
+    connect(actionVrtBuilder,            &QAction::triggered,            this,      &CMainWindow::slotBuildVrt);
+    connect(actionStoreView,             &QAction::triggered,            this,      &CMainWindow::slotStoreView);
+    connect(actionLoadView,              &QAction::triggered,            this,      &CMainWindow::slotLoadView);
+    connect(actionClose,                 &QAction::triggered,            this,      &CMainWindow::close);
+    connect(actionCreateRoutinoDatabase, &QAction::triggered,            this,      &CMainWindow::slotCreateRoutinoDatabase);
+    connect(actionPrintMap,              &QAction::triggered,            this,      &CMainWindow::slotPrintMap);
+    connect(actionSetupWaypointIcons,    &QAction::triggered,            this,      &CMainWindow::slotSetupWptIcons);
+    connect(tabWidget,                   &QTabWidget::tabCloseRequested, this,      &CMainWindow::slotTabCloseRequest);
+
+    connect(tabWidget,                   &QTabWidget::currentChanged,    this,      &CMainWindow::slotCurrentTabCanvas);
+    connect(tabMaps,                     &QTabWidget::currentChanged,    this,      &CMainWindow::slotCurrentTabMaps);
+    connect(tabDem,                      &QTabWidget::currentChanged,    this,      &CMainWindow::slotCurrentTabDem);
+
+    cfg.beginGroup("Canvas");
+    CMapDraw::loadMapPath(cfg);
+    CDemDraw::loadDemPath(cfg);
+
+    cfg.beginGroup("Views");
+    QStringList names = cfg.childGroups();
+
+    foreach(const QString &name, names)
+    {
+        CCanvas * view = new CCanvas(tabWidget, name);
+        tabWidget->addTab(view, view->objectName());
+        connect(view, &CCanvas::sigMousePosition, this, &CMainWindow::slotMousePosition);
+
+        cfg.beginGroup(name);
+        view->loadConfig(cfg);
+        cfg.endGroup(); // name
+    }
+    if(names.isEmpty())
+    {
+        CCanvas * view = new CCanvas(tabWidget, QString());
+        tabWidget->addTab(view, view->objectName());
+        connect(view, &CCanvas::sigMousePosition, this, &CMainWindow::slotMousePosition);
+    }
+    cfg.endGroup(); // Views
+
+    actionShowScale->setChecked      (cfg.value("isScaleVisible",   true).toBool());
+    actionShowGrid->setChecked       (cfg.value("isGridVisible",    true).toBool());
+    actionPOIText->setChecked        (cfg.value("POIText",          true).toBool());
+    actionMapToolTip->setChecked     (cfg.value("MapToolTip",       true).toBool());
+    actionNightDay->setChecked       (cfg.value("isNight",         false).toBool());
+    actionFlipMouseWheel->setChecked (cfg.value("flipMouseWheel",  false).toBool());
+    actionProfileIsWindow->setChecked(cfg.value("profileIsWindow", false).toBool());
+    mapFont = cfg.value("mapFont", font()).value<QFont>();
+    tabWidget->setCurrentIndex(cfg.value("visibleCanvas",0).toInt());
+    cfg.endGroup(); // Canvas
+
+    QByteArray tz;
+    IUnit::tz_mode_e tzmode;
+    bool useShortFormat;
+    tz = cfg.value("Units/timezone", "UTC").toByteArray();
+    tzmode = (IUnit::tz_mode_e)cfg.value("Units/timezone/mode", IUnit::eTZUtc).toInt();
+    useShortFormat = cfg.value("Units/time/useShortFormat", false).toBool();
+
+    IUnit::setTimeZoneSetup(tzmode, tz, useShortFormat);
+
+    IUnit::coord_format_e coordFormat;
+    coordFormat = (IUnit::coord_format_e)cfg.value("Units/coordFormat", IUnit::eCoordFormat1).toInt();
+    IUnit::setCoordFormat(coordFormat);
+
+
+    QStatusBar * status = statusBar();
+    lblPosWGS84 = new QLabel(status);
+    status->addPermanentWidget(lblPosWGS84);
+
+    lblElevation = new QLabel(status);
+    status->addPermanentWidget(lblElevation);
+
+    lblPosGrid = new QLabel(status);
+    status->addPermanentWidget(lblPosGrid);
+
+    menuWindow->addAction(dockMaps->toggleViewAction());
+    menuWindow->addAction(dockDem->toggleViewAction());
+    menuWindow->addAction(dockGis->toggleViewAction());
+    menuWindow->addAction(dockRte->toggleViewAction());
+
+    prepareMenuForMac();
+
+    loadGISData(qlOpts->arguments);
+}
+
+void CMainWindow::prepareMenuForMac()
+{
+    dockMaps->toggleViewAction()->setMenuRole(QAction::NoRole);
+    dockMaps->toggleViewAction()->setMenuRole(QAction::NoRole);
+    dockDem->toggleViewAction()->setMenuRole(QAction::NoRole);
+    dockGis->toggleViewAction()->setMenuRole(QAction::NoRole);
+    dockRte->toggleViewAction()->setMenuRole(QAction::NoRole);
+}
+
+CMainWindow::~CMainWindow()
+{
+    CActivityTrk::release();
+
+    int cnt = 0;
+    SETTINGS;
+    cfg.setValue("MainWindow/state", saveState());
+    cfg.setValue("MainWindow/geometry", saveGeometry());
+    cfg.setValue("MainWindow/units", IUnit::self().type);
+
+
+    /*
+       The "Canvas" section will hold all settings global to all views
+       and "Views" section containing a subsection for each view.
+     */
+    cfg.beginGroup("Canvas");
+    QList<CCanvas*> allViews;
+    QList<QWidget*> allOtherTabs;
+
+    // save setup of all views
+    cfg.beginGroup("Views");
+    // remove all previous setups in this section first
+    cfg.remove(QString());
+
+    for(int i = 0; i < tabWidget->count(); i++)
+    {
+        CCanvas * view = dynamic_cast<CCanvas*>(tabWidget->widget(i));
+        if(nullptr == view)
+        {
+            allOtherTabs << tabWidget->widget(i);
+            continue;
+        }
+        cnt++;
+        // save views
+        cfg.beginGroup(view->objectName());
+        view->saveConfig(cfg);
+        cfg.endGroup();
+
+        allViews << view;
+    }
+    cfg.endGroup(); // Views
+
+    cfg.setValue("visibleCanvas", tabWidget->currentIndex());
+    cfg.setValue("isScaleVisible", actionShowScale->isChecked());
+    cfg.setValue("isGridVisible", actionShowGrid->isChecked());
+    cfg.setValue("POIText", actionPOIText->isChecked());
+    cfg.setValue("MapToolTip", actionMapToolTip->isChecked());
+    cfg.setValue("isNight", actionNightDay->isChecked());
+    cfg.setValue("flipMouseWheel", actionFlipMouseWheel->isChecked());
+    cfg.setValue("profileIsWindow",actionProfileIsWindow->isChecked());
+    cfg.setValue("mapFont", mapFont);
+    CMapDraw::saveMapPath(cfg);
+    CDemDraw::saveDemPath(cfg);
+    cfg.endGroup(); // Canvas
+
+
+    /*
+        Delete all widgets in the tab widget other than views. The IPlot objects
+        in a track detail dialog send update events to the view on destruction.
+        So it is important that these are destroyed first.
+     */
+    qDeleteAll(allOtherTabs);
+    /*
+        Delete all canvas objects now to make sure they are destroyed before all
+        other objects. This allows children of the canvas to access central objects
+        like CGisWidget safely upon their destruction. (e.g. CMouseRangeTrk to reset
+        it's track's draw mode by key)
+     */
+    qDeleteAll(allViews);
+
+    QByteArray tz;
+    IUnit::tz_mode_e tzmode;
+    bool useShortFormat;
+    IUnit::getTimeZoneSetup(tzmode, tz, useShortFormat);
+
+    cfg.setValue("Units/timezone", tz);
+    cfg.setValue("Units/timezone/mode", tzmode);
+    cfg.setValue("Units/time/useShortFormat", useShortFormat);
+
+    IUnit::coord_format_e coordFormat;
+    IUnit::getCoordFormat(coordFormat);
+    cfg.setValue("Units/coordFormat", coordFormat);
+}
+
+QWidget * CMainWindow::getBestWidgetForParent()
+{
+    QWidget * w = CProgressDialog::self();
+    if(w)
+    {
+        return w;
+    }
+
+    w = self().getVisibleCanvas();
+    if(w)
+    {
+        return w;
+    }
+
+    return &self();
+}
+
+QString CMainWindow::getUser()
+{
+    QString user = getenv("USER");
+    if(user.isEmpty())
+    {
+        user = getenv("USERNAME"); //for windows
+
+        if(user.isEmpty())
+        {
+            user = "QMapShack";
+        }
+    }
+
+    return user;
+}
+
+bool CMainWindow::isScaleVisible() const
+{
+    return actionShowScale->isChecked();
+}
+
+bool CMainWindow::isGridVisible() const
+{
+    return actionShowGrid->isChecked();
+}
+
+bool CMainWindow::isNight() const
+{
+    return actionNightDay->isChecked();
+}
+
+bool CMainWindow::isPOIText() const
+{
+    return actionPOIText->isChecked();
+}
+
+bool CMainWindow::isMapToolTip() const
+{
+    return actionMapToolTip->isChecked();
+}
+
+bool CMainWindow::flipMouseWheel() const
+{
+    return actionFlipMouseWheel->isChecked();
+}
+
+bool CMainWindow::profileIsWindow() const
+{
+    return actionProfileIsWindow->isChecked();
+}
+
+void CMainWindow::addMapList(CMapList * list, const QString &name)
+{
+    tabMaps->addTab(list,name);
+}
+
+void CMainWindow::addDemList(CDemList * list, const QString &name)
+{
+    tabDem->addTab(list,name);
+}
+
+void CMainWindow::addWidgetToTab(QWidget * w)
+{
+    if(tabWidget->indexOf(w) == NOIDX)
+    {
+        tabWidget->addTab(w, w->objectName().replace("&", "&&"));
+    }
+    tabWidget->setCurrentWidget(w);
+}
+
+CCanvas* CMainWindow::getVisibleCanvas() const
+{
+    return dynamic_cast<CCanvas*>(tabWidget->currentWidget());
+}
+
+void CMainWindow::zoomCanvasTo(const QRectF rect)
+{
+    CCanvas * canvas = getVisibleCanvas();
+    if(canvas)
+    {
+        canvas->zoomTo(rect);
+    }
+}
+
+qreal CMainWindow::getElevationAt(const QPointF& pos) const
+{
+    CCanvas * canvas = getVisibleCanvas();
+    if(canvas)
+    {
+        return canvas->getElevationAt(pos);
+    }
+    return NOFLOAT;
+}
+
+
+void CMainWindow::getElevationAt(SGisLine &line) const
+{
+    CCanvas * canvas = getVisibleCanvas();
+    if(canvas)
+    {
+        canvas->getElevationAt(line);
+    }
+    else
+    {
+        for(int i = 0; i < tabWidget->count(); i++)
+        {
+            canvas = dynamic_cast<CCanvas*>(tabWidget->widget(i));
+            if(canvas)
+            {
+                canvas->getElevationAt(line);
+                return;
+            }
+        }
+
+        for(int i = 0; i < line.size(); i++)
+        {
+            line[i].resetElevation();
+        }
+    }
+}
+
+void CMainWindow::getElevationAt(const QPolygonF &pos, QPolygonF& ele) const
+{
+    CCanvas * canvas = getVisibleCanvas();
+    if(canvas)
+    {
+        canvas->getElevationAt(pos, ele);
+    }
+    else
+    {
+        for(int i = 0; i < tabWidget->count(); i++)
+        {
+            canvas = dynamic_cast<CCanvas*>(tabWidget->widget(i));
+            if(canvas)
+            {
+                canvas->getElevationAt(pos, ele);
+                return;
+            }
+        }
+        ele.clear();
+    }
+}
+
+void CMainWindow::slotAbout()
+{
+    CAbout dlg(this);
+    dlg.exec();
+}
+
+void CMainWindow::slotHelp()
+{
+    QDesktopServices::openUrl(QUrl("https://bitbucket.org/maproom/qmapshack/wiki/DocMain"));
+}
+
+
+void CMainWindow::slotAddCanvas()
+{
+    int i, cnt = 0;
+    for(i = 0; i < tabWidget->count(); i++)
+    {
+        CCanvas * canvas = dynamic_cast<CCanvas*>(tabWidget->widget(i));
+        if(nullptr != canvas)
+        {
+            cnt++;
+        }
+    }
+
+    CCanvas * canvas = new CCanvas(tabWidget, QString());
+    tabWidget->addTab(canvas, canvas->objectName());
+    connect(canvas, &CCanvas::sigMousePosition, this, &CMainWindow::slotMousePosition);
+
+    tabWidget->setCurrentWidget(canvas);
+}
+
+void CMainWindow::slotCloneCanvas()
+{
+    CCanvas * source = getVisibleCanvas();
+    if(nullptr == source)
+    {
+        return;
+    }
+
+    QTemporaryFile temp;
+    temp.open();
+    temp.close();
+
+    QSettings view(temp.fileName(), QSettings::IniFormat);
+    view.clear();
+
+    source->saveConfig(view);
+
+    slotAddCanvas();
+
+    CCanvas * target = getVisibleCanvas();
+    if(nullptr == target)
+    {
+        return;
+    }
+
+    target->loadConfig(view);
+    target->slotTriggerCompleteUpdate(CCanvas::redraw_e::eRedrawGis);
+
+    SETTINGS;
+    cfg.beginGroup("Canvas");
+    cfg.beginGroup("Views");
+    cfg.beginGroup(target->objectName());
+    target->saveConfig(cfg);
+    cfg.endGroup();
+    cfg.endGroup();
+    cfg.endGroup();
+}
+
+void CMainWindow::slotTabCloseRequest(int i)
+{
+    QMutexLocker lock(&CMapItem::mutexActiveMaps);
+
+    delete tabWidget->widget(i);
+}
+
+static inline bool compareNames(QString s1, QString s2)
+{
+    return s1.replace("&", "") == s2.replace("&", "");
+}
+
+void CMainWindow::slotCurrentTabCanvas(int i)
+{
+    QString name = tabWidget->tabText(i);
+    for(int n = 0; n < tabMaps->count(); n++)
+    {
+        if(compareNames(name, tabMaps->tabText(n)))
+        {
+            tabMaps->setCurrentIndex(n);
+            break;
+        }
+    }
+
+    for(int n = 0; n < tabDem->count(); n++)
+    {
+        if(compareNames(name, tabDem->tabText(n)))
+        {
+            tabDem->setCurrentIndex(n);
+            break;
+        }
+    }
+
+    for(int n = 0; n < tabWidget->count(); n++)
+    {
+        CCanvas * canvas = dynamic_cast<CCanvas*>(tabWidget->widget(n));
+        if(canvas)
+        {
+            if(n == i)
+            {
+                canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
+                canvas->showProfile(true);
+            }
+            else
+            {
+                canvas->showProfile(false);
+            }
+        }
+    }
+}
+
+void CMainWindow::slotCurrentTabMaps(int i)
+{
+    QString name = tabMaps->tabText(i);
+    for(int n = 0; n < tabWidget->count(); n++)
+    {
+        if(compareNames(name, tabWidget->tabText(n)))
+        {
+            tabWidget->setCurrentIndex(n);
+            break;
+        }
+    }
+
+    for(int n = 0; n < tabDem->count(); n++)
+    {
+        if(compareNames(name, tabDem->tabText(n)))
+        {
+            tabDem->setCurrentIndex(n);
+            break;
+        }
+    }
+}
+
+void CMainWindow::slotCurrentTabDem(int i)
+{
+    QString name = tabMaps->tabText(i);
+    for(int n = 0; n < tabWidget->count(); n++)
+    {
+        if(compareNames(name, tabWidget->tabText(n)))
+        {
+            tabWidget->setCurrentIndex(n);
+            break;
+        }
+    }
+
+    for(int n = 0; n < tabMaps->count(); n++)
+    {
+        if(compareNames(name, tabMaps->tabText(n)))
+        {
+            tabMaps->setCurrentIndex(n);
+            break;
+        }
+    }
+}
+
+void CMainWindow::slotMousePosition(const QPointF& pos, qreal ele)
+{
+    QString str;
+    IUnit::degToStr(pos.x(), pos.y(), str);
+    lblPosWGS84->setText(str);
+
+    if(ele != NOFLOAT)
+    {
+        QString val, unit;
+        IUnit::self().meter2elevation(ele, val, unit);
+        lblElevation->setText(tr("Ele: %1%2").arg(val).arg(unit));
+        lblElevation->show();
+    }
+    else
+    {
+        lblElevation->hide();
+    }
+
+    if(actionShowGrid->isChecked())
+    {
+        CCanvas * canvas = getVisibleCanvas();
+        if(canvas)
+        {
+            QString str;
+            lblPosGrid->show();
+            canvas->convertGridPos2Str(pos, str, false);
+            lblPosGrid->setText(tr("[Grid: %1]").arg(str));
+        }
+    }
+    else
+    {
+        lblPosGrid->hide();
+    }
+}
+
+void CMainWindow::slotUpdateCurrentWidget()
+{
+    CCanvas * canvas = getVisibleCanvas();
+    if(canvas)
+    {
+        canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawAll);
+        return;
+    }
+
+    QWidget * w = tabWidget->currentWidget();
+    if(w)
+    {
+        w->update();
+        return;
+    }
+}
+
+
+void CMainWindow::slotSetupMapFont()
+{
+    bool ok = false;
+    QFont f = QFontDialog::getFont(&ok, mapFont, this);
+    if(ok)
+    {
+        mapFont = f;
+        QWidget * w = tabWidget->currentWidget();
+        if(w)
+        {
+            w->update();
+        }
+    }
+}
+
+void CMainWindow::slotSetupGrid()
+{
+    CCanvas * canvas = getVisibleCanvas();
+    if(nullptr == canvas)
+    {
+        return;
+    }
+    canvas->setupGrid();
+}
+
+void CMainWindow::slotSetupMapPath()
+{
+    CMapDraw::setupMapPath();
+}
+
+void CMainWindow::slotSetupDemPath()
+{
+    CDemDraw::setupDemPath();
+}
+
+void CMainWindow::slotSetupMapView()
+{
+    CCanvas * canvas = getVisibleCanvas();
+    if(nullptr == canvas)
+    {
+        return;
+    }
+    canvas->setup();
+}
+
+void CMainWindow::slotSetupTimeZone()
+{
+    CTimeZoneSetup dlg(this);
+    dlg.exec();
+}
+
+void CMainWindow::slotSetupUnits()
+{
+    CUnitsSetup dlg(this);
+    dlg.exec();
+
+    if(QDialog::Accepted == dlg.result())
+    {
+        CKnownExtension::init(IUnit::self());
+    }
+}
+
+void CMainWindow::slotSetupWorkspace()
+{
+    CSetupWorkspace dlg(this);
+    dlg.exec();
+}
+
+void CMainWindow::slotSetupCoordFormat()
+{
+    CCoordFormatSetup dlg(this);
+    dlg.exec();
+}
+
+void CMainWindow::slotImportDatabase()
+{
+    CImportDatabase * widget = new CImportDatabase(this);
+    addWidgetToTab(widget);
+}
+
+void CMainWindow::slotBuildVrt()
+{
+    CMapVrtBuilder * widget = new CMapVrtBuilder(this);
+    addWidgetToTab(widget);
+}
+
+void CMainWindow::slotCreateRoutinoDatabase()
+{
+    CRoutinoDatabaseBuilder * widget = new CRoutinoDatabaseBuilder(this);
+    addWidgetToTab(widget);
+}
+
+void CMainWindow::slotLoadGISData()
+{
+    SETTINGS;
+    QString path   = cfg.value("Paths/lastGisPath",   QDir::homePath()).toString();
+    QString filter = cfg.value("Paths/lastGisFilter", IGisProject::filedialogAllSupported).toString();
+
+    QStringList filenames = QFileDialog::getOpenFileNames(this, tr("Load GIS Data..."), path, IGisProject::filedialogLoadFilters, &filter);
+
+    if(filenames.isEmpty())
+    {
+        return;
+    }
+
+    loadGISData(filenames);
+
+    path = QFileInfo(filenames.first()).absolutePath();
+    cfg.setValue("Paths/lastGisPath",   path);
+    cfg.setValue("Paths/lastGisFilter", filter);
+}
+
+
+void CMainWindow::loadGISData(const QStringList& filenames)
+{
+    foreach(const QString &filename, filenames)
+    {
+        gisWidget->loadGisProject(filename);
+    }
+}
+
+
+void CMainWindow::slotStoreView()
+{
+    CCanvas * canvas = getVisibleCanvas();
+    if(nullptr == canvas)
+    {
+        return;
+    }
+
+    SETTINGS;
+    QString path = cfg.value("Paths/lastViewPath", QDir::homePath()).toString();
+    QString filename = QFileDialog::getSaveFileName( this, tr("Select output file"), path, tr("QMapShack View (*.view)"));
+
+    if(filename.isEmpty())
+    {
+        return;
+    }
+
+    QFileInfo fi(filename);
+    if(fi.suffix().toLower() != "view")
+    {
+        filename += ".view";
+    }
+
+    QSettings view(filename, QSettings::IniFormat);
+    view.clear();
+
+    canvas->saveConfig(view);
+
+    path = fi.absolutePath();
+    cfg.setValue("Paths/lastViewPath", path);
+}
+
+void CMainWindow::slotLoadView()
+{
+    SETTINGS;
+    QString path = cfg.value("Paths/lastViewPath", QDir::homePath()).toString();
+    QString filename = QFileDialog::getOpenFileName(this, tr("Select file to load"), path, tr("QMapShack View (*.view)"));
+
+    if(filename.isEmpty())
+    {
+        return;
+    }
+
+    slotAddCanvas();
+
+    CCanvas * canvas = getVisibleCanvas();
+    if(nullptr == canvas)
+    {
+        return;
+    }
+
+    QSettings view(filename, QSettings::IniFormat);
+    canvas->loadConfig(view);
+
+    cfg.beginGroup("Canvas");
+    cfg.beginGroup("Views");
+    cfg.beginGroup(canvas->objectName());
+    canvas->saveConfig(cfg);
+    cfg.endGroup();
+    cfg.endGroup();
+    cfg.endGroup();
+
+    QFileInfo fi(filename);
+    path = fi.absolutePath();
+    cfg.setValue("Paths/lastViewPath", path);
+}
+
+void CMainWindow::slotSetProfileMode(bool on)
+{
+    for(int i = 0; i < tabWidget->count(); i++)
+    {
+        CCanvas * view = dynamic_cast<CCanvas*>(tabWidget->widget(i));
+        if(nullptr != view)
+        {
+            view->showProfileAsWindow(on);
+        }
+    }
+}
+
+void CMainWindow::slotPrintMap()
+{
+    CCanvas * canvas = getVisibleCanvas();
+    if(nullptr != canvas)
+    {
+        canvas->setMousePrint();
+    }
+}
+
+void CMainWindow::slotSetupWptIcons()
+{
+    CWptIconDialog dlg(this);
+    dlg.exec();
+}
+
+#ifdef WIN32
+
+static void sendDeviceEvent(DWORD unitmask, bool add)
+{
+    for (char i = 0; i < 26; ++i)
+    {
+        if (unitmask & 0x1)
+        {
+            QString path = QString(i + 'A') + ":/";
+            qDebug() << "sendDeviceEvent" << path << add;
+            CEventDevice * event = new CEventDevice(path, add);
+            QCoreApplication::postEvent(CDeviceWatcherWindows::self(), event);
+            //qDebug() << "postEvent";
+        }
+        unitmask = unitmask >> 1;
+    }
+}
+
+
+bool CMainWindow::nativeEvent(const QByteArray & eventType, void * message, long * result)
+{
+    MSG* msg = (MSG*)message;
+    //qDebug() << "nativeEvent" << eventType << msg->message << msg->lParam << msg->wParam;
+
+    if (WM_DEVICECHANGE == msg->message)
+    {
+        //qDebug() << "WM_DEVICECHANGE";
+        PDEV_BROADCAST_HDR pHdr = (PDEV_BROADCAST_HDR)msg->lParam;
+        switch (msg->wParam)
+        {
+        case DBT_DEVICEARRIVAL:
+        {
+            qDebug() << "DBT_DEVICEARRIVAL"<< pHdr->dbch_devicetype;
+            if (pHdr->dbch_devicetype == DBT_DEVTYP_VOLUME)
+            {
+                PDEV_BROADCAST_VOLUME pHdrv = (PDEV_BROADCAST_VOLUME)pHdr;
+                sendDeviceEvent(pHdrv->dbcv_unitmask, true);
+            }
+            break;
+        }
+
+        case  DBT_DEVICEREMOVECOMPLETE:
+        {
+            qDebug() << "DBT_DEVICEREMOVECOMPLETE" << pHdr->dbch_devicetype;
+            if (pHdr->dbch_devicetype == DBT_DEVTYP_VOLUME)
+            {
+                PDEV_BROADCAST_VOLUME pHdrv = (PDEV_BROADCAST_VOLUME)pHdr;
+                sendDeviceEvent(pHdrv->dbcv_unitmask, false);
+            }
+            break;
+        }
+
+        default:
+        {
+            break;
+        }
+        }
+    }
+
+    return QWidget::nativeEvent(eventType, message, result);
+}
+#endif // WIN32
+
+void CMainWindow::dragEnterEvent(QDragEnterEvent *event)
+{
+    if(event->mimeData()->hasUrls())
+    {
+        QList<QUrl> urls = event->mimeData()->urls();
+        QFileInfo fi(urls[0].path());
+        QString ext = fi.suffix().toUpper();
+
+        if( (ext == "QMS") || (ext == "GPX") || (ext == "SLF") || (ext == "FIT") )
+        {
+            event->acceptProposedAction();
+        }
+    }
+}
+
+
+void CMainWindow::dropEvent(QDropEvent *event)
+{
+    QList<QUrl> urls = event->mimeData()->urls();
+
+    QStringList filenames;
+    foreach(const QUrl &url, urls)
+    {
+        filenames << url.toLocalFile();
+    }
+
+    loadGISData(filenames);
+
+    event->acceptProposedAction();
+}
diff --git a/src/CMainWindow.h b/src/CMainWindow.h
index 1396e53..4c65a62 100644
--- a/src/CMainWindow.h
+++ b/src/CMainWindow.h
@@ -41,20 +41,22 @@ public:
 
     static QWidget * getBestWidgetForParent();
 
+    static QString getUser();
+
     virtual ~CMainWindow();
 
     void addMapList(CMapList *list, const QString& name);
     void addDemList(CDemList *list, const QString& name);
     void addWidgetToTab(QWidget * w);
 
-    bool isScaleVisible();
-    bool isGridVisible();
-    bool isNight();
-    bool isPOIText();
-    bool isMapToolTip();
-    bool flipMouseWheel();
-    bool profileIsWindow();
-    const QFont& getMapFont()
+    bool isScaleVisible()  const;
+    bool isGridVisible()   const;
+    bool isNight()         const;
+    bool isPOIText()       const;
+    bool isMapToolTip()    const;
+    bool flipMouseWheel()  const;
+    bool profileIsWindow() const;
+    const QFont& getMapFont() const
     {
         return mapFont;
     }
@@ -65,21 +67,32 @@ public:
        @param pos   a position in units of [rad]
        @return If no elevation value can be found for the position NOFLOAT is returned.
      */
-    qreal getEelevationAt(const QPointF &pos);
-    void  getEelevationAt(const QPolygonF& pos, QPolygonF &ele);
-    void  getEelevationAt(SGisLine &line);
+    qreal getElevationAt(const QPointF &pos) const;
+    void  getElevationAt(const QPolygonF& pos, QPolygonF &ele) const;
+    void  getElevationAt(SGisLine &line) const;
     /**
        @brief Get pointer to the currently visible canvas object.
        @return If the currently visible tab does not contain a CCanvas object 0 is returned.
      */
-    CCanvas * getVisibleCanvas();
+    CCanvas* getVisibleCanvas() const;
 
-#ifdef WIN32
+    QAction * getMapSetupAction()
+    {
+        return actionSetupMapPaths;
+    }
+
+    QAction * getDemSetupAction()
+    {
+        return actionSetupDEMPaths;
+    }
+
+    const qint32 id;
 protected:
+#ifdef WIN32
     bool CMainWindow::nativeEvent(const QByteArray & eventType, void * message, long * result);
 #endif // WIN32
-    void dragEnterEvent(QDragEnterEvent *event);
-    void dropEvent(QDropEvent *event);
+    void dragEnterEvent(QDragEnterEvent *event) override;
+    void dropEvent(QDropEvent *event) override;
 
 
 private slots:
@@ -110,11 +123,13 @@ private slots:
     void slotSetProfileMode(bool on);
     void slotCreateRoutinoDatabase();
     void slotPrintMap();
+    void slotSetupWptIcons();
 
 private:
     friend int main(int argc, char ** argv);
     CMainWindow();
     void loadGISData(const QStringList& filenames);
+    void prepareMenuForMac();
 
     static CMainWindow * pSelf;
 
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 7868226..43ca0be 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,3 +1,9 @@
+# Prevent custom commands/targets outputs to be deleted by make clean
+# We need this to prevent .ts files from being deleted with make clean, when
+# UPDATE_TRANSLATIONS=ON
+# WARNING: Only works with Makefile generator.
+# See: https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=15c454fe
+set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM TRUE)
 
 # Find includes in corresponding build directories
 set(CMAKE_INCLUDE_CURRENT_DIR ON)
@@ -20,6 +26,18 @@ find_package(GDAL REQUIRED)
 find_package(PROJ REQUIRED)
 find_package(ROUTINO REQUIRED)
 
+function(cxx_add_flag_if_supported flag)
+    CHECK_CXX_COMPILER_FLAG(${flag} Flag:${flag})
+    if(Flag:${flag})
+        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}" PARENT_SCOPE)
+    endif(Flag:${flag})
+endfunction(cxx_add_flag_if_supported)
+
+
+if(UNIX AND NOT APPLE)
+find_package(Qt5Test)
+endif(UNIX AND NOT APPLE)
+
 if(UNIX)
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
 endif(UNIX)
@@ -36,196 +54,230 @@ endif(APPLE)
 
 
 set( SRCS
-
-    main.cpp
-    GeoMath.cpp
-    CMainWindow.cpp
-    CAbout.cpp
-    widgets/CTinySpinBox.cpp
-    widgets/CDoubleSpinBox.cpp
-    widgets/CFadingIcon.cpp
-    widgets/CTextEditWidget.cpp
-    widgets/CHistoryListWidget.cpp
-    widgets/CPhotoAlbum.cpp
-    widgets/CColorLegend.cpp
-    helpers/CInputDialog.cpp
-    helpers/CPositionDialog.cpp
-    helpers/CWptIconDialog.cpp    
-    helpers/CSelectProjectDialog.cpp
-    helpers/CSelectCopyAction.cpp    
-    helpers/CElevationDialog.cpp
-    helpers/CLinksDialog.cpp    
-    helpers/CPhotoViewer.cpp    
-    helpers/CProgressDialog.cpp
-    helpers/CCommandProcessor.cpp
-    helpers/CAppSetup.cpp
-    helpers/CDraw.cpp
-    canvas/CCanvas.cpp
-    canvas/CCanvasSetup.cpp
-    canvas/IDrawContext.cpp
-    canvas/IDrawObject.cpp
-    dem/IDem.cpp
-    map/IMapProp.cpp
-    dem/IDemProp.cpp
-    dem/CDemDraw.cpp
-    dem/CDemVRT.cpp
-    dem/CDemList.cpp
-    dem/CDemItem.cpp
-    dem/CDemPathSetup.cpp
-    dem/CDemPropSetup.cpp    
-    map/IMap.cpp
-    map/CMapDraw.cpp
-    map/CMapItem.cpp
-    map/CMapList.cpp
-    map/CMapRMAP.cpp
-    map/CMapJNX.cpp
-    map/CMapIMG.cpp
-    map/CMapMAP.cpp
-    map/CMapVRT.cpp
-    map/CMapWMTS.cpp
-    map/CMapTMS.cpp
-    map/CMapPathSetup.cpp    
-    map/CMapPropSetup.cpp
-    map/garmin/IGarminStrTbl.cpp
-    map/garmin/CGarminStrTbl6.cpp
-    map/garmin/CGarminStrTbl8.cpp
-    map/garmin/CGarminStrTblUtf8.cpp
-    map/garmin/CGarminPoint.cpp
-    map/garmin/CGarminPolygon.cpp
-    map/garmin/CGarminTyp.cpp
-    map/cache/CDiskCache.cpp
-    map/cache/IDiskCache.cpp
-    map/mapsforge/types.cpp
-    units/IUnit.cpp
-    units/CUnitImperial.cpp
-    units/CUnitMetric.cpp
-    units/CUnitNautic.cpp
-    units/CTimeZoneSetup.cpp
-    units/CUnitsSetup.cpp
-    units/CCoordFormatSetup.cpp
-    grid/CGrid.cpp
-    grid/CGridSetup.cpp
-    grid/CProjWizard.cpp
-    grid/mitab.cpp
-    mouse/IMouse.cpp    
-    mouse/IScrOpt.cpp
-    mouse/CMouseDummy.cpp
-    mouse/CMouseNormal.cpp
-    mouse/CMouseMoveWpt.cpp
-    mouse/CMouseEditTrk.cpp
-    mouse/CMouseEditRte.cpp
-    mouse/CMouseEditArea.cpp
-    mouse/CMouseRangeTrk.cpp
-    mouse/CMouseWptBubble.cpp
-    mouse/CMousePrint.cpp
-    mouse/CScrOptUnclutter.cpp    
-    mouse/CScrOptRangeTrk.cpp    
-    mouse/line/IMouseEditLine.cpp
-    mouse/line/CScrOptEditLine.cpp
-    mouse/line/CScrOptRangeLine.cpp
-    mouse/line/ILineOp.cpp
-    mouse/line/CLineOpMovePoint.cpp
-    mouse/line/CLineOpAddPoint.cpp
-    mouse/line/CLineOpDeletePoint.cpp
-    mouse/line/CLineOpSelectRange.cpp
-    gis/WptIcons.cpp
-    gis/CGisDraw.cpp
-    gis/IGisItem.cpp
-    gis/IGisLine.cpp
-    gis/CGisWidget.cpp
-    gis/CGisListDB.cpp
-    gis/CGisListWks.cpp
-    gis/CSelDevices.cpp
-    gis/prj/IGisProject.cpp
-    gis/prj/CDetailsPrj.cpp
-    gis/gpx/CGpxProject.cpp
-    gis/gpx/serialization.cpp
-    gis/qms/CQmsProject.cpp
-    gis/qms/serialization.cpp
-    gis/tnv/CTwoNavProject.cpp
-    gis/tnv/serialization.cpp
-    gis/db/IDB.cpp
-    gis/db/CSetupDatabase.cpp
-    gis/db/CSetupWorkspace.cpp
-    gis/db/CSetupFolder.cpp
-    gis/db/IDBFolder.cpp
-    gis/db/CDBFolderLostFound.cpp
-    gis/db/CDBFolderDatabase.cpp
-    gis/db/CDBFolderGroup.cpp
-    gis/db/CDBFolderOther.cpp
-    gis/db/CDBFolderProject.cpp
-    gis/db/CDBItem.cpp
-    gis/db/CDBProject.cpp
-    gis/db/CLostFoundProject.cpp
-    gis/db/CSelectSaveAction.cpp
-    gis/db/CSelectDBFolder.cpp
-    gis/search/CSearchGoogle.cpp
-    gis/wpt/CGisItemWpt.cpp
-    gis/wpt/CScrOptWpt.cpp
-    gis/wpt/CDetailsWpt.cpp
-    gis/wpt/CDetailsGeoCache.cpp
-    gis/wpt/CProjWpt.cpp
-    gis/wpt/CSetupNewWpt.cpp
-    gis/trk/CGisItemTrk.cpp
-    gis/trk/CScrOptTrk.cpp
-    gis/trk/CDetailsTrk.cpp
-    gis/trk/CCombineTrk.cpp
-    gis/trk/CCutTrk.cpp
-    gis/trk/CSelectActivity.cpp
-    gis/trk/CActivityTrk.cpp
-    gis/trk/CPropertyTrk.cpp
-    gis/trk/CKnownExtension.cpp
-    gis/trk/filter/filter.cpp
-    gis/trk/filter/CFilterDouglasPeuker.cpp
-    gis/trk/filter/CFilterInvalid.cpp
-    gis/trk/filter/CFilterReset.cpp
-    gis/trk/filter/CFilterDelete.cpp
-    gis/trk/filter/CFilterMedian.cpp
-    gis/trk/filter/CFilterReplaceElevation.cpp
-    gis/trk/filter/CFilterOffsetElevation.cpp
-    gis/trk/filter/CFilterNewDate.cpp
-    gis/trk/filter/CFilterObscureDate.cpp
-    gis/trk/filter/CFilterSpeed.cpp
-    gis/rte/CGisItemRte.cpp
-    gis/rte/CScrOptRte.cpp
-    gis/rte/CCreateRouteFromWpt.cpp
-    gis/rte/CDetailsRte.cpp
-    gis/rte/router/IRouter.cpp
-    gis/rte/router/CRouterSetup.cpp
-    gis/rte/router/CRouterRoutino.cpp
-    gis/rte/router/CRouterMapQuest.cpp
-    gis/rte/router/CRouterRoutinoPathSetup.cpp        
-    gis/ovl/CGisItemOvlArea.cpp
-    gis/ovl/CScrOptOvlArea.cpp
-    gis/ovl/CDetailsOvlArea.cpp    
-    plot/IPlot.cpp
-    plot/CPlotAxis.cpp
-    plot/CPlotAxisTime.cpp    
-    plot/CPlotData.cpp
-    plot/CPlotProfile.cpp
-    plot/ITrack.cpp
-    plot/CPlotTrack.cpp
-    plot/CPlot.cpp
-    qlgt/converter.cpp
-    qlgt/CQlb.cpp
-    qlgt/IItem.cpp
-    qlgt/CQlgtFolder.cpp
-    qlgt/CQlgtWpt.cpp
-    qlgt/CQlgtTrack.cpp
-    qlgt/CQlgtRoute.cpp
-    qlgt/CQlgtDiary.cpp
-    qlgt/IQlgtOverlay.cpp    
-    qlgt/CQlgtDb.cpp
-    qlgt/CQmsDb.cpp
-    device/IDeviceWatcher.cpp
-    device/IDevice.cpp
-    device/CDeviceGarmin.cpp
-    device/CDeviceTwoNav.cpp
-    tool/IToolShell.cpp
-    tool/CMapVrtBuilder.cpp
-    tool/CImportDatabase.cpp
-    tool/CRoutinoDatabaseBuilder.cpp
-    print/CPrintDialog.cpp
+        GeoMath.cpp
+        CMainWindow.cpp
+        CAbout.cpp
+        widgets/CTinySpinBox.cpp
+        widgets/CDoubleSpinBox.cpp
+        widgets/CFadingIcon.cpp
+        widgets/CTextEditWidget.cpp
+        widgets/CLineEdit.cpp
+        widgets/CHistoryListWidget.cpp
+        widgets/CPhotoAlbum.cpp
+        widgets/CColorLegend.cpp
+        widgets/CColorChooser.cpp
+        helpers/CInputDialog.cpp
+        helpers/CPositionDialog.cpp
+        helpers/CWptIconDialog.cpp
+        helpers/CSelectProjectDialog.cpp
+        helpers/CSelectCopyAction.cpp
+        helpers/CElevationDialog.cpp
+        helpers/CLinksDialog.cpp
+        helpers/CPhotoViewer.cpp
+        helpers/CProgressDialog.cpp
+        helpers/CCommandProcessor.cpp
+        helpers/CAppSetup.cpp
+        helpers/CDraw.cpp
+        helpers/CValue.cpp
+        helpers/CLimit.cpp
+        canvas/CCanvas.cpp
+        canvas/CCanvasSetup.cpp
+        canvas/IDrawContext.cpp
+        canvas/IDrawObject.cpp
+        dem/IDem.cpp
+        map/IMapProp.cpp
+        dem/IDemProp.cpp
+        dem/CDemDraw.cpp
+        dem/CDemVRT.cpp
+        dem/CDemList.cpp
+        dem/CDemItem.cpp
+        dem/CDemPathSetup.cpp
+        dem/CDemPropSetup.cpp
+        map/IMap.cpp
+        map/CMapDraw.cpp
+        map/CMapGEMF.cpp
+        map/CMapItem.cpp
+        map/CMapList.cpp
+        map/CMapRMAP.cpp
+        map/CMapJNX.cpp
+        map/CMapIMG.cpp
+        map/CMapMAP.cpp
+        map/CMapVRT.cpp
+        map/CMapWMTS.cpp
+        map/CMapTMS.cpp
+        map/CMapPathSetup.cpp
+        map/CMapPropSetup.cpp
+        map/garmin/IGarminStrTbl.cpp
+        map/garmin/CGarminStrTbl6.cpp
+        map/garmin/CGarminStrTbl8.cpp
+        map/garmin/CGarminStrTblUtf8.cpp
+        map/garmin/CGarminPoint.cpp
+        map/garmin/CGarminPolygon.cpp
+        map/garmin/CGarminTyp.cpp
+        map/cache/CDiskCache.cpp
+        map/cache/IDiskCache.cpp
+        map/mapsforge/types.cpp
+        units/IUnit.cpp
+        units/CUnitImperial.cpp
+        units/CUnitMetric.cpp
+        units/CUnitNautic.cpp
+        units/CTimeZoneSetup.cpp
+        units/CUnitsSetup.cpp
+        units/CCoordFormatSetup.cpp
+        grid/CGrid.cpp
+        grid/CGridSetup.cpp
+        grid/CProjWizard.cpp
+        grid/mitab.cpp
+        mouse/IMouse.cpp
+        mouse/IScrOpt.cpp
+        mouse/CMouseDummy.cpp
+        mouse/CMouseNormal.cpp
+        mouse/CMouseMoveWpt.cpp
+        mouse/CMouseEditTrk.cpp
+        mouse/CMouseEditRte.cpp
+        mouse/CMouseEditArea.cpp
+        mouse/CMouseRangeTrk.cpp
+        mouse/CMouseWptBubble.cpp
+        mouse/CMousePrint.cpp
+        mouse/CScrOptUnclutter.cpp
+        mouse/CScrOptRangeTrk.cpp
+        mouse/line/IMouseEditLine.cpp
+        mouse/line/CScrOptEditLine.cpp
+        mouse/line/CScrOptRangeLine.cpp
+        mouse/line/ILineOp.cpp
+        mouse/line/CLineOpMovePoint.cpp
+        mouse/line/CLineOpAddPoint.cpp
+        mouse/line/CLineOpDeletePoint.cpp
+        mouse/line/CLineOpSelectRange.cpp
+        gis/WptIcons.cpp
+        gis/CGisDraw.cpp
+        gis/IGisItem.cpp
+        gis/IGisLine.cpp
+        gis/CGisWidget.cpp
+        gis/CGisListDB.cpp
+        gis/CGisListWks.cpp
+        gis/CSelDevices.cpp
+        gis/prj/IGisProject.cpp
+        gis/prj/CDetailsPrj.cpp
+        gis/gpx/CGpxProject.cpp
+        gis/gpx/serialization.cpp
+        gis/qms/CQmsProject.cpp
+        gis/qms/serialization.cpp
+        gis/slf/CSlfProject.cpp
+        gis/slf/CSlfReader.cpp
+        gis/tnv/CTwoNavProject.cpp
+        gis/tnv/serialization.cpp
+        gis/db/IDB.cpp
+        gis/db/IDBSqlite.cpp
+        gis/db/IDBMysql.cpp
+        gis/db/CSetupDatabase.cpp
+        gis/db/CSetupWorkspace.cpp
+        gis/db/CSetupFolder.cpp
+        gis/db/IDBFolder.cpp
+        gis/db/IDBFolderSql.cpp
+        gis/db/CDBFolderLostFound.cpp
+        gis/db/CDBFolderSqlite.cpp
+        gis/db/CDBFolderMysql.cpp
+        gis/db/CDBFolderGroup.cpp
+        gis/db/CDBFolderOther.cpp
+        gis/db/CDBFolderProject.cpp
+        gis/db/CDBItem.cpp
+        gis/db/CDBProject.cpp
+        gis/db/CLostFoundProject.cpp
+        gis/db/CSelectSaveAction.cpp
+        gis/db/CSelectDBFolder.cpp
+        gis/search/CSearchGoogle.cpp
+        gis/wpt/CGisItemWpt.cpp
+        gis/wpt/CScrOptWpt.cpp
+        gis/wpt/CDetailsWpt.cpp
+        gis/wpt/CDetailsGeoCache.cpp
+        gis/wpt/CProjWpt.cpp
+        gis/wpt/CSetupNewWpt.cpp
+        gis/trk/CGisItemTrk.cpp
+        gis/trk/CScrOptTrk.cpp
+        gis/trk/CDetailsTrk.cpp
+        gis/trk/CCombineTrk.cpp
+        gis/trk/CCutTrk.cpp
+        gis/trk/CSelectActivity.cpp
+        gis/trk/CSelectActivityColor.cpp
+        gis/trk/CActivityTrk.cpp
+        gis/trk/CPropertyTrk.cpp
+        gis/trk/CKnownExtension.cpp
+        gis/trk/filter/filter.cpp
+        gis/trk/filter/CFilterDouglasPeuker.cpp
+        gis/trk/filter/CFilterInvalid.cpp
+        gis/trk/filter/CFilterReset.cpp
+        gis/trk/filter/CFilterDelete.cpp
+        gis/trk/filter/CFilterDeleteExtension.cpp
+        gis/trk/filter/CFilterMedian.cpp
+        gis/trk/filter/CFilterReplaceElevation.cpp
+        gis/trk/filter/CFilterOffsetElevation.cpp
+        gis/trk/filter/CFilterNewDate.cpp
+        gis/trk/filter/CFilterObscureDate.cpp
+        gis/trk/filter/CFilterSpeed.cpp
+        gis/trk/filter/CFilterSplitSegment.cpp
+        gis/rte/CGisItemRte.cpp
+        gis/rte/CScrOptRte.cpp
+        gis/rte/CCreateRouteFromWpt.cpp
+        gis/rte/CDetailsRte.cpp
+        gis/rte/router/IRouter.cpp
+        gis/rte/router/CRouterSetup.cpp
+        gis/rte/router/CRouterRoutino.cpp
+        gis/rte/router/CRouterMapQuest.cpp
+        gis/rte/router/CRouterRoutinoPathSetup.cpp
+        gis/ovl/CGisItemOvlArea.cpp
+        gis/ovl/CScrOptOvlArea.cpp
+        gis/ovl/CDetailsOvlArea.cpp
+        gis/fit/CFitProject.cpp
+        gis/fit/CFitStream.cpp
+        gis/fit/serialization.cpp
+        gis/fit/decoder/CFitMessage.cpp
+        gis/fit/decoder/CFitField.cpp
+        gis/fit/decoder/CFitDefinitionMessage.cpp
+        gis/fit/decoder/CFitFieldDefinition.cpp
+        gis/fit/defs/CFitProfile.cpp
+        gis/fit/decoder/IFitDecoderState.cpp
+        gis/fit/decoder/CFitHeaderState.cpp
+        gis/fit/decoder/CFitRecordHeaderState.cpp
+        gis/fit/decoder/CFitFieldDataState.cpp
+        gis/fit/decoder/CFitFieldDefinitionState.cpp
+        gis/fit/decoder/CFitRecordContentState.cpp
+        gis/fit/decoder/CFitCrcState.cpp
+        gis/fit/defs/CFitBaseType.cpp
+        gis/fit/decoder/CFitDecoder.cpp
+        gis/fit/defs/CFitProfileLookup.cpp
+        gis/fit/defs/CFitFieldProfile.cpp
+        gis/fit/decoder/CFitByteDataTransformer.cpp
+        gis/fit/decoder/CFitFieldBuilder.cpp
+        plot/IPlot.cpp
+        plot/CPlotAxis.cpp
+        plot/CPlotAxisTime.cpp
+        plot/CPlotData.cpp
+        plot/CPlotProfile.cpp
+        plot/ITrack.cpp
+        plot/CPlotTrack.cpp
+        plot/CPlot.cpp
+        qlgt/converter.cpp
+        qlgt/CQlb.cpp
+        qlgt/IItem.cpp
+        qlgt/CQlgtFolder.cpp
+        qlgt/CQlgtWpt.cpp
+        qlgt/CQlgtTrack.cpp
+        qlgt/CQlgtRoute.cpp
+        qlgt/CQlgtDiary.cpp
+        qlgt/IQlgtOverlay.cpp
+        qlgt/CQlgtDb.cpp
+        qlgt/CQmsDb.cpp
+        device/IDeviceWatcher.cpp
+        device/IDevice.cpp
+        device/CDeviceGarmin.cpp
+        device/CDeviceGarminArchive.cpp
+        device/CDeviceTwoNav.cpp
+        tool/IToolShell.cpp
+        tool/CMapVrtBuilder.cpp
+        tool/CImportDatabase.cpp
+        tool/CRoutinoDatabaseBuilder.cpp
+        print/CPrintDialog.cpp
 )
 
 if(UNIX AND NOT APPLE)
@@ -251,197 +303,235 @@ endif(WIN32)
 
 
 set( HDRS
-
-    version.h
-    GeoMath.h
-    CMainWindow.h
-    CAbout.h
-    widgets/CTinySpinBox.h
-    widgets/CDoubleSpinBox.h
-    widgets/CFadingIcon.h
-    widgets/CHistoryListWidget.h
-    widgets/CTextEditWidget.h
-    widgets/CPhotoAlbum.h
-    widgets/CColorLegend.h
-    helpers/Platform.h
-    helpers/CFileExt.h
-    helpers/CAppOpts.h
-    helpers/CSettings.h
-    helpers/CInputDialog.h
-    helpers/CPositionDialog.h
-    helpers/CSelectCopyAction.h
-    helpers/CWptIconDialog.h
-    helpers/CSelectProjectDialog.h
-    helpers/CElevationDialog.h
-    helpers/CLinksDialog.h    
-    helpers/CPhotoViewer.h   
-    helpers/CProgressDialog.h
-    helpers/CCommandProcessor.h
-    helpers/CAppSetup.h
-    helpers/CDraw.h
-    canvas/CCanvas.h
-    canvas/CCanvasSetup.h
-    canvas/IDrawContext.h
-    canvas/IDrawObject.h
-    dem/IDem.h
-    dem/IDemProp.h
-    dem/CDemDraw.h
-    dem/CDemVRT.h
-    dem/CDemList.h
-    dem/CDemItem.h
-    dem/CDemPathSetup.h
-    dem/CDemPropSetup.h
-    map/IMap.h
-    map/IMapProp.h
-    map/CMapDraw.h
-    map/CMapItem.h
-    map/CMapList.h
-    map/CMapRMAP.h
-    map/CMapJNX.h
-    map/CMapIMG.h
-    map/CMapMAP.h
-    map/CMapVRT.h
-    map/CMapWMTS.h
-    map/CMapTMS.h
-    map/CMapPathSetup.h
-    map/CMapPropSetup.h    
-    map/garmin/Garmin.h
-    map/garmin/IGarminStrTbl.h
-    map/garmin/CGarminStrTbl6.h
-    map/garmin/CGarminStrTbl8.h
-    map/garmin/CGarminStrTblUtf8.h
-    map/garmin/CGarminPoint.h
-    map/garmin/CGarminPolygon.h
-    map/garmin/CGarminTyp.h
-    map/cache/CDiskCache.h
-    map/cache/IDiskCache.h
-    map/mapsforge/types.h
-    units/IUnit.h
-    units/CUnitImperial.h
-    units/CUnitMetric.h
-    units/CUnitNautic.h
-    units/CTimeZoneSetup.h
-    units/CUnitsSetup.h
-    units/CCoordFormatSetup.h
-    grid/CGrid.h
-    grid/CGridSetup.h
-    grid/CProjWizard.h
-    grid/mitab.h
-    mouse/IMouse.h    
-    mouse/IScrOpt.h
-    mouse/CMouseDummy.h
-    mouse/CMouseNormal.h
-    mouse/CMouseMoveWpt.h
-    mouse/CMouseEditTrk.h
-    mouse/CMouseEditRte.h
-    mouse/CMouseEditArea.h
-    mouse/CMouseRangeTrk.h
-    mouse/CMouseWptBubble.h
-    mouse/CMousePrint.h
-    mouse/CScrOptUnclutter.h
-    mouse/CScrOptRangeTrk.h    
-    mouse/line/CScrOptEditLine.h
-    mouse/line/CScrOptRangeLine.h
-    mouse/line/IMouseEditLine.h
-    mouse/line/ILineOp.h
-    mouse/line/CLineOpMovePoint.h
-    mouse/line/CLineOpAddPoint.h
-    mouse/line/CLineOpDeletePoint.h
-    mouse/line/CLineOpSelectRange.h    
-    gis/WptIcons.h
-    gis/CGisDraw.h
-    gis/IGisItem.h
-    gis/IGisLine.h
-    gis/prj/IGisProject.h
-    gis/prj/CDetailsPrj.h
-    gis/CGisWidget.h
-    gis/CGisListDB.h
-    gis/CGisListWks.h
-    gis/CSelDevices.h
-    gis/qms/CQmsProject.h
-    gis/tnv/CTwoNavProject.h
-    gis/db/IDB.cpp
-    gis/db/macros.h
-    gis/db/CSetupDatabase.h
-    gis/db/CSetupWorkspace.h
-    gis/db/CSetupFolder.h
-    gis/db/IDBFolder.h
-    gis/db/CDBFolderLostFound.h
-    gis/db/CDBFolderDatabase.h
-    gis/db/CDBFolderGroup.h
-    gis/db/CDBFolderOther.h
-    gis/db/CDBFolderProject.h
-    gis/db/CDBItem.h
-    gis/db/CDBProject.h
-    gis/db/CLostFoundProject.h
-    gis/db/CSelectSaveAction.h
-    gis/db/CSelectDBFolder.h
-    gis/wpt/CGisItemWpt.h
-    gis/wpt/CScrOptWpt.h
-    gis/wpt/CDetailsWpt.h
-    gis/wpt/CDetailsGeoCache.h
-    gis/wpt/CProjWpt.h
-    gis/wpt/CSetupNewWpt.h
-    gis/trk/CGisItemTrk.h
-    gis/trk/CScrOptTrk.h
-    gis/trk/CDetailsTrk.h
-    gis/trk/CCombineTrk.h
-    gis/trk/CCutTrk.h
-    gis/trk/CSelectActivity.h
-    gis/trk/CActivityTrk.h
-    gis/trk/CPropertyTrk.h
-    gis/trk/CKnownExtension.h
-    gis/trk/filter/CFilterDouglasPeuker.h
-    gis/trk/filter/CFilterInvalid.h
-    gis/trk/filter/CFilterReset.h
-    gis/trk/filter/CFilterDelete.h
-    gis/trk/filter/CFilterMedian.h
-    gis/trk/filter/CFilterReplaceElevation.h
-    gis/trk/filter/CFilterOffsetElevation.h
-    gis/trk/filter/CFilterNewDate.h
-    gis/trk/filter/CFilterObscureDate.h
-    gis/trk/filter/CFilterSpeed.h
-    gis/rte/CGisItemRte.h
-    gis/rte/CScrOptRte.h
-    gis/rte/CCreateRouteFromWpt.h
-    gis/rte/CDetailsRte.h
-    gis/rte/router/IRouter.h
-    gis/rte/router/CRouterSetup.h
-    gis/rte/router/CRouterRoutino.h
-    gis/rte/router/CRouterMapQuest.h
-    gis/rte/router/CRouterRoutinoPathSetup.h    
-    gis/ovl/CGisItemOvlArea.h
-    gis/ovl/CScrOptOvlArea.h
-    gis/ovl/CDetailsOvlArea.h    
-    gis/gpx/CGpxProject.h
-    gis/search/CSearchGoogle.h
-    plot/IPlot.h
-    plot/CPlotAxis.h
-    plot/CPlotAxisTime.h
-    plot/CPlotData.h
-    plot/CPlotProfile.h
-    plot/ITrack.h
-    plot/CPlotTrack.h
-    plot/CPlot.h
-    qlgt/CQlb.h
-    qlgt/IItem.h
-    qlgt/CQlgtFolder.h
-    qlgt/CQlgtWpt.h
-    qlgt/CQlgtTrack.h
-    qlgt/CQlgtRoute.h
-    qlgt/CQlgtDiary.h
-    qlgt/IQlgtOverlay.h
-    qlgt/CQlgtDb.h
-    qlgt/CQmsDb.h
-    device/IDeviceWatcher.h    
-    device/IDevice.h
-    device/CDeviceGarmin.h
-    device/CDeviceTwoNav.h
-    tool/IToolShell.h
-    tool/CMapVrtBuilder.h
-    tool/CImportDatabase.h
-    tool/CRoutinoDatabaseBuilder.h
-    print/CPrintDialog.h
+        version.h
+        GeoMath.h
+        CMainWindow.h
+        CAbout.h
+        widgets/CTinySpinBox.h
+        widgets/CDoubleSpinBox.h
+        widgets/CFadingIcon.h
+        widgets/CHistoryListWidget.h
+        widgets/CTextEditWidget.h
+        widgets/CLineEdit.h
+        widgets/CPhotoAlbum.h
+        widgets/CColorLegend.h
+        widgets/CColorChooser.h
+        helpers/Platform.h
+        helpers/CFileExt.h
+        helpers/CAppOpts.h
+        helpers/CSettings.h
+        helpers/CInputDialog.h
+        helpers/CPositionDialog.h
+        helpers/CSelectCopyAction.h
+        helpers/CWptIconDialog.h
+        helpers/CSelectProjectDialog.h
+        helpers/CElevationDialog.h
+        helpers/CLinksDialog.h
+        helpers/CPhotoViewer.h
+        helpers/CProgressDialog.h
+        helpers/CCommandProcessor.h
+        helpers/CAppSetup.h
+        helpers/CDraw.h
+        helpers/CValue.h
+        helpers/CLimit.h
+        helpers/Signals.h
+        canvas/CCanvas.h
+        canvas/CCanvasSetup.h
+        canvas/IDrawContext.h
+        canvas/IDrawObject.h
+        dem/IDem.h
+        dem/IDemProp.h
+        dem/CDemDraw.h
+        dem/CDemVRT.h
+        dem/CDemList.h
+        dem/CDemItem.h
+        dem/CDemPathSetup.h
+        dem/CDemPropSetup.h
+        map/IMap.h
+        map/IMapProp.h
+        map/CMapDraw.h
+        map/CMapGEMF.h
+        map/CMapItem.h
+        map/CMapList.h
+        map/CMapRMAP.h
+        map/CMapJNX.h
+        map/CMapIMG.h
+        map/CMapMAP.h
+        map/CMapVRT.h
+        map/CMapWMTS.h
+        map/CMapTMS.h
+        map/CMapPathSetup.h
+        map/CMapPropSetup.h
+        map/garmin/Garmin.h
+        map/garmin/IGarminStrTbl.h
+        map/garmin/CGarminStrTbl6.h
+        map/garmin/CGarminStrTbl8.h
+        map/garmin/CGarminStrTblUtf8.h
+        map/garmin/CGarminPoint.h
+        map/garmin/CGarminPolygon.h
+        map/garmin/CGarminTyp.h
+        map/cache/CDiskCache.h
+        map/cache/IDiskCache.h
+        map/mapsforge/types.h
+        units/IUnit.h
+        units/CUnitImperial.h
+        units/CUnitMetric.h
+        units/CUnitNautic.h
+        units/CTimeZoneSetup.h
+        units/CUnitsSetup.h
+        units/CCoordFormatSetup.h
+        grid/CGrid.h
+        grid/CGridSetup.h
+        grid/CProjWizard.h
+        grid/mitab.h
+        mouse/IMouse.h
+        mouse/IScrOpt.h
+        mouse/CMouseDummy.h
+        mouse/CMouseNormal.h
+        mouse/CMouseMoveWpt.h
+        mouse/CMouseEditTrk.h
+        mouse/CMouseEditRte.h
+        mouse/CMouseEditArea.h
+        mouse/CMouseRangeTrk.h
+        mouse/CMouseWptBubble.h
+        mouse/CMousePrint.h
+        mouse/CScrOptUnclutter.h
+        mouse/CScrOptRangeTrk.h
+        mouse/line/CScrOptEditLine.h
+        mouse/line/CScrOptRangeLine.h
+        mouse/line/IMouseEditLine.h
+        mouse/line/ILineOp.h
+        mouse/line/CLineOpMovePoint.h
+        mouse/line/CLineOpAddPoint.h
+        mouse/line/CLineOpDeletePoint.h
+        mouse/line/CLineOpSelectRange.h
+        gis/WptIcons.h
+        gis/CGisDraw.h
+        gis/IGisItem.h
+        gis/IGisLine.h
+        gis/prj/IGisProject.h
+        gis/prj/CDetailsPrj.h
+        gis/CGisWidget.h
+        gis/CGisListDB.h
+        gis/CGisListWks.h
+        gis/CSelDevices.h
+        gis/qms/CQmsProject.h
+        gis/tnv/CTwoNavProject.h
+        gis/db/IDB.h
+        gis/db/IDBSqlite.h
+        gis/db/IDBMysql.h
+        gis/db/macros.h
+        gis/db/CSetupDatabase.h
+        gis/db/CSetupWorkspace.h
+        gis/db/CSetupFolder.h
+        gis/db/IDBFolder.h
+        gis/db/IDBFolderSql.h
+        gis/db/CDBFolderLostFound.h
+        gis/db/CDBFolderSqlite.h
+        gis/db/CDBFolderMysql.h
+        gis/db/CDBFolderGroup.h
+        gis/db/CDBFolderOther.h
+        gis/db/CDBFolderProject.h
+        gis/db/CDBItem.h
+        gis/db/CDBProject.h
+        gis/db/CLostFoundProject.h
+        gis/db/CSelectSaveAction.h
+        gis/db/CSelectDBFolder.h
+        gis/wpt/CGisItemWpt.h
+        gis/wpt/CScrOptWpt.h
+        gis/wpt/CDetailsWpt.h
+        gis/wpt/CDetailsGeoCache.h
+        gis/wpt/CProjWpt.h
+        gis/wpt/CSetupNewWpt.h
+        gis/trk/CGisItemTrk.h
+        gis/trk/CScrOptTrk.h
+        gis/trk/CDetailsTrk.h
+        gis/trk/CCombineTrk.h
+        gis/trk/CCutTrk.h
+        gis/trk/CSelectActivity.h
+        gis/trk/CSelectActivityColor.h
+        gis/trk/CActivityTrk.h
+        gis/trk/CPropertyTrk.h
+        gis/trk/CKnownExtension.h
+        gis/trk/filter/CFilterDouglasPeuker.h
+        gis/trk/filter/CFilterInvalid.h
+        gis/trk/filter/CFilterReset.h
+        gis/trk/filter/CFilterDelete.h
+        gis/trk/filter/CFilterDeleteExtension.h
+        gis/trk/filter/CFilterMedian.h
+        gis/trk/filter/CFilterReplaceElevation.h
+        gis/trk/filter/CFilterOffsetElevation.h
+        gis/trk/filter/CFilterNewDate.h
+        gis/trk/filter/CFilterObscureDate.h
+        gis/trk/filter/CFilterSpeed.h
+        gis/trk/filter/CFilterSplitSegment.h
+        gis/rte/CGisItemRte.h
+        gis/rte/CScrOptRte.h
+        gis/rte/CCreateRouteFromWpt.h
+        gis/rte/CDetailsRte.h
+        gis/rte/router/IRouter.h
+        gis/rte/router/CRouterSetup.h
+        gis/rte/router/CRouterRoutino.h
+        gis/rte/router/CRouterMapQuest.h
+        gis/rte/router/CRouterRoutinoPathSetup.h
+        gis/ovl/CGisItemOvlArea.h
+        gis/ovl/CScrOptOvlArea.h
+        gis/ovl/CDetailsOvlArea.h
+        gis/gpx/CGpxProject.h
+        gis/slf/CSlfProject.h
+        gis/slf/CSlfReader.h
+        gis/search/CSearchGoogle.h
+        gis/fit/CFitProject.h
+        gis/fit/CFitStream.h
+        gis/fit/defs/fit_const.h
+        gis/fit/decoder/CFitMessage.h
+        gis/fit/decoder/CFitField.h
+        gis/fit/decoder/CFitDefinitionMessage.h
+        gis/fit/decoder/CFitFieldDefinition.h
+        gis/fit/defs/CFitProfile.h
+        gis/fit/defs/CFitBaseType.h
+        gis/fit/defs/fit_enums.h
+        gis/fit/defs/fit_fields.h
+        gis/fit/decoder/IFitDecoderState.h
+        gis/fit/decoder/CFitHeaderState.h
+        gis/fit/decoder/CFitRecordHeaderState.h
+        gis/fit/decoder/CFitFieldDataState.h
+        gis/fit/decoder/CFitFieldDefinitionState.h
+        gis/fit/decoder/CFitRecordContentState.h
+        gis/fit/decoder/CFitCrcState.h
+        gis/fit/decoder/CFitDecoder.h
+        gis/fit/defs/CFitProfileLookup.h
+        gis/fit/defs/CFitFieldProfile.h
+        gis/fit/decoder/CFitByteDataTransformer.h
+        gis/fit/decoder/CFitFieldBuilder.h
+        plot/IPlot.h
+        plot/CPlotAxis.h
+        plot/CPlotAxisTime.h
+        plot/CPlotData.h
+        plot/CPlotProfile.h
+        plot/ITrack.h
+        plot/CPlotTrack.h
+        plot/CPlot.h
+        qlgt/CQlb.h
+        qlgt/IItem.h
+        qlgt/CQlgtFolder.h
+        qlgt/CQlgtWpt.h
+        qlgt/CQlgtTrack.h
+        qlgt/CQlgtRoute.h
+        qlgt/CQlgtDiary.h
+        qlgt/IQlgtOverlay.h
+        qlgt/CQlgtDb.h
+        qlgt/CQmsDb.h
+        device/IDeviceWatcher.h
+        device/IDevice.h
+        device/CDeviceGarmin.h
+        device/CDeviceGarminArchive.h
+        device/CDeviceTwoNav.h
+        tool/IToolShell.h
+        tool/CMapVrtBuilder.h
+        tool/CImportDatabase.h
+        tool/CRoutinoDatabaseBuilder.h
+        print/CPrintDialog.h
 )
 
 if(UNIX AND NOT APPLE)
@@ -470,6 +560,7 @@ set( UIS
     IAbout.ui
     widgets/ITextEditWidget.ui
     widgets/IPhotoAlbum.ui
+    widgets/IColorChooser.ui
     helpers/IInputDialog.ui
     helpers/IPositionDialog.ui
     helpers/IWptIconDialog.ui    
@@ -508,16 +599,19 @@ set( UIS
     gis/trk/ICombineTrk.ui
     gis/trk/ICutTrk.ui
     gis/trk/ISelectActivity.ui
+    gis/trk/ISelectActivityColor.ui
     gis/trk/filter/IFilterDouglasPeuker.ui
     gis/trk/filter/IFilterInvalid.ui
     gis/trk/filter/IFilterReset.ui
     gis/trk/filter/IFilterDelete.ui
+    gis/trk/filter/IFilterDeleteExtension.ui
     gis/trk/filter/IFilterMedian.ui
     gis/trk/filter/IFilterReplaceElevation.ui
     gis/trk/filter/IFilterOffsetElevation.ui
     gis/trk/filter/IFilterNewDate.ui
     gis/trk/filter/IFilterObscureDate.ui
     gis/trk/filter/IFilterSpeed.ui
+    gis/trk/filter/IFilterSplitSegment.ui
     gis/rte/IScrOptRte.ui
     gis/rte/ICreateRouteFromWpt.ui
     gis/rte/IDetailsRte.ui
@@ -545,8 +639,12 @@ set( RCS
 qt5_wrap_ui(UI_HDRS ${UIS})
 qt5_add_resources(RC_SRCS ${RCS})
 
+# try to figure out which compiler flags are supported (and add them)
+cxx_add_flag_if_supported(-Wsuggest-override)
+cxx_add_flag_if_supported(-Woverloaded-virtual)
+
 if(UNIX)
-    add_definitions(-Wall -Wno-switch -Wno-strict-aliasing)
+    add_definitions(-Wall -Wpedantic -Wno-switch -Wno-strict-aliasing)
 endif(UNIX)
 
 if(WIN32)
@@ -555,25 +653,41 @@ endif(WIN32)
 
 add_definitions(-DROUTINO_XML_PATH=${ROUTINO_XML_PATH})
 
-file(GLOB TRANSLATIONS_FILES locale/*.ts)
+translate_ts(${APPLICATION_NAME}_QM_FILES
+    UPDATE_TRANSLATIONS ${UPDATE_TRANSLATIONS}
+    UPDATE_OPTIONS "-I${CMAKE_CURRENT_SOURCE_DIR}"
+    SOURCES ${SRCS} ${HDRS} ${UIS}
+    TEMPLATE ${APPLICATION_NAME}
+    TRANSLATION_DIR "locale"
+)
 
+if (UNIX AND NOT WIN32 AND NOT APPLE)
+    translate_desktop(${APPLICATION_NAME}_DESKTOP_FILES
+        TRANSLATION_DIR "locale"
+        SOURCES "${PROJECT_SOURCE_DIR}/qmapshack.desktop.in"
+    )
+endif()
 
-qt5_add_translation(
-    ${APPLICATION_NAME}_QM_FILES
-    ${TRANSLATIONS_FILES}
+set(LIBINP
+        ${SRCS}
+        ${HDRS}
+        ${UI_HDRS}
+        ${RC_SRCS}
+        ${${APPLICATION_NAME}_QM_FILES}
+        ${${APPLICATION_NAME}_DESKTOP_FILES}
 )
 
-
-set(ALLINP
-    ${SRCS}
-    ${HDRS}
-    ${UI_HDRS}
+set(MAININP
+    main.cpp
     ${RC_SRCS}
-    ${${APPLICATION_NAME}_QM_FILES}
 )
 
 include_directories(
     ${CMAKE_BINARY_DIR}
+)
+
+include_directories(
+    SYSTEM # this prevents warnings from non-QMS headers
     ${GDAL_INCLUDE_DIRS}
     ${PROJ_INCLUDE_DIRS}
     ${ROUTINO_INCLUDE_DIRS}
@@ -585,11 +699,8 @@ if(APPLE)
      INCLUDE_DIRECTORIES(/System/Library/Frameworks/DiskArbitration.framework)
 endif(APPLE)
 
-
-
-add_executable(${APPLICATION_NAME} WIN32 ${ALLINP})
-
-
+add_library(QMS ${LIBINP})
+add_executable(${APPLICATION_NAME} WIN32 ${MAININP})
 
 if(UNIX)
     set(DBUS_LIB Qt5::DBus)
@@ -597,6 +708,19 @@ else(UNIX)
     set(DBUS_LIB)
 endif(UNIX)
 
+target_link_libraries(QMS
+    Qt5::Widgets
+    Qt5::Xml
+    Qt5::Script
+    Qt5::Sql
+    Qt5::WebKitWidgets
+    Qt5::PrintSupport
+    ${DBUS_LIB}
+    ${GDAL_LIBRARIES}
+    ${PROJ_LIBRARIES}
+    ${ROUTINO_LIBRARIES}
+)
+
 target_link_libraries(${APPLICATION_NAME}
     Qt5::Widgets
     Qt5::Xml
@@ -604,12 +728,48 @@ target_link_libraries(${APPLICATION_NAME}
     Qt5::Sql
     Qt5::WebKitWidgets
     Qt5::PrintSupport
+    QMS
     ${DBUS_LIB}
     ${GDAL_LIBRARIES}
     ${PROJ_LIBRARIES}
     ${ROUTINO_LIBRARIES}
 )
 
+if(UNIX AND NOT APPLE)
+    add_executable(qttest test/main.cpp test/test_QMapShack.h test/CGpxProject.cpp test/CSlfReader.cpp ${RC_SRCS})
+
+    # copy the input files required by the unittests to ./bin/input
+    file(COPY test/input DESTINATION ../bin)
+
+    target_link_libraries(qttest
+        Qt5::Widgets
+        Qt5::Xml
+        Qt5::Script
+        Qt5::Sql
+        Qt5::WebKitWidgets
+        Qt5::PrintSupport
+        Qt5::Test
+        QMS
+        ${DBUS_LIB}
+        ${GDAL_LIBRARIES}
+        ${PROJ_LIBRARIES}
+        ${ROUTINO_LIBRARIES}
+    )
+
+    add_custom_command(
+        OUTPUT tests_run.log
+        COMMAND qttest
+        DEPENDS qttest
+        COMMENT "Executing the Unittests"
+        VERBATIM
+    )
+
+    add_custom_target(
+        run_tests
+        DEPENDS tests_run.log
+    )
+endif(UNIX AND NOT APPLE)
+
 if(APPLE)
      target_link_libraries(${APPLICATION_NAME}
      ${Foundation_LIBRARY}
@@ -630,4 +790,11 @@ install(
         ${${APPLICATION_NAME}_QM_FILES}
     DESTINATION
         ${DATA_INSTALL_PREFIX}/${APPLICATION_NAME}/translations)
+
+install(
+    FILES
+        ${${APPLICATION_NAME}_DESKTOP_FILES}
+    DESTINATION
+        ${XDG_APPS_DIR}
+)
 endif (UNIX AND NOT WIN32 AND NOT APPLE)
diff --git a/src/GeoMath.cpp b/src/GeoMath.cpp
index 14d36e5..7459067 100644
--- a/src/GeoMath.cpp
+++ b/src/GeoMath.cpp
@@ -78,14 +78,14 @@ void GPS_Math_DegMin_To_Deg(bool sign, const qint32 d, const qreal m, qreal& deg
 // from http://www.movable-type.co.uk/scripts/LatLongVincenty.html
 qreal GPS_Math_Distance(const qreal u1, const qreal v1, const qreal u2, const qreal v2, qreal& a1, qreal& a2)
 {
-    qreal cosSigma = 0.0;
-    qreal sigma = 0.0;
-    qreal sinAlpha = 0.0;
+    qreal cosSigma   = 0.0;
+    qreal sigma      = 0.0;
+    qreal sinAlpha   = 0.0;
     qreal cosSqAlpha = 0.0;
     qreal cos2SigmaM = 0.0;
-    qreal sinSigma = 0.0;
-    qreal sinLambda = 0.0;
-    qreal cosLambda = 0.0;
+    qreal sinSigma   = 0.0;
+    qreal sinLambda  = 0.0;
+    qreal cosLambda  = 0.0;
 
     qreal a = 6378137.0, b = 6356752.3142,  f = 1.0/298.257223563;  // WGS-84 ellipsiod
     qreal L = u2 - u1;
@@ -140,14 +140,14 @@ qreal GPS_Math_Distance(const qreal u1, const qreal v1, const qreal u2, const qr
 
 qreal GPS_Math_Distance(const qreal u1, const qreal v1, const qreal u2, const qreal v2)
 {
-    qreal cosSigma = 0.0;
-    qreal sigma = 0.0;
-    qreal sinAlpha = 0.0;
+    qreal cosSigma   = 0.0;
+    qreal sigma      = 0.0;
+    qreal sinAlpha   = 0.0;
     qreal cosSqAlpha = 0.0;
     qreal cos2SigmaM = 0.0;
-    qreal sinSigma = 0.0;
-    qreal sinLambda = 0.0;
-    qreal cosLambda = 0.0;
+    qreal sinSigma   = 0.0;
+    qreal sinLambda  = 0.0;
+    qreal cosLambda  = 0.0;
 
     qreal a = 6378137.0, b = 6356752.3142,  f = 1.0/298.257223563;  // WGS-84 ellipsiod
     qreal L = u2 - u1;
diff --git a/src/IAbout.ui b/src/IAbout.ui
index a77799a..ac42884 100644
--- a/src/IAbout.ui
+++ b/src/IAbout.ui
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>550</width>
-    <height>596</height>
+    <width>700</width>
+    <height>600</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -160,80 +160,125 @@
      </item>
      <item>
       <layout class="QGridLayout" name="gridLayout">
-       <item row="4" column="1">
-        <widget class="QLabel" name="label_15">
+       <item row="2" column="0">
+        <widget class="QLabel" name="label_12">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
          <property name="text">
-          <string>Rainer Unseld </string>
+          <string>Czech:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
          </property>
         </widget>
        </item>
-       <item row="4" column="0">
-        <widget class="QLabel" name="label_14">
+       <item row="2" column="1">
+        <widget class="QLabel" name="label_13">
          <property name="text">
-          <string>French</string>
+          <string>Pavel Fric</string>
          </property>
         </widget>
        </item>
-       <item row="2" column="0">
-        <widget class="QLabel" name="label_12">
+       <item row="1" column="0">
+        <widget class="QLabel" name="label_9">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
          <property name="text">
-          <string>Czech</string>
+          <string>German:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
          </property>
         </widget>
        </item>
-       <item row="2" column="1">
-        <widget class="QLabel" name="label_13">
+       <item row="1" column="1">
+        <widget class="QLabel" name="label_10">
          <property name="text">
-          <string>Pavel Fric</string>
+          <string>Josef Latt</string>
          </property>
         </widget>
        </item>
-       <item row="1" column="0">
-        <widget class="QLabel" name="label_9">
+       <item row="3" column="0">
+        <widget class="QLabel" name="label_27">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
          <property name="text">
-          <string>German</string>
+          <string>Dutch:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
          </property>
         </widget>
        </item>
-       <item row="0" column="0">
-        <widget class="QLabel" name="label_8">
+       <item row="3" column="1">
+        <widget class="QLabel" name="label_28">
          <property name="text">
-          <string><b>Translation:</b></string>
+          <string>Harrie Klomp</string>
          </property>
         </widget>
        </item>
-       <item row="1" column="1">
-        <widget class="QLabel" name="label_10">
+       <item row="1" column="2">
+        <widget class="QLabel" name="label_14">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
          <property name="text">
-          <string>Josef Latt</string>
+          <string>French:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
          </property>
         </widget>
        </item>
-       <item row="5" column="0">
-        <widget class="QLabel" name="label_16">
+       <item row="1" column="3">
+        <widget class="QLabel" name="label_15">
          <property name="text">
-          <string>Spanish</string>
+          <string>Rainer Unseld </string>
          </property>
         </widget>
        </item>
-       <item row="5" column="1">
+       <item row="2" column="3">
         <widget class="QLabel" name="label_17">
          <property name="text">
           <string>Jose Luis Domingo Lopez</string>
          </property>
         </widget>
        </item>
-       <item row="3" column="0">
-        <widget class="QLabel" name="label_27">
+       <item row="2" column="2">
+        <widget class="QLabel" name="label_16">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
          <property name="text">
-          <string>Dutch</string>
+          <string>Spanish:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
          </property>
         </widget>
        </item>
-       <item row="3" column="1">
-        <widget class="QLabel" name="label_28">
+       <item row="0" column="0" colspan="2">
+        <widget class="QLabel" name="label_8">
          <property name="text">
-          <string>Harrie Klomp</string>
+          <string><b>Translation:</b></string>
          </property>
         </widget>
        </item>
@@ -247,49 +292,54 @@
       </widget>
      </item>
      <item>
-      <layout class="QGridLayout" name="gridLayout_2">
-       <item row="2" column="1">
-        <widget class="QLabel" name="label_22">
-         <property name="text">
-          <string>Ivo Kronenberg</string>
+      <layout class="QGridLayout" name="gridLayout_4">
+       <item row="1" column="0">
+        <widget class="QLabel" name="label_19">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
          </property>
-        </widget>
-       </item>
-       <item row="1" column="1">
-        <widget class="QLabel" name="label_20">
          <property name="text">
-          <string>Helmut Schmidt</string>
+          <string>Win64:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
          </property>
         </widget>
        </item>
-       <item row="1" column="0">
-        <widget class="QLabel" name="label_19">
+       <item row="1" column="2">
+        <widget class="QLabel" name="label_21">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
          <property name="text">
-          <string>Win64</string>
+          <string>OS X:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
          </property>
         </widget>
        </item>
-       <item row="2" column="0">
-        <widget class="QLabel" name="label_21">
+       <item row="1" column="1">
+        <widget class="QLabel" name="label_20">
          <property name="text">
-          <string>OS X</string>
+          <string>Helmut Schmidt</string>
          </property>
         </widget>
        </item>
-       <item row="3" column="0" colspan="2">
-        <widget class="QLabel" name="label_23">
+       <item row="1" column="3">
+        <widget class="QLabel" name="label_22">
          <property name="text">
-          <string>...and thanks to all Linux binary maintainers for doing a great job. Special thanks to Dan Horák and Bas Couwenberg for showing presence on the mailing list to discuss distribution related topics.</string>
-         </property>
-         <property name="alignment">
-          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
-         </property>
-         <property name="wordWrap">
-          <bool>true</bool>
+          <string>Ivo Kronenberg</string>
          </property>
         </widget>
        </item>
-       <item row="0" column="0">
+       <item row="0" column="0" colspan="2">
         <widget class="QLabel" name="label_24">
          <property name="text">
           <string><b>Binaries:</b></string>
@@ -299,6 +349,19 @@
       </layout>
      </item>
      <item>
+      <widget class="QLabel" name="label_23">
+       <property name="text">
+        <string>...and thanks to all Linux binary maintainers for doing a great job. Special thanks to Dan Horák and Bas Couwenberg for showing presence on the mailing list to discuss distribution related topics.</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+       </property>
+       <property name="wordWrap">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
       <widget class="Line" name="line_4">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
@@ -315,7 +378,11 @@
      <item>
       <widget class="QLabel" name="label_26">
        <property name="text">
-        <string>Christian Eichler (qms at christian-eichler.de)</string>
+        <string>Christian Eichler (qms at christian-eichler.de)
+Ivo Kronenberg</string>
+       </property>
+       <property name="wordWrap">
+        <bool>true</bool>
        </property>
       </widget>
      </item>
diff --git a/src/IMainWindow.ui b/src/IMainWindow.ui
index 0c96cce..da59245 100644
--- a/src/IMainWindow.ui
+++ b/src/IMainWindow.ui
@@ -55,7 +55,7 @@
      <x>0</x>
      <y>0</y>
      <width>800</width>
-     <height>21</height>
+     <height>20</height>
     </rect>
    </property>
    <widget class="QMenu" name="menuFile">
@@ -118,6 +118,7 @@
     <addaction name="actionCloseAllProjects"/>
     <addaction name="separator"/>
     <addaction name="actionSetupWorkspace"/>
+    <addaction name="actionSetupWaypointIcons"/>
    </widget>
    <widget class="QMenu" name="menuExtra">
     <property name="title">
@@ -288,6 +289,9 @@
    <property name="shortcut">
     <string>Ctrl+T</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionShowScale">
    <property name="checkable">
@@ -300,6 +304,9 @@
    <property name="text">
     <string>Show Scale</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionSetupMapFont">
    <property name="icon">
@@ -309,6 +316,9 @@
    <property name="text">
     <string>Setup Map Font</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionShowGrid">
    <property name="checkable">
@@ -324,6 +334,9 @@
    <property name="shortcut">
     <string>Ctrl+G</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionSetupGrid">
    <property name="icon">
@@ -336,6 +349,9 @@
    <property name="shortcut">
     <string>Ctrl+Alt+G</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionFlipMouseWheel">
    <property name="checkable">
@@ -348,6 +364,9 @@
    <property name="text">
     <string>Flip Mouse Wheel</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionSetupMapPaths">
    <property name="icon">
@@ -360,6 +379,9 @@
    <property name="toolTip">
     <string>Setup Map Paths</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionPOIText">
    <property name="checkable">
@@ -372,6 +394,9 @@
    <property name="text">
     <string>POI Text</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionNightDay">
    <property name="checkable">
@@ -384,6 +409,9 @@
    <property name="text">
     <string>Night / Day</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionMapToolTip">
    <property name="checkable">
@@ -399,6 +427,9 @@
    <property name="shortcut">
     <string>Ctrl+I</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionSetupDEMPaths">
    <property name="icon">
@@ -408,6 +439,9 @@
    <property name="text">
     <string>Setup DEM Paths</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionAbout">
    <property name="icon">
@@ -417,6 +451,9 @@
    <property name="text">
     <string>About</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::AboutRole</enum>
+   </property>
   </action>
   <action name="actionHelp">
    <property name="icon">
@@ -426,6 +463,12 @@
    <property name="text">
     <string>Help</string>
    </property>
+   <property name="shortcut">
+    <string>F1</string>
+   </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionSetupMapView">
    <property name="icon">
@@ -438,6 +481,9 @@
    <property name="toolTip">
     <string>Setup Map View</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionLoadGISData">
    <property name="icon">
@@ -453,6 +499,9 @@
    <property name="shortcut">
     <string>Ctrl+L</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionSaveGISData">
    <property name="icon">
@@ -468,6 +517,9 @@
    <property name="shortcut">
     <string>Ctrl+S</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionSetupTimeZone">
    <property name="icon">
@@ -477,6 +529,9 @@
    <property name="text">
     <string>Setup Time Zone</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionAddEmptyProject">
    <property name="icon">
@@ -486,6 +541,9 @@
    <property name="text">
     <string>Add empty project</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionSearchGoogle">
    <property name="checkable">
@@ -498,6 +556,9 @@
    <property name="text">
     <string>Search Google</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionCloseAllProjects">
    <property name="icon">
@@ -510,6 +571,9 @@
    <property name="shortcut">
     <string>F8</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionSetupUnits">
    <property name="icon">
@@ -519,6 +583,9 @@
    <property name="text">
     <string>Setup Units</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionSetupWorkspace">
    <property name="icon">
@@ -531,6 +598,9 @@
    <property name="toolTip">
     <string>Setup save on exit.</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionImportDatabase">
    <property name="icon">
@@ -543,6 +613,9 @@
    <property name="toolTip">
     <string>Import QLandkarte GT database</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionVrtBuilder">
    <property name="icon">
@@ -555,6 +628,9 @@
    <property name="toolTip">
     <string>GUI front end to gdalbuildvrt</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionStoreView">
    <property name="icon">
@@ -567,6 +643,9 @@
    <property name="toolTip">
     <string>Write current active map and DEM list including the properties to a file</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionLoadView">
    <property name="icon">
@@ -579,6 +658,9 @@
    <property name="toolTip">
     <string>Restore view with active map and DEM list including the properties from a file</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionProfileIsWindow">
    <property name="checkable">
@@ -594,6 +676,9 @@
    <property name="shortcut">
     <string>Ctrl+E</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionClose">
    <property name="icon">
@@ -606,6 +691,9 @@
    <property name="shortcut">
     <string>Ctrl+Q</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::QuitRole</enum>
+   </property>
   </action>
   <action name="actionCloneMapView">
    <property name="icon">
@@ -618,6 +706,9 @@
    <property name="shortcut">
     <string>Ctrl+Shift+T</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionCreateRoutinoDatabase">
    <property name="icon">
@@ -627,6 +718,9 @@
    <property name="text">
     <string>Create Routino Database</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionPrintMap">
    <property name="icon">
@@ -642,6 +736,9 @@
    <property name="shortcut">
     <string>Ctrl+P</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
   </action>
   <action name="actionSetupCoordFormat">
    <property name="icon">
@@ -654,6 +751,21 @@
    <property name="toolTip">
     <string>Change the format coordinates are displayed</string>
    </property>
+   <property name="menuRole">
+    <enum>QAction::NoRole</enum>
+   </property>
+  </action>
+  <action name="actionSetupWaypointIcons">
+   <property name="icon">
+    <iconset resource="resources.qrc">
+     <normaloff>:/icons/32x32/SetupWptSym.png</normaloff>:/icons/32x32/SetupWptSym.png</iconset>
+   </property>
+   <property name="text">
+    <string>Setup Waypoint Icons</string>
+   </property>
+   <property name="toolTip">
+    <string>Setup path to custom icons</string>
+   </property>
   </action>
  </widget>
  <customwidgets>
diff --git a/src/canvas/CCanvas.cpp b/src/canvas/CCanvas.cpp
index 46c81b9..34516c3 100644
--- a/src/canvas/CCanvas.cpp
+++ b/src/canvas/CCanvas.cpp
@@ -57,7 +57,7 @@ CCanvas::CCanvas(QWidget *parent, const QString &name)
         while(1)
         {
             QString name = tr("View %1").arg(count);
-            if(CMainWindow::self().findChild<CCanvas*>(name) == 0)
+            if(nullptr == CMainWindow::self().findChild<CCanvas*>(name))
             {
                 setObjectName(name);
                 break;
@@ -78,13 +78,13 @@ CCanvas::CCanvas(QWidget *parent, const QString &name)
     gis     = new CGisDraw(this);
     mouse   = new CMouseNormal(gis, this);
 
-    connect(map, SIGNAL(sigCanvasUpdate(CCanvas::redraw_e)), this, SLOT(slotTriggerCompleteUpdate(CCanvas::redraw_e)));
-    connect(dem, SIGNAL(sigCanvasUpdate(CCanvas::redraw_e)), this, SLOT(slotTriggerCompleteUpdate(CCanvas::redraw_e)));
-    connect(gis, SIGNAL(sigCanvasUpdate(CCanvas::redraw_e)), this, SLOT(slotTriggerCompleteUpdate(CCanvas::redraw_e)));
+    connect(map, &CMapDraw::sigCanvasUpdate, this, &CCanvas::slotTriggerCompleteUpdate);
+    connect(dem, &CDemDraw::sigCanvasUpdate, this, &CCanvas::slotTriggerCompleteUpdate);
+    connect(gis, &CGisDraw::sigCanvasUpdate, this, &CCanvas::slotTriggerCompleteUpdate);
 
     timerToolTip = new QTimer(this);
     timerToolTip->setSingleShot(true);
-    connect(timerToolTip, SIGNAL(timeout()), this, SLOT(slotToolTip()));
+    connect(timerToolTip, &QTimer::timeout, this, &CCanvas::slotToolTip);
 
     loadIndicator1 = new QMovie(this);
     loadIndicator1->setFileName("://animation/loader.gif");
@@ -106,17 +106,17 @@ CCanvas::CCanvas(QWidget *parent, const QString &name)
     labelStatusMessages->setAlignment(Qt::AlignJustify);
     labelStatusMessages->hide();
 
-    connect(map, SIGNAL(sigStartThread()), mapLoadIndicator, SLOT(show()));
-    connect(map, SIGNAL(sigStopThread()), mapLoadIndicator, SLOT(hide()));
+    connect(map, &CMapDraw::sigStartThread, mapLoadIndicator, &QLabel::show);
+    connect(map, &CMapDraw::sigStopThread,  mapLoadIndicator, &QLabel::hide);
 
-    connect(dem, SIGNAL(sigStartThread()), demLoadIndicator, SLOT(show()));
-    connect(dem, SIGNAL(sigStopThread()), demLoadIndicator, SLOT(hide()));
+    connect(dem, &CDemDraw::sigStartThread, demLoadIndicator, &QLabel::show);
+    connect(dem, &CDemDraw::sigStopThread,  demLoadIndicator, &QLabel::hide);
 
     timerTrackOnFocus = new QTimer(this);
     timerTrackOnFocus->setSingleShot(false);
     timerTrackOnFocus->start(1000);
 
-    connect(timerTrackOnFocus, SIGNAL(timeout()), this, SLOT(slotCheckTrackOnFocus()));
+    connect(timerTrackOnFocus, &QTimer::timeout, this, &CCanvas::slotCheckTrackOnFocus);
 }
 
 CCanvas::~CCanvas()
@@ -392,9 +392,16 @@ void CCanvas::paintEvent(QPaintEvent * e)
 
 void CCanvas::mousePressEvent(QMouseEvent * e)
 {
+    if(!mousePressMutex.tryLock())
+    {
+        return;
+    }
+
     mouse->mousePressEvent(e);
     QWidget::mousePressEvent(e);
     e->accept();
+
+    mousePressMutex.unlock();
 }
 
 void CCanvas::mouseMoveEvent(QMouseEvent * e)
@@ -498,7 +505,7 @@ void CCanvas::keyPressEvent(QKeyEvent * e)
     case Qt::Key_Escape:
     {
         IMouseEditLine *lineMouse = dynamic_cast<IMouseEditLine*>(mouse);
-        if(lineMouse != 0)
+        if(nullptr != lineMouse)
         {
             lineMouse->abortStep();
         }
@@ -636,13 +643,13 @@ void CCanvas::slotCheckTrackOnFocus()
 
         // get access to next track object
         CGisItemTrk * trk2 = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
-        if(trk2 == 0)
+        if(nullptr == trk2)
         {
             return;
         }
 
         // create new profile plot, the plot will register itself at the track
-        plotTrackProfile = new CPlotProfile(trk2, CMainWindow::self().profileIsWindow() ? IPlot::eModeWindow : IPlot::eModeIcon, this);
+        plotTrackProfile = new CPlotProfile(trk2, trk2->limitsGraph1, CMainWindow::self().profileIsWindow() ? IPlot::eModeWindow : IPlot::eModeIcon, this);
         setSizeTrackProfile();
         if(isVisible())
         {
@@ -772,7 +779,7 @@ bool CCanvas::findPolylineCloseBy(const QPointF& pt1, const QPointF& pt2, qint32
 
 void CCanvas::saveSizeTrackProfile()
 {
-    if(plotTrackProfile == 0)
+    if(plotTrackProfile.isNull())
     {
         return;
     }
@@ -794,7 +801,7 @@ void CCanvas::saveSizeTrackProfile()
 
 void CCanvas::setSizeTrackProfile()
 {
-    if(plotTrackProfile == 0)
+    if(plotTrackProfile.isNull())
     {
         return;
     }
diff --git a/src/canvas/CCanvas.h b/src/canvas/CCanvas.h
index 365e48f..25d0560 100644
--- a/src/canvas/CCanvas.h
+++ b/src/canvas/CCanvas.h
@@ -152,16 +152,16 @@ public slots:
     void slotTriggerCompleteUpdate(CCanvas::redraw_e flags);
 
 protected:
-    void resizeEvent(QResizeEvent * e);
-    void paintEvent(QPaintEvent * e);
-    void mousePressEvent(QMouseEvent * e);
-    void mouseMoveEvent(QMouseEvent * e);
-    void mouseReleaseEvent(QMouseEvent *e);
-    void mouseDoubleClickEvent(QMouseEvent * e);
-    void wheelEvent(QWheelEvent * e);
-    void enterEvent(QEvent * e);
-    void leaveEvent(QEvent * e);
-    void keyPressEvent(QKeyEvent * e);
+    void resizeEvent(QResizeEvent *e) override;
+    void paintEvent(QPaintEvent  *e) override;
+    void mousePressEvent(QMouseEvent  *e) override;
+    void mouseMoveEvent(QMouseEvent  *e) override;
+    void mouseReleaseEvent(QMouseEvent  *e) override;
+    void mouseDoubleClickEvent(QMouseEvent  *e) override;
+    void wheelEvent(QWheelEvent  *e) override;
+    void enterEvent(QEvent       *e) override;
+    void leaveEvent(QEvent       *e) override;
+    void keyPressEvent(QKeyEvent    *e) override;
 
 
 private slots:
@@ -216,6 +216,8 @@ private:
 
     QLabel * labelStatusMessages;
     QMap<QString, QString> statusMessages;
+
+    QMutex mousePressMutex;
 };
 
 #endif //CCANVAS_H
diff --git a/src/canvas/CCanvasSetup.cpp b/src/canvas/CCanvasSetup.cpp
index d96cfda..fd99d9e 100644
--- a/src/canvas/CCanvasSetup.cpp
+++ b/src/canvas/CCanvasSetup.cpp
@@ -40,7 +40,7 @@ CCanvasSetup::CCanvasSetup(CCanvas * canvas)
         break;
     }
 
-    connect(toolWizard, SIGNAL(clicked()), this, SLOT(slotProjWizard()));
+    connect(toolWizard, &QToolButton::clicked, this, &CCanvasSetup::slotProjWizard);
 }
 
 CCanvasSetup::~CCanvasSetup()
diff --git a/src/canvas/CCanvasSetup.h b/src/canvas/CCanvasSetup.h
index 23794b2..71093b6 100644
--- a/src/canvas/CCanvasSetup.h
+++ b/src/canvas/CCanvasSetup.h
@@ -32,7 +32,7 @@ public:
     virtual ~CCanvasSetup();
 
 public slots:
-    void accept();
+    void accept() override;
 
 
 protected slots:
diff --git a/src/canvas/IDrawContext.cpp b/src/canvas/IDrawContext.cpp
index 8d0d1d6..0e372e5 100644
--- a/src/canvas/IDrawContext.cpp
+++ b/src/canvas/IDrawContext.cpp
@@ -114,8 +114,8 @@ IDrawContext::IDrawContext(const QString& name, CCanvas::redraw_e maskRedraw, CC
     zoom(5);
 
     resize(canvas->size());
-    connect(this, SIGNAL(finished()), canvas, SLOT(update()));
-    connect(this, SIGNAL(finished()), SIGNAL(sigStopThread()));
+    connect(this, &IDrawContext::finished, canvas, static_cast<void (CCanvas::*)()>(&CCanvas::update));
+    connect(this, &IDrawContext::finished, this,   &IDrawContext::sigStopThread);
 }
 
 IDrawContext::~IDrawContext()
@@ -172,19 +172,17 @@ void IDrawContext::setProjection(const QString& proj)
     pjsrc = pj_init_plus(proj.toLatin1());
 }
 
-CCanvas::scales_type_e IDrawContext::getScalesType()
+CCanvas::scales_type_e IDrawContext::getScalesType() const
 {
     return scalesType;
 }
 
 void IDrawContext::setScales(const CCanvas::scales_type_e type)
 {
-    int i;
-
     switch (type)
     {
     case CCanvas::eScalesDefault:
-        for (i=0; i < N_DEFAULT_ZOOM_LEVELS; i++)
+        for (int i=0; i < N_DEFAULT_ZOOM_LEVELS; i++)
         {
             scales[i] = scalesDefault[i];
         }
@@ -193,7 +191,7 @@ void IDrawContext::setScales(const CCanvas::scales_type_e type)
         break;
 
     case CCanvas::eScalesSquare:
-        for (i=0; i < N_SQUARE_ZOOM_LEVELS; i++)
+        for (int i=0; i < N_SQUARE_ZOOM_LEVELS; i++)
         {
             scales[i] = scalesSquare[i];
         }
diff --git a/src/canvas/IDrawContext.h b/src/canvas/IDrawContext.h
index 3798622..0c41668 100644
--- a/src/canvas/IDrawContext.h
+++ b/src/canvas/IDrawContext.h
@@ -77,7 +77,7 @@ public:
     void zoom(bool in, CCanvas::redraw_e &needsRedraw);
     void zoom(int idx);
     void zoom(const QRectF& rect);
-    int  zoom()
+    int  zoom() const
     {
         return zoomIndex;
     }
@@ -125,7 +125,7 @@ public:
        @return A proj4 string.
      */
     QString getProjection();
-    CCanvas::scales_type_e getScalesType();
+    CCanvas::scales_type_e getScalesType() const;
 
     /**
        @brief Set the projection of the draw context
@@ -153,7 +153,7 @@ public slots:
     void emitSigCanvasUpdate();
 
 protected:
-    void run();
+    void run() override;
     /**
        @brief The draw method called from the thread.
 
diff --git a/src/canvas/IDrawObject.cpp b/src/canvas/IDrawObject.cpp
index ad360db..0e6ac96 100644
--- a/src/canvas/IDrawObject.cpp
+++ b/src/canvas/IDrawObject.cpp
@@ -32,22 +32,22 @@ IDrawObject::~IDrawObject()
 
 void IDrawObject::saveConfig(QSettings& cfg)
 {
-    cfg.setValue("opacity", getOpacity());
+    cfg.setValue("opacity",  getOpacity());
     cfg.setValue("minScale", getMinScale());
     cfg.setValue("maxScale", getMaxScale());
 }
 
 void IDrawObject::loadConfig(QSettings& cfg)
 {
-    slotSetOpacity(cfg.value("opacity", getOpacity()).toDouble());
-    setMinScale(cfg.value("minScale", getMinScale()).toDouble());
-    setMaxScale(cfg.value("maxScale", getMaxScale()).toDouble());
+    slotSetOpacity(cfg.value("opacity",  getOpacity() ).toDouble());
+    setMinScale(   cfg.value("minScale", getMinScale()).toDouble());
+    setMaxScale(   cfg.value("maxScale", getMaxScale()).toDouble());
 
     emit sigPropertiesChanged();
 }
 
 
-bool IDrawObject::isOutOfScale(const QPointF& scale)
+bool IDrawObject::isOutOfScale(const QPointF& scale) const
 {
     if((getMinScale() != NOFLOAT) && (scale.x() < getMinScale()))
     {
diff --git a/src/canvas/IDrawObject.h b/src/canvas/IDrawObject.h
index c8ceee1..bef2380 100644
--- a/src/canvas/IDrawObject.h
+++ b/src/canvas/IDrawObject.h
@@ -40,7 +40,7 @@ public:
        @brief Read opacity value
        @return Return the opacity in a range of 0..100(full opacity)
      */
-    int getOpacity()
+    int getOpacity() const
     {
         return opacity;
     }
@@ -49,7 +49,7 @@ public:
        @brief Read the minimum scale factor the object should be displayed
        @return A factor or NOFLOAT if no minimum has been set
      */
-    qreal getMinScale()
+    qreal getMinScale() const
     {
         return minScale;
     }
@@ -57,7 +57,7 @@ public:
        @brief Read the maximum scale factor the object should be displayed
        @return A factor or NOFLOAT if no maximum has been set
      */
-    qreal getMaxScale()
+    qreal getMaxScale() const
     {
         return maxScale;
     }
@@ -114,7 +114,7 @@ protected:
        @param scale A scale factor for x and y axis
        @return True if x scale is out of the min/max range
      */
-    bool isOutOfScale(const QPointF& scale);
+    bool isOutOfScale(const QPointF& scale) const;
 
     /**
        @brief Setup a map cache using cachePath, cacheSizeMB and cacheExpiration
diff --git a/src/dem/CDemDraw.cpp b/src/dem/CDemDraw.cpp
index ab34f2c..114709f 100644
--- a/src/dem/CDemDraw.cpp
+++ b/src/dem/CDemDraw.cpp
@@ -40,8 +40,8 @@ CDemDraw::CDemDraw(CCanvas *canvas)
 {
     demList = new CDemList(canvas);
     CMainWindow::self().addDemList(demList, canvas->objectName());
-    connect(canvas, SIGNAL(destroyed()), demList, SLOT(deleteLater()));
-    connect(demList, SIGNAL(sigChanged()), this, SLOT(emitSigCanvasUpdate()));
+    connect(canvas,  &CCanvas::destroyed,   demList, &CDemList::deleteLater);
+    connect(demList, &CDemList::sigChanged, this,    &CDemDraw::emitSigCanvasUpdate);
 
     buildMapList();
 
@@ -68,12 +68,20 @@ void CDemDraw::setProjection(const QString& proj)
 
 void CDemDraw::setupDemPath()
 {
-    CDemPathSetup dlg(demPaths);
+    QStringList paths = demPaths;
+    CDemPathSetup dlg(paths);
     if(dlg.exec() != QDialog::Accepted)
     {
         return;
     }
 
+    setupDemPath(paths);
+}
+
+void CDemDraw::setupDemPath(const QStringList &paths)
+{
+    demPaths = paths;
+
     foreach(CDemDraw * dem, dems)
     {
         QStringList keys;
diff --git a/src/dem/CDemDraw.h b/src/dem/CDemDraw.h
index b4c9d1d..b55926f 100644
--- a/src/dem/CDemDraw.h
+++ b/src/dem/CDemDraw.h
@@ -51,9 +51,15 @@ public:
     void  getElevationAt(const QPolygonF& pos, QPolygonF& ele);
     void  getElevationAt(SGisLine& line);
 
-    void setProjection(const QString& proj);
+    void setProjection(const QString& proj) override;
+
+    static const QStringList& getDemPaths()
+    {
+        return demPaths;
+    }
 
     static void setupDemPath();
+    static void setupDemPath(const QStringList &paths);
     static void saveDemPath(QSettings &cfg);
     static void loadDemPath(QSettings &cfg);
     static const QStringList& getSupportedFormats()
@@ -62,7 +68,7 @@ public:
     }
 
 protected:
-    void drawt(buffer_t& currentBuffer);
+    void drawt(buffer_t& currentBuffer) override;
 
 private:
     /**
diff --git a/src/dem/CDemList.cpp b/src/dem/CDemList.cpp
index d219f22..2139657 100644
--- a/src/dem/CDemList.cpp
+++ b/src/dem/CDemList.cpp
@@ -16,12 +16,15 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
+#include "dem/CDemDraw.h"
 #include "dem/CDemItem.h"
 #include "dem/CDemList.h"
+#include "units/IUnit.h"
 
 #include <QtWidgets>
 
-void CDemTreeWidget::dragMoveEvent ( QDragMoveEvent  * event )
+void CDemTreeWidget::dragMoveEvent( QDragMoveEvent  * event )
 {
     CDemItem * item = dynamic_cast<CDemItem*>(itemAt(event->pos()));
 
@@ -36,7 +39,7 @@ void CDemTreeWidget::dragMoveEvent ( QDragMoveEvent  * event )
     }
 }
 
-void CDemTreeWidget::dropEvent ( QDropEvent  * event )
+void CDemTreeWidget::dropEvent( QDropEvent  * event )
 {
     CDemItem * item = dynamic_cast<CDemItem*>(currentItem());
     if(item)
@@ -60,13 +63,21 @@ CDemList::CDemList(QWidget *parent)
 {
     setupUi(this);
 
-    connect(treeWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
-    connect(actionActivate, SIGNAL(triggered()), this, SLOT(slotActivate()));
+    connect(treeWidget,     &CDemTreeWidget::customContextMenuRequested, this, &CDemList::slotContextMenu);
+    connect(actionMoveUp,   &QAction::triggered,                         this, &CDemList::slotMoveUp);
+    connect(actionMoveDown, &QAction::triggered,                         this, &CDemList::slotMoveDown);
+    connect(actionActivate, &QAction::triggered,                         this, &CDemList::slotActivate);
+    connect(actionReloadDem, &QAction::triggered,                        this, &CDemList::slotReloadDem);
 
-    connect(treeWidget, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+    connect(treeWidget,     &CDemTreeWidget::sigChanged,                 this, &CDemList::sigChanged);
 
     menu = new QMenu(this);
     menu->addAction(actionActivate);
+    menu->addAction(actionMoveUp);
+    menu->addAction(actionMoveDown);
+    menu->addSeparator();
+    menu->addAction(actionReloadDem);
+    menu->addAction(CMainWindow::self().getDemSetupAction());
 }
 
 CDemList::~CDemList()
@@ -117,7 +128,7 @@ void CDemList::updateHelpText()
 void CDemList::slotActivate()
 {
     CDemItem * item = dynamic_cast<CDemItem*>(treeWidget->currentItem());
-    if(item == 0)
+    if(nullptr == item)
     {
         return;
     }
@@ -131,20 +142,77 @@ void CDemList::slotActivate()
     updateHelpText();
 }
 
+void CDemList::slotMoveUp()
+{
+    CDemItem * item = dynamic_cast<CDemItem*>(treeWidget->currentItem());
+    if(item == nullptr)
+    {
+        return;
+    }
 
-void CDemList::slotContextMenu(const QPoint& point)
+    int index = treeWidget->indexOfTopLevelItem(item);
+    if(index == NOIDX)
+    {
+        return;
+    }
+
+    item->showChildren(false);
+    treeWidget->takeTopLevelItem(index);
+    treeWidget->insertTopLevelItem(index-1, item);
+    item->showChildren(true);
+    treeWidget->setCurrentItem(0);
+    emit treeWidget->sigChanged();
+}
+
+void CDemList::slotMoveDown()
 {
     CDemItem * item = dynamic_cast<CDemItem*>(treeWidget->currentItem());
+    if(item == nullptr)
+    {
+        return;
+    }
 
-    if(item == 0)
+    int index = treeWidget->indexOfTopLevelItem(item);
+    if(index == NOIDX)
     {
         return;
     }
-    bool activated = item->isActivated();
-    actionActivate->setChecked(activated);
-    actionActivate->setText(activated ? tr("Deactivate") : tr("Activate"));
+
+    item->showChildren(false);
+    treeWidget->takeTopLevelItem(index);
+    treeWidget->insertTopLevelItem(index+1, item);
+    item->showChildren(true);
+    treeWidget->setCurrentItem(0);
+    emit treeWidget->sigChanged();
+}
+
+
+void CDemList::slotContextMenu(const QPoint& point)
+{
+    CDemItem * item = dynamic_cast<CDemItem*>(treeWidget->currentItem());
+
+    bool itemIsSelected  = nullptr != item;
+    bool itemIsActivated = item ? item->isActivated() : false;
+
+    actionActivate->setEnabled(itemIsSelected);
+    actionMoveUp->setEnabled(itemIsSelected);
+    actionMoveDown->setEnabled(itemIsSelected);
+
+    actionActivate->setChecked(itemIsActivated);
+    actionActivate->setText(itemIsActivated ? tr("Deactivate") : tr("Activate"));
+
+    if(itemIsSelected)
+    {
+        CDemItem * item1 = dynamic_cast<CDemItem*>(treeWidget->itemBelow(item));
+        actionMoveUp->setEnabled(itemIsActivated && (treeWidget->itemAbove(item) != 0));
+        actionMoveDown->setEnabled(itemIsActivated && item1 && item1->isActivated());
+    }
 
     QPoint p = treeWidget->mapToGlobal(point);
     menu->exec(p);
 }
 
+void CDemList::slotReloadDem()
+{
+    CDemDraw::setupDemPath(CDemDraw::getDemPaths());
+}
diff --git a/src/dem/CDemList.h b/src/dem/CDemList.h
index e89b11b..a346827 100644
--- a/src/dem/CDemList.h
+++ b/src/dem/CDemList.h
@@ -36,8 +36,8 @@ signals:
     void sigChanged();
 
 protected:
-    void dragMoveEvent ( QDragMoveEvent  * event );
-    void dropEvent ( QDropEvent  * event );
+    void dragMoveEvent(QDragMoveEvent *event) override;
+    void dropEvent(QDropEvent     *event) override;
 };
 
 
@@ -65,6 +65,9 @@ signals:
 
 private slots:
     void slotActivate();
+    void slotMoveUp();
+    void slotMoveDown();
+    void slotReloadDem();
     void slotContextMenu(const QPoint &point);
 
 private:
diff --git a/src/dem/CDemPathSetup.cpp b/src/dem/CDemPathSetup.cpp
index 9f7121f..4142987 100644
--- a/src/dem/CDemPathSetup.cpp
+++ b/src/dem/CDemPathSetup.cpp
@@ -28,9 +28,9 @@ CDemPathSetup::CDemPathSetup(QStringList &paths)
 {
     setupUi(this);
 
-    connect(toolAdd, SIGNAL(clicked()), this, SLOT(slotAddPath()));
-    connect(toolDelete, SIGNAL(clicked()), this, SLOT(slotDelPath()));
-    connect(listWidget, SIGNAL(itemSelectionChanged()), this, SLOT(slotItemSelectionChanged()));
+    connect(toolAdd,    &QToolButton::clicked,              this, &CDemPathSetup::slotAddPath);
+    connect(toolDelete, &QToolButton::clicked,              this, &CDemPathSetup::slotDelPath);
+    connect(listWidget, &QListWidget::itemSelectionChanged, this, &CDemPathSetup::slotItemSelectionChanged);
 
     foreach(const QString &path, paths)
     {
diff --git a/src/dem/CDemPathSetup.h b/src/dem/CDemPathSetup.h
index 03c2dd7..619a712 100644
--- a/src/dem/CDemPathSetup.h
+++ b/src/dem/CDemPathSetup.h
@@ -30,7 +30,7 @@ public:
     virtual ~CDemPathSetup();
 
 public slots:
-    void accept();
+    void accept() override;
 
 private slots:
     void slotAddPath();
diff --git a/src/dem/CDemPropSetup.cpp b/src/dem/CDemPropSetup.cpp
index 5f1a790..2aef064 100644
--- a/src/dem/CDemPropSetup.cpp
+++ b/src/dem/CDemPropSetup.cpp
@@ -19,6 +19,7 @@
 #include "dem/CDemDraw.h"
 #include "dem/CDemPropSetup.h"
 #include "dem/IDem.h"
+#include "helpers/Signals.h"
 #include "units/IUnit.h"
 
 #include <QtWidgets>
@@ -37,35 +38,36 @@ CDemPropSetup::CDemPropSetup(IDem * demfile, CDemDraw *dem)
 
     slotPropertiesChanged();
 
-    connect(sliderOpacity,     SIGNAL(valueChanged(int)),        demfile, SLOT(slotSetOpacity(int)));
-    connect(sliderOpacity,     SIGNAL(valueChanged(int)),        dem,     SLOT(emitSigCanvasUpdate()));
-    connect(dem,               SIGNAL(sigScaleChanged(QPointF)), this,    SLOT(slotScaleChanged(QPointF)));
-    connect(toolSetMinScale,   SIGNAL(toggled(bool)),            this,    SLOT(slotSetMinScale(bool)));
-    connect(toolSetMaxScale,   SIGNAL(toggled(bool)),            this,    SLOT(slotSetMaxScale(bool)));
+    connect(sliderOpacity,     &QSlider::valueChanged,          demfile, &IDem::slotSetOpacity);
+    connect(sliderOpacity,     &QSlider::valueChanged,          dem,     &CDemDraw::emitSigCanvasUpdate);
+    connect(dem,               &CDemDraw::sigScaleChanged,      this,    &CDemPropSetup::slotScaleChanged);
+    connect(toolSetMinScale,   &QToolButton::toggled,           this,    &CDemPropSetup::slotSetMinScale);
+    connect(toolSetMaxScale,   &QToolButton::toggled,           this,    &CDemPropSetup::slotSetMaxScale);
 
-    connect(checkHillshading,  SIGNAL(toggled(bool)),            demfile, SLOT(slotSetHillshading(bool)));
-    connect(checkHillshading,  SIGNAL(clicked()),                dem,     SLOT(emitSigCanvasUpdate()));
-    connect(sliderHillshading, SIGNAL(valueChanged(int)),        demfile, SLOT(slotSetFactorHillshade(int)));
-    connect(sliderHillshading, SIGNAL(valueChanged(int)),        dem,     SLOT(emitSigCanvasUpdate()));
+    connect(checkHillshading,  &QCheckBox::toggled,             demfile, &IDem::slotSetHillshading);
+    connect(checkHillshading,  &QCheckBox::clicked,             dem,     &CDemDraw::emitSigCanvasUpdate);
+    connect(sliderHillshading, &QSlider::valueChanged,          demfile, &IDem::slotSetFactorHillshade);
+    connect(sliderHillshading, &QSlider::valueChanged,          dem,     &CDemDraw::emitSigCanvasUpdate);
+
+    connect(checkSlopeColor,   &QCheckBox::toggled,             demfile, &IDem::slotSetSlopeColor);
+    connect(checkSlopeColor,   &QCheckBox::clicked,             dem,     &CDemDraw::emitSigCanvasUpdate);
 
-    connect(checkSlopeColor,   SIGNAL(toggled(bool)),            demfile, SLOT(slotSetSlopeColor(bool)));
-    connect(checkSlopeColor,   SIGNAL(clicked()),                dem,     SLOT(emitSigCanvasUpdate()));
-    connect(comboGrades,       SIGNAL(currentIndexChanged(int)), this,    SLOT(slotGradeIndex(int)));
 
     for(size_t i = 0; i < SLOPE_LEVELS; i++)
     {
         slopeSpins[i]->setProperty("level", (uint) i);
-        connect(slopeSpins[i], SIGNAL(editingFinished()), this, SLOT(slotSlopeValiddateAfterEdit()));
-        connect(slopeSpins[i], SIGNAL(valueChangedByStep(int)), this, SLOT(slotSlopeValiddateAfterEdit()));
+        connect(slopeSpins[i], &CTinySpinBox::editingFinished,    this, &CDemPropSetup::slotSlopeValiddateAfterEdit);
+        connect(slopeSpins[i], &CTinySpinBox::valueChangedByStep, this, &CDemPropSetup::slotSlopeValiddateAfterEdit);
     }
 
-    comboGrades->blockSignals(true);
+
     for(size_t i = 0; i < IDem::slopePresetCount; i++)
     {
         comboGrades->addItem(IDem::slopePresets[i].name);
     }
     comboGrades->addItem("custom");
-    comboGrades->blockSignals(false);
+    connect(comboGrades, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &CDemPropSetup::slotGradeIndex);
+
 
     const QVector<QRgb>& colortable = demfile->getSlopeColorTable();
     QPixmap pixmap(20, 10);
@@ -93,13 +95,7 @@ void CDemPropSetup::resizeEvent(QResizeEvent * e)
 
 void CDemPropSetup::slotPropertiesChanged()
 {
-    sliderOpacity->blockSignals(true);
-    toolSetMaxScale->blockSignals(true);
-    toolSetMinScale->blockSignals(true);
-    checkHillshading->blockSignals(true);
-    sliderHillshading->blockSignals(true);
-    checkSlopeColor->blockSignals(true);
-    comboGrades->blockSignals(true);
+    X______________BlockAllSignals______________X(this);
 
     sliderOpacity->setValue(demfile->getOpacity());
 
@@ -126,21 +122,13 @@ void CDemPropSetup::slotPropertiesChanged()
 
     for(size_t i = 0; i < SLOPE_LEVELS; i++)
     {
-        slopeSpins[i]->blockSignals(true);
         slopeSpins[i]->setReadOnly(spinsReadonly);
         slopeSpins[i]->setValue(demfile->getCurrentSlopeStepTable()[i]);
-        slopeSpins[i]->blockSignals(false);
     }
 
     dem->emitSigCanvasUpdate();
 
-    comboGrades->blockSignals(false);
-    sliderOpacity->blockSignals(false);
-    toolSetMaxScale->blockSignals(false);
-    toolSetMinScale->blockSignals(false);
-    checkHillshading->blockSignals(false);
-    sliderHillshading->blockSignals(false);
-    checkSlopeColor->blockSignals(false);
+    X_____________UnBlockAllSignals_____________X(this);
 }
 
 void CDemPropSetup::slotScaleChanged(const QPointF& s)
diff --git a/src/dem/CDemPropSetup.h b/src/dem/CDemPropSetup.h
index 6366135..093863e 100644
--- a/src/dem/CDemPropSetup.h
+++ b/src/dem/CDemPropSetup.h
@@ -32,10 +32,10 @@ public:
     virtual ~CDemPropSetup();
 
 protected slots:
-    void slotPropertiesChanged();
+    void slotPropertiesChanged() override;
 
 protected:
-    void resizeEvent(QResizeEvent * e);
+    void resizeEvent(QResizeEvent * e) override;
 
 private slots:
     void slotScaleChanged(const QPointF& s);
diff --git a/src/dem/CDemVRT.cpp b/src/dem/CDemVRT.cpp
index 65a79cb..dfd06f9 100644
--- a/src/dem/CDemVRT.cpp
+++ b/src/dem/CDemVRT.cpp
@@ -39,7 +39,7 @@ CDemVRT::CDemVRT(const QString &filename, CDemDraw *parent)
     qDebug() << "VRT: try to open" << filename;
 
     dataset = (GDALDataset*)GDALOpen(filename.toUtf8(),GA_ReadOnly);
-    if(dataset == 0)
+    if(nullptr == dataset)
     {
         QMessageBox::warning(CMainWindow::getBestWidgetForParent(), tr("Error..."), tr("Failed to load file: %1").arg(filename));
         return;
@@ -48,17 +48,16 @@ CDemVRT::CDemVRT(const QString &filename, CDemDraw *parent)
     if(dataset->GetRasterCount() != 1)
     {
         delete dataset;
-        dataset = 0;
+        dataset = nullptr;
         QMessageBox::warning(CMainWindow::getBestWidgetForParent(), tr("Error..."), tr("DEM must have one band with 16bit or 32bit data."));
         return;
     }
 
-    GDALRasterBand * pBand;
-    pBand = dataset->GetRasterBand(1);
-    if(pBand == 0)
+    GDALRasterBand *pBand = dataset->GetRasterBand(1);
+    if(nullptr == pBand)
     {
         delete dataset;
-        dataset = 0;
+        dataset = nullptr;
         QMessageBox::warning(CMainWindow::getBestWidgetForParent(), tr("Error..."), tr("DEM must have one band with 16bit or 32bit data."));
         return;
     }
@@ -70,24 +69,24 @@ CDemVRT::CDemVRT(const QString &filename, CDemDraw *parent)
     qDebug() << "no data:" << hasNoData << noData;
 
     // ------- setup projection ---------------
-    char str[1024] = {0};
+    char str[1025] = {0};
     if(dataset->GetProjectionRef())
     {
-        strncpy(str,dataset->GetProjectionRef(),sizeof(str));
+        strncpy(str, dataset->GetProjectionRef(), sizeof(str) - 1);
     }
-    char * ptr = str;
     OGRSpatialReference oSRS;
-    oSRS.importFromWkt(&ptr);
-    oSRS.exportToProj4(&ptr);
+    char *wkt = str;
+    oSRS.importFromWkt(&wkt);
 
-    qDebug() << ptr;
+    char *proj4 = nullptr;
+    oSRS.exportToProj4(&proj4);
+    pjsrc = pj_init_plus(proj4);
+    free(proj4);
 
-    pjsrc = pj_init_plus(ptr);
-    free(ptr);
     if(pjsrc == 0)
     {
         delete dataset;
-        dataset = 0;
+        dataset = nullptr;
         QMessageBox::warning(0, tr("Error..."), tr("No georeference information found."));
         return;
     }
diff --git a/src/dem/CDemVRT.h b/src/dem/CDemVRT.h
index 9abfbe5..677d1a3 100644
--- a/src/dem/CDemVRT.h
+++ b/src/dem/CDemVRT.h
@@ -33,9 +33,9 @@ public:
     CDemVRT(const QString& filename, CDemDraw *parent);
     virtual ~CDemVRT();
 
-    void draw(IDrawContext::buffer_t& buf);
+    void draw(IDrawContext::buffer_t& buf) override;
 
-    qreal getElevationAt(const QPointF& pos);
+    qreal getElevationAt(const QPointF& pos) override;
 
 private:
     QMutex mutex;
diff --git a/src/dem/IDem.h b/src/dem/IDem.h
index 2b33536..13d3154 100644
--- a/src/dem/IDem.h
+++ b/src/dem/IDem.h
@@ -43,9 +43,9 @@ public:
     IDem(CDemDraw * parent);
     virtual ~IDem();
 
-    void saveConfig(QSettings& cfg);
+    void saveConfig(QSettings& cfg) override;
 
-    void loadConfig(QSettings& cfg);
+    void loadConfig(QSettings& cfg) override;
 
     virtual void draw(IDrawContext::buffer_t& buf) = 0;
 
diff --git a/src/dem/IDemList.ui b/src/dem/IDemList.ui
index 1641da1..bedbe0c 100644
--- a/src/dem/IDemList.ui
+++ b/src/dem/IDemList.ui
@@ -156,6 +156,39 @@
     <string>Activate</string>
    </property>
   </action>
+  <action name="actionMoveUp">
+   <property name="icon">
+    <iconset resource="../resources.qrc">
+     <normaloff>:/icons/32x32/Up.png</normaloff>:/icons/32x32/Up.png</iconset>
+   </property>
+   <property name="text">
+    <string>Move Up</string>
+   </property>
+   <property name="toolTip">
+    <string>Hide DEM behind previous one</string>
+   </property>
+  </action>
+  <action name="actionMoveDown">
+   <property name="icon">
+    <iconset resource="../resources.qrc">
+     <normaloff>:/icons/32x32/Down.png</normaloff>:/icons/32x32/Down.png</iconset>
+   </property>
+   <property name="text">
+    <string>Move down</string>
+   </property>
+   <property name="toolTip">
+    <string>Show DEM on top of next one</string>
+   </property>
+  </action>
+  <action name="actionReloadDem">
+   <property name="icon">
+    <iconset resource="../resources.qrc">
+     <normaloff>:/icons/32x32/Reset.png</normaloff>:/icons/32x32/Reset.png</iconset>
+   </property>
+   <property name="text">
+    <string>Reload DEM</string>
+   </property>
+  </action>
  </widget>
  <customwidgets>
   <customwidget>
diff --git a/src/dem/IDemProp.cpp b/src/dem/IDemProp.cpp
index ae87eeb..8b68b22 100644
--- a/src/dem/IDemProp.cpp
+++ b/src/dem/IDemProp.cpp
@@ -24,7 +24,7 @@ IDemProp::IDemProp(IDem *demfile, CDemDraw *dem)
     : demfile(demfile)
     , dem(dem)
 {
-    connect(demfile, SIGNAL(sigPropertiesChanged()), this, SLOT(slotPropertiesChanged()));
+    connect(demfile, &IDem::sigPropertiesChanged, this, &IDemProp::slotPropertiesChanged);
 }
 
 IDemProp::~IDemProp()
diff --git a/src/device/CDeviceGarmin.cpp b/src/device/CDeviceGarmin.cpp
index ece5bd2..ab12500 100644
--- a/src/device/CDeviceGarmin.cpp
+++ b/src/device/CDeviceGarmin.cpp
@@ -17,15 +17,18 @@
 **********************************************************************************************/
 
 #include "device/CDeviceGarmin.h"
+#include "device/CDeviceGarminArchive.h"
 #include "gis/CGisListWks.h"
+#include "gis/fit/CFitProject.h"
 #include "gis/gpx/CGpxProject.h"
 #include "gis/wpt/CGisItemWpt.h"
 
+
 #include <QtWidgets>
 #include <QtXml>
 
 CDeviceGarmin::CDeviceGarmin(const QString &path, const QString &key, const QString &model, QTreeWidget *parent)
-    : IDevice(path, key, parent)
+    : IDevice(path, eTypeGarmin, key, parent)
     , cntImages(0)
 {
     setText(CGisListWks::eColumnName, "Garmin");
@@ -72,11 +75,27 @@ CDeviceGarmin::CDeviceGarmin(const QString &path, const QString &key, const QStr
         {
             pathSpoilers = xmlPath.toElement().text();
         }
+        else if(name == "FIT_TYPE_4")
+        {
+            pathActivities = xmlPath.toElement().text();
+        }
+        else if(name == "FIT_TYPE_6")
+        {
+            // courses
+            pathCourses = xmlPath.toElement().text();
+        }
+        else if(name == "Adventures")
+        {
+            pathAdventures = xmlPath.toElement().text();
+        }
     }
 
     qDebug() << dir.absoluteFilePath(pathGpx);
     qDebug() << dir.absoluteFilePath(pathPictures);
     qDebug() << dir.absoluteFilePath(pathSpoilers);
+    qDebug() << dir.absoluteFilePath(pathActivities);
+    qDebug() << dir.absoluteFilePath(pathCourses);
+    qDebug() << dir.absoluteFilePath(pathAdventures);
 
     if(!dir.exists(pathGpx))
     {
@@ -90,34 +109,43 @@ CDeviceGarmin::CDeviceGarmin(const QString &path, const QString &key, const QStr
     {
         dir.mkpath(pathSpoilers);
     }
+    if(!pathAdventures.isEmpty() && !dir.exists(pathAdventures))
+    {
+        dir.mkpath(pathAdventures);
+    }
 
-    QDir dirGpx(dir.absoluteFilePath(pathGpx));
-    QStringList entries = dirGpx.entryList(QStringList("*.gpx"));
-    foreach(const QString &entry, entries)
+
+    this->createProjectsFromFiles(pathGpx, "gpx");
+    this->createProjectsFromFiles(pathGpx + "/Current", "gpx");
+
+    QDir dirArchive(dir.absoluteFilePath(pathGpx + "/Archive"));
+    if(dirArchive.exists() && (dirArchive.entryList(QStringList("*.gpx")).count() != 0))
     {
-        IGisProject * project =  new CGpxProject(dirGpx.absoluteFilePath(entry), this);
-        if(!project->isValid())
-        {
-            delete project;
-        }
+        archive = new CDeviceGarminArchive(dir.absoluteFilePath(pathGpx + "/Archive"), this);
     }
 
-    QDir dirGpxCurrent(dir.absoluteFilePath(pathGpx + "/Current"));
-    entries = dirGpxCurrent.entryList(QStringList("*.gpx"));
+    this->createProjectsFromFiles(pathActivities, "fit");
+    this->createProjectsFromFiles(pathCourses, "fit");
+}
+
+void CDeviceGarmin::createProjectsFromFiles(QString subdirecoty, QString fileEnding)
+{
+    QDir dirLoop(dir.absoluteFilePath(subdirecoty));
+    qDebug() << "reading files from device: " << dirLoop.path();
+    QStringList entries = dirLoop.entryList(QStringList("*." + fileEnding));
     foreach(const QString &entry, entries)
     {
-        IGisProject * project =  new CGpxProject(dirGpxCurrent.absoluteFilePath(entry), this);
-        if(!project->isValid())
+        const QString filename = dirLoop.absoluteFilePath(entry);
+        IGisProject * project = nullptr;
+        if (fileEnding == "fit")
         {
-            delete project;
+            project = new CFitProject(filename, this);
+        }
+        if (fileEnding == "gpx")
+        {
+            project = new CGpxProject(filename, this);
         }
-    }
 
-    QDir dirGpxArchive(dir.absoluteFilePath(pathGpx + "/Archive"));
-    entries = dirGpxArchive.entryList(QStringList("*.gpx"));
-    foreach(const QString &entry, entries)
-    {
-        IGisProject * project =  new CGpxProject(dirGpxArchive.absoluteFilePath(entry), this);
         if(!project->isValid())
         {
             delete project;
@@ -154,6 +182,28 @@ void CDeviceGarmin::insertCopyOfProject(IGisProject * project)
         delete gpx;
         return;
     }
+
+    createAdventureFromProject(project, pathGpx + "/" + name + ".gpx");
+
+    // move new project to top of any sub-folder/sub-device item
+    int newIdx      = NOIDX;
+    const int myIdx = childCount() - 1;
+    for(int i = myIdx - 1; i >= 0; i--)
+    {
+        IDevice * device = dynamic_cast<IDevice*>(child(i));
+        if(0 == device)
+        {
+            break;
+        }
+
+        newIdx = i;
+    }
+
+    if(newIdx != NOIDX)
+    {
+        takeChild(myIdx);
+        insertChild(newIdx, gpx);
+    }
 }
 
 void CDeviceGarmin::saveImages(CGisItemWpt& wpt)
@@ -201,7 +251,7 @@ void CDeviceGarmin::saveImages(CGisItemWpt& wpt)
 
             IGisItem::link_t link;
             link.uri  = pathPictures + "/" + filename;
-            link.text = QObject::tr("Picture%1").arg(cntImages);
+            link.text = tr("Picture%1").arg(cntImages);
             link.type = "Garmin";
 
             links << link;
@@ -309,4 +359,12 @@ void CDeviceGarmin::aboutToRemoveProject(IGisProject * project)
             dirCache.removeRecursively();
         }
     }
+
+    if(!pathAdventures.isEmpty())
+    {
+        const QDir dirAdventures(dir.absoluteFilePath(pathAdventures));
+        QString filename = dirAdventures.absoluteFilePath(key + ".adv");
+        QFile::remove(filename);
+    }
 }
+
diff --git a/src/device/CDeviceGarmin.h b/src/device/CDeviceGarmin.h
index 470d2f0..0afad76 100644
--- a/src/device/CDeviceGarmin.h
+++ b/src/device/CDeviceGarmin.h
@@ -21,30 +21,38 @@
 
 #include "device/IDevice.h"
 
+class CDeviceGarminArchive;
+
 class CDeviceGarmin : public IDevice
 {
+    Q_DECLARE_TR_FUNCTIONS(CDeviceGarmin)
 public:
     CDeviceGarmin(const QString &path, const QString &key, const QString& model, QTreeWidget * parent);
     virtual ~CDeviceGarmin();
 
-    void insertCopyOfProject(IGisProject * project);
-
-
-    void startSavingProject(IGisProject * project);
-    void saveImages(CGisItemWpt& wpt);
-    void loadImages(CGisItemWpt& wpt);
-    void aboutToRemoveProject(IGisProject * project);
-
+    void insertCopyOfProject(IGisProject *project)  override;
+    void startSavingProject(IGisProject *project)   override;
+    void saveImages(CGisItemWpt& wpt)               override;
+    void loadImages(CGisItemWpt& wpt)               override;
+    void aboutToRemoveProject(IGisProject *project) override;
 
 private:
+    void createProjectsFromFiles(QString subdirecoty, QString fileEnding);
+    void createAdventureFromProject(IGisProject * project, const QString &gpxFilename);
+
     QString id;
     QString partno;
     QString description;
-    QString pathGpx = "Garmin/GPX";
-    QString pathPictures = "Garmin/JPEG";
-    QString pathSpoilers = "Garmin/GeocachePhotos";
+    QString pathGpx           = "Garmin/GPX";
+    QString pathPictures      = "Garmin/JPEG";
+    QString pathSpoilers      = "Garmin/GeocachePhotos";
+    QString pathActivities    = "Garmin/Activities";
+    QString pathCourses       = "Garmin/Courses";
+    QString pathAdventures; // no default
 
     int cntImages = 0;
+
+    CDeviceGarminArchive * archive = nullptr;
 };
 
 #endif //CDEVICEGARMIN_H
diff --git a/src/device/CDeviceGarminArchive.cpp b/src/device/CDeviceGarminArchive.cpp
new file mode 100644
index 0000000..a1e931b
--- /dev/null
+++ b/src/device/CDeviceGarminArchive.cpp
@@ -0,0 +1,62 @@
+/**********************************************************************************************
+    Copyright (C) 2016 Oliver Eichler oliver.eichler at gmx.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "canvas/CCanvas.h"
+#include "device/CDeviceGarmin.h"
+#include "device/CDeviceGarminArchive.h"
+#include "gis/CGisListWks.h"
+#include "gis/gpx/CGpxProject.h"
+
+#include <QtWidgets>
+
+CDeviceGarminArchive::CDeviceGarminArchive(const QString &path, CDeviceGarmin *parent)
+    : IDevice(path, eTypeGarmin, parent->getKey(), parent)
+{
+    setText(CGisListWks::eColumnName, tr("Archive - expand to load"));
+    setChildIndicatorPolicy(QTreeWidgetItem::ShowIndicator);
+    connect(treeWidget(), &QTreeWidget::itemExpanded, this, &CDeviceGarminArchive::slotExpanded);
+}
+
+
+void CDeviceGarminArchive::slotExpanded(QTreeWidgetItem * item)
+{
+    if((item != this) || (childCount() != 0))
+    {
+        return;
+    }
+
+    setText(CGisListWks::eColumnName, tr("Archive - loaded"));
+
+    QMutexLocker lock(&IGisItem::mutexItems);
+    CCanvas::setOverrideCursor(Qt::WaitCursor, "CDeviceGarminArchive::slotExpanded()");
+    mount();
+    qDebug() << "reading files from device: " << dir.path();
+    QStringList entries = dir.entryList(QStringList("*.gpx"));
+    foreach(const QString &entry, entries)
+    {
+        const QString filename = dir.absoluteFilePath(entry);
+        IGisProject * project = new CGpxProject(filename, this);
+        if(!project->isValid())
+        {
+            delete project;
+        }
+    }
+    umount();
+    CCanvas::restoreOverrideCursor("CDeviceGarminArchive::slotExpanded()");
+}
+
diff --git a/src/gis/rte/CCreateRouteFromWpt.h b/src/device/CDeviceGarminArchive.h
similarity index 61%
copy from src/gis/rte/CCreateRouteFromWpt.h
copy to src/device/CDeviceGarminArchive.h
index ee98541..bb79b26 100644
--- a/src/gis/rte/CCreateRouteFromWpt.h
+++ b/src/device/CDeviceGarminArchive.h
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2014-2015 Oliver Eichler oliver.eichler at gmx.de
+    Copyright (C) 2016 Oliver Eichler oliver.eichler at gmx.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -16,30 +16,30 @@
 
 **********************************************************************************************/
 
-#ifndef CCREATEROUTEFROMWPT_H
-#define CCREATEROUTEFROMWPT_H
+#ifndef CDEVICEGARMINARCHIVE_H
+#define CDEVICEGARMINARCHIVE_H
 
-#include <gis/IGisItem.h>
+#include "device/IDevice.h"
 
-#include "ui_ICreateRouteFromWpt.h"
-#include <QDialog>
+#include <QCoreApplication>
+#include <QDir>
+#include <QObject>
 
+class CDeviceGarmin;
 
-class CCreateRouteFromWpt : public QDialog, private Ui::ICreateRouteFromWpt
+class CDeviceGarminArchive : public QObject, public IDevice
 {
     Q_OBJECT
 public:
-    CCreateRouteFromWpt(const QList<IGisItem::key_t>& keys, QWidget * parent);
-    virtual ~CCreateRouteFromWpt();
+    CDeviceGarminArchive(const QString& path, CDeviceGarmin * parent);
+    virtual ~CDeviceGarminArchive() = default;
 
-public slots:
-    void accept();
+protected:
+    void insertCopyOfProject(IGisProject * project) override {}
 
 private slots:
-    void slotSelectionChanged();
-    void slotUp();
-    void slotDown();
+    void slotExpanded(QTreeWidgetItem * item);
 };
 
-#endif //CCREATEROUTEFROMWPT_H
+#endif //CDEVICEGARMINARCHIVE_H
 
diff --git a/src/device/CDeviceTwoNav.cpp b/src/device/CDeviceTwoNav.cpp
index 518c9db..ef211d1 100644
--- a/src/device/CDeviceTwoNav.cpp
+++ b/src/device/CDeviceTwoNav.cpp
@@ -24,7 +24,7 @@
 #include <QtWidgets>
 
 CDeviceTwoNav::CDeviceTwoNav(const QString &path, const QString &key, const QString& model, QTreeWidget *parent)
-    : IDevice(path, key, parent)
+    : IDevice(path, eTypeTwoNav, key, parent)
 {
     setText(CGisListWks::eColumnName, QString("TwoNav (%1)").arg(model));
     setToolTip(CGisListWks::eColumnName, QString("TwoNav (%1)").arg(model));
diff --git a/src/device/CDeviceTwoNav.h b/src/device/CDeviceTwoNav.h
index 7f6636f..9aec269 100644
--- a/src/device/CDeviceTwoNav.h
+++ b/src/device/CDeviceTwoNav.h
@@ -27,7 +27,7 @@ public:
     CDeviceTwoNav(const QString &path, const QString &key, const QString &model, QTreeWidget * parent);
     virtual ~CDeviceTwoNav();
 
-    void insertCopyOfProject(IGisProject * project);
+    void insertCopyOfProject(IGisProject * project) override;
 
 private:
     void readReginfo(const QString& filename);
diff --git a/src/device/CDeviceWatcherLinux.cpp b/src/device/CDeviceWatcherLinux.cpp
index 3306251..e07e293 100644
--- a/src/device/CDeviceWatcherLinux.cpp
+++ b/src/device/CDeviceWatcherLinux.cpp
@@ -67,6 +67,8 @@ void CDeviceWatcherLinux::slotDeviceAdded(const QDBusObjectPath& path, const QVa
     delete blockIface;
     delete driveIface;
 
+    qDebug() << "model:" << model << "vendor:" << vendor;
+
     if(model.isEmpty() || vendor.isEmpty())
     {
         return;
diff --git a/src/device/CDeviceWatcherLinux.h b/src/device/CDeviceWatcherLinux.h
index ea2d096..d7ad849 100644
--- a/src/device/CDeviceWatcherLinux.h
+++ b/src/device/CDeviceWatcherLinux.h
@@ -33,7 +33,7 @@ public:
 private slots:
     void slotDeviceAdded(const QDBusObjectPath& path, const QVariantMap& map);
     void slotDeviceRemoved(const QDBusObjectPath& path, const QStringList& list);
-    void slotUpdate();
+    void slotUpdate() override;
 
 
 private:
diff --git a/src/device/CDeviceWatcherMac.cpp b/src/device/CDeviceWatcherMac.cpp
index a128e4f..04bcfd3 100644
--- a/src/device/CDeviceWatcherMac.cpp
+++ b/src/device/CDeviceWatcherMac.cpp
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-   Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+   Copyright (C) 2015 Ivo Kronenberg
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -22,22 +22,32 @@
 
 #include <QtWidgets>
 
-#include <CoreServices/CoreServices.h>
-
-#include <IOKit/storage/IOCDMedia.h>
-#include <IOKit/storage/IODVDMedia.h>
-
 
 CDeviceWatcherMac::CDeviceWatcherMac(CGisListWks *parent)
     : IDeviceWatcher(parent), worker()
 {
-    connect(&worker, SIGNAL(sigDeviceAdded(const QString &, const QString &)), this, SLOT(slotDeviceAdded(const QString &, const QString &)));
-    connect(&worker, SIGNAL(sigDeviceRemoved(const QString &, const QString &)), this, SLOT(slotDeviceRemoved(const QString &, const QString &)));
+    connect(&worker, &CDeviceWorker::sigDeviceAdded,   this, &CDeviceWatcherMac::slotDeviceAdded);
+    connect(&worker, &CDeviceWorker::sigDeviceRemoved, this, &CDeviceWatcherMac::slotDeviceRemoved);
+    connect(qApp,    &QApplication::aboutToQuit,       this, &CDeviceWatcherMac::slotEndListing);
 }
 
 
-CDeviceWatcherMac::~CDeviceWatcherMac()
+void CDeviceWatcherMac::addDevice(const QStorageInfo& storage)
 {
+    if (storage.isValid() && storage.isReady())
+    {
+        QString dev = QString(storage.device()).section('/', -1);
+        if (!deviceList.contains(dev))
+        {
+            // We don't care about content of device. This is done in the probeForDevice() method.
+            deviceList.append(dev);
+            QString path = storage.rootPath();
+            QString label = storage.name();
+
+            qDebug() << "label:" << label << " root path: " << path << " device: " << dev;
+            probeForDevice(path, dev, label);
+        }
+    }
 }
 
 
@@ -50,141 +60,70 @@ void CDeviceWatcherMac::slotEndListing()
 // Aufruf 1s. nach instanzierung
 void CDeviceWatcherMac::slotUpdate()
 {
+    qDebug() << "slotUpdate";
     foreach(const QStorageInfo &storage, QStorageInfo::mountedVolumes())
     {
         addDevice(storage);
     }
 }
 
-void CDeviceWatcherMac::slotDeviceAdded(const QString& dev, const QString& path)
-{
-    qDebug() << "slotDeviceAdded" << dev << " " << path;
-
-    QStorageInfo storage(path);
-    addDevice(storage);
-}
-
 
-void CDeviceWatcherMac::addDevice(QStorageInfo storage)
+void CDeviceWatcherMac::slotDeviceAdded(QString dev)
 {
-    if (storage.isValid() && storage.isReady())
+    // get mount point
+    QStorageInfo storageInfo;
+    foreach(const QStorageInfo &storage, QStorageInfo::mountedVolumes())
     {
-        QString dev = QString(storage.device()).section('/', -1);
-        if (!sDevices.contains(dev))
+        QString diskName = QString(storage.device()).section('/', -1);
+        if(dev == diskName)
         {
-            // TODO only add Garmin devices...
-            sDevices.append(dev);
-            //QString label = QFileInfo(path).fileName();
-            QString path = storage.rootPath();
-            QString device = storage.device();
-            QString label = storage.name();
-            QString name = storage.displayName();
-
-            qDebug() << "name: " << storage.name() << " display name: " << name << " root path: " << path << " label (name): " << label << " device: " <<device << " " << dev;
-            //probeForDevice(path, path, storage.name());
-            probeForDevice(path, dev, label);
-
-            // beim senden von *.gpx Dateien an Device:
-            // 1. wird im Ordner Garmin/NewFiles als gpx abgelegt.
-            // danach (z.B. wenn device abgehängt wird) übernimmt das GPS diese als *.fit im Ordner Garmin/Courses
+            storageInfo = storage;
         }
     }
+
+    qDebug() << "slotDeviceAdded" << dev << " " << storageInfo.rootPath();
+
+    addDevice(storageInfo);
 }
 
 
-void CDeviceWatcherMac::slotDeviceRemoved(const QString& dev, const QString& path)
+void CDeviceWatcherMac::slotDeviceRemoved(QString dev)
 {
     qDebug() << "slotDeviceRemoved" << dev;
 
-    sDevices.removeAll(dev); //erase?
+    deviceList.removeAll(dev);
     listWks->removeDevice(dev);
 }
 
 
 
-static void onDiskAppear(DADiskRef disk, void *context)
+static void onDiskAppear(DADiskRef disk, CFArrayRef keys, void* context)
 {
     CDeviceWorker *p = static_cast<CDeviceWorker*>(context);
-    p->eventDiskAppear(disk);
+    QString diskName = DADiskGetBSDName(disk);
+    qDebug() << "onDiskAppear" << diskName;
+
+    emit p->sigDeviceAdded(diskName);
 }
 
 
 static void onDiskDisappear(DADiskRef disk, void *context)
 {
     CDeviceWorker *p = static_cast<CDeviceWorker*>(context);
-    p->eventDiskDisappear(disk);
-}
-
+    QString diskName = DADiskGetBSDName(disk);
+    qDebug() << "onDiskDisappear" << diskName;
 
-void CDeviceWorker::eventDiskAppear(DADiskRef disk)
-{
-    QString disk_name = DADiskGetBSDName(disk);
-    QString path = getMountPoint(disk);
-
-    qDebug() << "onDiskAppear " << path << " " << disk_name;
-
-    if (!QMetaObject::invokeMethod(this, "sigDeviceAdded", Qt::QueuedConnection, Q_ARG(QString, disk_name), Q_ARG(QString, path)))
-    {
-        qWarning("invoke deviceAdded failed");
-    }
-}
-
-
-void CDeviceWorker::eventDiskDisappear(DADiskRef disk)
-{
-    QString disk_name = DADiskGetBSDName(disk);
-    qDebug() << "onDiskDisappear " << disk_name;
-
-    if (!QMetaObject::invokeMethod(this, "sigDeviceRemoved", Qt::QueuedConnection, Q_ARG(QString, disk_name), Q_ARG(QString, "")))
-    {
-        qWarning("invoke deviceRemoved failed");
-    }
-}
-
-
-QString CDeviceWorker::getMountPoint(DADiskRef disk)
-{
-    //QString path = getMountPoint(disk);
-    CFDictionaryRef dict = DADiskCopyDescription(disk);
-
-    QString path;
-    CFURLRef fspath = (CFURLRef) CFDictionaryGetValue(dict, kDADiskDescriptionVolumePathKey);
-    if(fspath)
-    {
-        char buf[512];
-        CFURLGetFileSystemRepresentation(fspath, false, (UInt8 *)buf, sizeof(buf));
-        path = buf;
-    }
-    else
-    {
-        // wieso braucht es diesen Workaround für gewisse Devices?
-        // bei manchen Devices ist der Volumen Path Key (fspath) nicht gesetzt.
-        // TODO anderen Key verwenden?
-        QString disk_name = DADiskGetBSDName(disk);
-        foreach(const QStorageInfo &storage, QStorageInfo::mountedVolumes())
-        {
-            QString dev = QString(storage.device()).section('/', -1);
-            if(dev == disk_name)
-            {
-                path = storage.rootPath();
-            }
-        }
-    }
-
-    CFRelease(dict);
-    return path;
+    emit p->sigDeviceRemoved(diskName);
 }
 
 
 CDeviceWorker::CDeviceWorker() : QThread()
 {
-    init();
-    QThread::start();
-}
-
+    mSession = DASessionCreate(kCFAllocatorDefault);
+    DARegisterDiskDescriptionChangedCallback(mSession, nullptr, kDADiskDescriptionWatchVolumePath, onDiskAppear, this);
+    DARegisterDiskDisappearedCallback(mSession, nullptr, onDiskDisappear, this);
 
-CDeviceWorker::~CDeviceWorker()
-{
+    QThread::start();
 }
 
 
@@ -196,13 +135,13 @@ void CDeviceWorker::stop()
     DAUnregisterCallback(mSession, (void*)onDiskAppear, this);
     DAUnregisterCallback(mSession, (void*)onDiskDisappear, this);
 
-    qDebug() << "Thread.stop";
+    qDebug() << "CDeviceWorker Thread.stop";
 }
 
 
 void CDeviceWorker::run()
 {
-    qDebug() << "Thread.run";
+    qDebug() << "CDeviceWorker Thread.run";
     mStop = false;
 
     DASessionScheduleWithRunLoop(mSession, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
@@ -215,12 +154,3 @@ void CDeviceWorker::run()
 
     DASessionUnscheduleFromRunLoop(mSession, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
 }
-
-
-void CDeviceWorker::init()
-{
-    mSession = DASessionCreate(kCFAllocatorDefault);
-
-    DARegisterDiskAppearedCallback(mSession, NULL, onDiskAppear, this);
-    DARegisterDiskDisappearedCallback(mSession, NULL, onDiskDisappear, this);
-}
diff --git a/src/device/CDeviceWatcherMac.h b/src/device/CDeviceWatcherMac.h
index fe540f9..6313c3f 100644
--- a/src/device/CDeviceWatcherMac.h
+++ b/src/device/CDeviceWatcherMac.h
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-   Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+   Copyright (C) 2015 Ivo Kronenberg
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -32,22 +32,15 @@ class CDeviceWorker : public QThread
     Q_OBJECT
 public:
     CDeviceWorker();
-    virtual ~CDeviceWorker();
 
-    void run() Q_DECL_OVERRIDE;
+    void run() override;
     void stop();
 
-    void eventDiskAppear(DADiskRef disk);
-    void eventDiskDisappear(DADiskRef disk);
-
 signals:
-    void sigDeviceAdded(const QString& dev, const QString& path);
-    void sigDeviceRemoved(const QString& dev, const QString& path);
+    void sigDeviceAdded(QString dev);
+    void sigDeviceRemoved(QString dev);
 
 private:
-    void init();
-    QString getMountPoint(DADiskRef disk);
-
     volatile bool mStop;
     DASessionRef mSession;
 };
@@ -58,20 +51,18 @@ class CDeviceWatcherMac : public IDeviceWatcher
     Q_OBJECT
 public:
     CDeviceWatcherMac(CGisListWks *parent);
-    virtual ~CDeviceWatcherMac();
-
-    CDeviceWorker worker;
 
 private slots:
-    void slotUpdate();
-    void slotDeviceAdded(const QString& dev, const QString& path);
-    void slotDeviceRemoved(const QString& dev, const QString& path);
+    void slotUpdate() override;
+    void slotDeviceAdded(QString dev);
+    void slotDeviceRemoved(QString dev);
     void slotEndListing();
 
 private:
-    void addDevice(QStorageInfo storage);
+    void addDevice(const QStorageInfo& storage);
 
-    QStringList sDevices;
+    CDeviceWorker worker;
+    QStringList deviceList;
 };
 
 #endif //CDEVICEWATCHERMAC_H
diff --git a/src/device/CDeviceWatcherWindows.cpp b/src/device/CDeviceWatcherWindows.cpp
index bc62d22..9c8b1ff 100644
--- a/src/device/CDeviceWatcherWindows.cpp
+++ b/src/device/CDeviceWatcherWindows.cpp
@@ -22,7 +22,7 @@
 #include "CMainWindow.h"
 #include <QtCore>
 
-CDeviceWatcherWindows * CDeviceWatcherWindows::pSelf = 0;
+CDeviceWatcherWindows * CDeviceWatcherWindows::pSelf = nullptr;
 
 CDeviceWatcherWindows::CDeviceWatcherWindows(CGisListWks *parent)
     : IDeviceWatcher(parent)
@@ -71,4 +71,4 @@ bool CDeviceWatcherWindows::event(QEvent * e)
     }
 
     return QObject::event(e);
-}
\ No newline at end of file
+}
diff --git a/src/device/IDevice.cpp b/src/device/IDevice.cpp
index d5796f2..99bca38 100644
--- a/src/device/IDevice.cpp
+++ b/src/device/IDevice.cpp
@@ -16,6 +16,7 @@
 
 **********************************************************************************************/
 #include "CMainWindow.h"
+#include "device/CDeviceGarmin.h"
 #include "device/IDevice.h"
 #include "gis/CGisListWks.h"
 #include "gis/prj/IGisProject.h"
@@ -27,8 +28,8 @@
 
 int IDevice::cnt = 0;
 
-IDevice::IDevice(const QString &path, const QString &key, QTreeWidget *parent)
-    : QTreeWidgetItem(parent)
+IDevice::IDevice(const QString &path, type_e type, const QString &key, QTreeWidget *parent)
+    : QTreeWidgetItem(parent, type)
     , dir(path)
     , key(key)
 {
@@ -36,6 +37,14 @@ IDevice::IDevice(const QString &path, const QString &key, QTreeWidget *parent)
     cnt++;
 }
 
+IDevice::IDevice(const QString &path, type_e type, const QString &key, CDeviceGarmin *parent)
+    : QTreeWidgetItem(parent, type)
+    , dir(path)
+    , key(key)
+{
+    setIcon(CGisListWks::eColumnIcon, QIcon("://icons/32x32/PathGreen.png"));
+}
+
 IDevice::~IDevice()
 {
     cnt--;
@@ -74,21 +83,28 @@ void IDevice::getItemsByPos(const QPointF& pos, QList<IGisItem *> &items)
     for(int n = 0; n < N; n++)
     {
         IGisProject * project = dynamic_cast<IGisProject*>(child(n));
-        if(project)
+        if(project != nullptr)
         {
             project->getItemsByPos(pos, items);
+            continue;
+        }
+
+        IDevice * device = dynamic_cast<IDevice*>(child(n));
+        if(device != nullptr)
+        {
+            device->getItemsByPos(pos, items);
         }
     }
 }
 
 IGisItem * IDevice::getItemByKey(const IGisItem::key_t& key)
 {
-    IGisItem * item = 0;
+    IGisItem * item = nullptr;
     const int N = childCount();
     for(int n = 0; n < N; n++)
     {
         IGisProject * project = dynamic_cast<IGisProject*>(child(n));
-        if(project)
+        if(project != nullptr)
         {
             if(project->getKey() != key.project)
             {
@@ -96,7 +112,17 @@ IGisItem * IDevice::getItemByKey(const IGisItem::key_t& key)
             }
 
             item = project->getItemByKey(key);
-            if(item != 0)
+            if(item != nullptr)
+            {
+                break;
+            }
+        }
+
+        IDevice * device = dynamic_cast<IDevice*>(child(n));
+        if(device != nullptr)
+        {
+            item = device->getItemByKey(key);
+            if(item != nullptr)
             {
                 break;
             }
@@ -111,7 +137,7 @@ IGisProject * IDevice::getProjectByKey(const QString& key)
     for(int n = 0; n < N; n++)
     {
         IGisProject * project = dynamic_cast<IGisProject*>(child(n));
-        if(project)
+        if(project != nullptr)
         {
             if(project->getKey() != key)
             {
@@ -120,8 +146,18 @@ IGisProject * IDevice::getProjectByKey(const QString& key)
 
             return project;
         }
+
+        IDevice * device = dynamic_cast<IDevice*>(child(n));
+        if(device != nullptr)
+        {
+            project = device->getProjectByKey(key);
+            if(project != nullptr)
+            {
+                return project;
+            }
+        }
     }
-    return 0;
+    return nullptr;
 }
 
 void IDevice::editItemByKey(const IGisItem::key_t& key)
@@ -130,9 +166,16 @@ void IDevice::editItemByKey(const IGisItem::key_t& key)
     for(int n = 0; n < N; n++)
     {
         IGisProject * project = dynamic_cast<IGisProject*>(child(n));
-        if(project)
+        if(project != nullptr)
         {
             project->editItemByKey(key);
+            continue;
+        }
+
+        IDevice * device = dynamic_cast<IDevice*>(child(n));
+        if(device != nullptr)
+        {
+            device->editItemByKey(key);
         }
     }
 }
@@ -201,7 +244,7 @@ bool IDevice::testForExternalProject(const QString& filename)
 {
     if(QDir(filename).exists() || QFile::exists(filename))
     {
-        QString msg = QObject::tr("There is another project with the same name. If you press 'ok' it will be removed and replaced.");
+        QString msg = tr("There is another project with the same name. If you press 'ok' it will be removed and replaced.");
         int res = QMessageBox::warning(CMainWindow::getBestWidgetForParent(), getName(), msg, QMessageBox::Ok|QMessageBox::Abort, QMessageBox::Ok);
         if(res != QMessageBox::Ok)
         {
@@ -230,8 +273,6 @@ bool IDevice::testForExternalProject(const QString& filename)
             }
         }
     }
-
-
     return false;
 }
 
@@ -241,9 +282,16 @@ void IDevice::drawItem(QPainter& p, const QPolygonF &viewport, QList<QRectF>& bl
     for(int n = 0; n < N; n++)
     {
         IGisProject * project = dynamic_cast<IGisProject*>(child(n));
-        if(project)
+        if(project != nullptr)
         {
             project->drawItem(p, viewport, blockedAreas, gis);
+            continue;
+        }
+
+        IDevice * device = dynamic_cast<IDevice*>(child(n));
+        if(device != nullptr)
+        {
+            device->drawItem(p, viewport, blockedAreas, gis);
         }
     }
 }
@@ -254,9 +302,16 @@ void IDevice::drawLabel(QPainter& p, const QPolygonF &viewport, QList<QRectF>& b
     for(int n = 0; n < N; n++)
     {
         IGisProject * project = dynamic_cast<IGisProject*>(child(n));
-        if(project)
+        if(project != nullptr)
         {
             project->drawLabel(p, viewport, blockedAreas, fm, gis);
+            continue;
+        }
+
+        IDevice * device = dynamic_cast<IDevice*>(child(n));
+        if(device != nullptr)
+        {
+            device->drawLabel(p, viewport, blockedAreas, fm, gis);
         }
     }
 }
@@ -267,9 +322,16 @@ void IDevice::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
     for(int n = 0; n < N; n++)
     {
         IGisProject * project = dynamic_cast<IGisProject*>(child(n));
-        if(project)
+        if(project != nullptr)
         {
             project->drawItem(p, viewport, gis);
+            continue;
+        }
+
+        IDevice * device = dynamic_cast<IDevice*>(child(n));
+        if(device != nullptr)
+        {
+            device->drawItem(p, viewport, gis);
         }
     }
 }
diff --git a/src/device/IDevice.h b/src/device/IDevice.h
index d49f180..452adf3 100644
--- a/src/device/IDevice.h
+++ b/src/device/IDevice.h
@@ -25,13 +25,24 @@
 #include "gis/IGisItem.h"
 class CGisDraw;
 class CGisItemWpt;
+class CDeviceGarmin;
 
 class IDevice : public QTreeWidgetItem
 {
+    Q_DECLARE_TR_FUNCTIONS(IDevice)
 public:
-    IDevice(const QString& path, const QString& key, QTreeWidget * parent);
+    enum type_e
+    {
+        eTypeNone       = 0
+        ,eTypeGarmin    = 1
+        ,eTypeTwoNav    = 2
+    };
+
+    IDevice(const QString& path, type_e type, const QString& key, QTreeWidget * parent);
+    IDevice(const QString &path, type_e type, const QString &key, CDeviceGarmin *parent);
     virtual ~IDevice();
 
+
     static void mount(const QString& path);
     static void umount(const QString &path);
     static int count()
diff --git a/src/gis/CGisDraw.cpp b/src/gis/CGisDraw.cpp
index 13fd1d0..5c058e4 100644
--- a/src/gis/CGisDraw.cpp
+++ b/src/gis/CGisDraw.cpp
@@ -25,7 +25,7 @@
 CGisDraw::CGisDraw(CCanvas *parent)
     : IDrawContext("gis", CCanvas::eRedrawGis, parent)
 {
-    connect(&CGisWidget::self(), SIGNAL(sigChanged()), this, SLOT(emitSigCanvasUpdate()));
+    connect(&CGisWidget::self(), &CGisWidget::sigChanged, this, &CGisDraw::emitSigCanvasUpdate);
 }
 
 CGisDraw::~CGisDraw()
diff --git a/src/gis/CGisDraw.h b/src/gis/CGisDraw.h
index 9e9589e..6350c48 100644
--- a/src/gis/CGisDraw.h
+++ b/src/gis/CGisDraw.h
@@ -33,7 +33,7 @@ public:
     void draw(QPainter& p, const QRect& rect);
 
 protected:
-    void drawt(buffer_t& currentBuffer);
+    void drawt(buffer_t& currentBuffer) override;
 };
 
 #endif //CGISDRAW_H
diff --git a/src/gis/CGisListDB.cpp b/src/gis/CGisListDB.cpp
index 5ecbc4e..2a583fb 100644
--- a/src/gis/CGisListDB.cpp
+++ b/src/gis/CGisListDB.cpp
@@ -21,14 +21,16 @@
 #include "config.h"
 #include "gis/CGisListDB.h"
 #include "gis/CGisWidget.h"
-#include "gis/db/CDBFolderDatabase.h"
 #include "gis/db/CDBFolderLostFound.h"
+#include "gis/db/CDBFolderMysql.h"
+#include "gis/db/CDBFolderSqlite.h"
 #include "gis/db/CDBItem.h"
 #include "gis/db/CSetupDatabase.h"
 #include "gis/db/CSetupFolder.h"
 #include "gis/db/macros.h"
 #include "helpers/CSettings.h"
 
+#include <QtNetwork>
 #include <QtSql>
 #include <QtWidgets>
 
@@ -60,16 +62,54 @@ private:
 
 CGisListDB::CGisListDB(QWidget *parent)
     : QTreeWidget(parent)
+    , socket(nullptr)
 {
     SETTINGS;
-    QStringList names = cfg.value("Database/names").toStringList();
-    QStringList files = cfg.value("Database/files").toStringList();
+    cfg.beginGroup("Database");
+    QString path = cfg.value("lastDatabasePath", QDir::homePath()).toString();
+    QStringList names = cfg.value("names").toStringList();
+    cfg.beginGroup("Entries");
+    foreach(const QString &name, names)
+    {
+        cfg.beginGroup(name);
+        QString type = cfg.value("type", "SQLite").toString();
+        if(type == "SQLite")
+        {
+            QString filename = cfg.value("filename","").toString();
+            if(filename.isEmpty())
+            {
+                QMessageBox::information(this, name, tr("Due to changes in the database system QMapShack forgot about the filename of your database '%1'. You have to select it again in the next step.").arg(name), QMessageBox::Ok);
+                filename = QFileDialog::getOpenFileName(this, tr("Select database file."), path, "QMapShack Database (*.db)");
+                if(filename.isEmpty())
+                {
+                    cfg.endGroup(); // name;
+                    continue;
+                }
+            }
+            CDBFolderSqlite *folder = new CDBFolderSqlite(filename, name, this);
+            folder->setToolTip(eColumnName, folder->getDBInfo());
+        }
+        if(type == "MySQL")
+        {
+            QString server  = cfg.value("server",   "").toString();
+            QString port    = cfg.value("port",     "").toString();
+            QString user    = cfg.value("user",     "").toString();
+            QString passwd  = cfg.value("passwd",   "").toString();
+            bool noPasswd   = cfg.value("noPasswd", false).toBool();
 
-    const int N = names.count();
-    for(int i = 0; i < N; i++)
-    {
-        addDatabase(names[i], files[i]);
+            if(server.isEmpty() || user.isEmpty())
+            {
+                cfg.endGroup(); // name
+                continue;
+            }
+            CDBFolderMysql *folder = new CDBFolderMysql(server, port, user, passwd, noPasswd, name, this);
+            folder->setToolTip(eColumnName, folder->getDBInfo());
+        }
+        cfg.endGroup(); // name
     }
+    cfg.endGroup(); // Entries
+    cfg.endGroup(); // Database
+
 
     menuNone            = new QMenu(this);
     actionAddDatabase   = menuNone->addAction(QIcon("://icons/32x32/Add.png"), tr("Add Database"), this, SLOT(slotAddDatabase()));
@@ -83,6 +123,7 @@ CGisListDB::CGisListDB(QWidget *parent)
 
     menuDatabase        = new QMenu(this);
     menuDatabase->addAction(actionAddFolder);
+    actionUpdate        = menuDatabase->addAction(QIcon("://icons/32x32/DatabaseSync.png"), tr("Sync. with Database"), this, SLOT(slotUpdateDatabase()));
     actionDelDatabase   = menuDatabase->addAction(QIcon("://icons/32x32/DeleteOne.png"), tr("Remove Database"), this, SLOT(slotDelDatabase()));
 
     menuLostFound       = new QMenu(this);
@@ -92,46 +133,96 @@ CGisListDB::CGisListDB(QWidget *parent)
     actionDelLostFoundItem  = menuLostFoundItem->addAction(QIcon("://icons/32x32/DeleteOne.png"), tr("Delete Item"), this, SLOT(slotDelLostFoundItem()));
 
 
-    connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
-    connect(this, SIGNAL(itemExpanded(QTreeWidgetItem*)), this, SLOT(slotItemExpanded(QTreeWidgetItem*)));
-    connect(this, SIGNAL(itemChanged(QTreeWidgetItem*,int)), this, SLOT(slotItemChanged(QTreeWidgetItem*,int)));
+    connect(this, &CGisListDB::customContextMenuRequested, this, &CGisListDB::slotContextMenu);
+    connect(this, &CGisListDB::itemExpanded,               this, &CGisListDB::slotItemExpanded);
+    connect(this, &CGisListDB::itemChanged,                this, &CGisListDB::slotItemChanged);
+
+    bool enabled = cfg.value("Database/listenUpdate", false).toBool();
+    if(enabled)
+    {
+        quint16 port = cfg.value("Database/port", UDP_PORT).toUInt();
+
+        socket = new QUdpSocket(this);
+        if(!socket->bind(QHostAddress::Any, port, QUdpSocket::ShareAddress))
+        {
+            qDebug() << socket->errorString();
+        }
+        connect(socket, &QUdpSocket::readyRead, this, &CGisListDB::slotReadyRead);
+    }
 }
 
 CGisListDB::~CGisListDB()
 {
-    SETTINGS;
+    saveDatabaseConfiguration();
+}
+
+void CGisListDB::saveDatabaseConfiguration()
+{
     QStringList names;
-    QStringList files;
+
+    SETTINGS;
+    cfg.beginGroup("Database");
+
+    cfg.beginGroup("Entries");
+    cfg.remove("");
 
     const int N = topLevelItemCount();
     for(int n = 0; n < N; n++)
     {
-        CDBFolderDatabase * database = dynamic_cast<CDBFolderDatabase*>(topLevelItem(n));
-        if(database)
+        CDBFolderSqlite * sqlite = dynamic_cast<CDBFolderSqlite*>(topLevelItem(n));
+        if(sqlite)
+        {
+            QString name = sqlite->text(CGisListDB::eColumnName);
+            names << name;
+
+            cfg.beginGroup(name);
+            cfg.setValue("type", "SQLite");
+            cfg.setValue("filename", sqlite->getFilename());
+            cfg.endGroup(); // name
+        }
+        CDBFolderMysql * mysql = dynamic_cast<CDBFolderMysql*>(topLevelItem(n));
+        if(mysql)
         {
-            names << database->text(CGisListDB::eColumnName);
-            files << database->getFilename();
+            QString name = mysql->text(CGisListDB::eColumnName);
+            names << name;
+
+            cfg.beginGroup(name);
+            cfg.setValue("type", "MySQL");
+            cfg.setValue("server", mysql->getServer());
+            cfg.setValue("port", mysql->getPort());
+            cfg.setValue("user", mysql->getUser());
+            cfg.setValue("passwd", mysql->getPasswd());
+            cfg.setValue("noPasswd",mysql->hasNoPasswd());
+            cfg.endGroup(); // name
         }
     }
 
-    cfg.setValue("Database/names", names);
-    cfg.setValue("Database/files", files);
+    cfg.endGroup(); // Entries
+    cfg.setValue("names", names);
+    cfg.endGroup(); // Database
 }
 
-
-CDBFolderDatabase * CGisListDB::getDataBase(const QString& name)
+IDBFolderSql * CGisListDB::getDataBase(const QString& name, const QString &host)
 {
     CGisListDBEditLock lock(true, this, "getDataBase");
     const int N = topLevelItemCount();
     for(int n = 0; n < N; n++)
     {
-        CDBFolderDatabase * database = dynamic_cast<CDBFolderDatabase*>(topLevelItem(n));
+        IDBFolderSql * database = dynamic_cast<IDBFolderSql*>(topLevelItem(n));
         if(database && (database->getDBName() == name))
         {
+            if(!host.isEmpty())
+            {
+                if(database->getDBHost() != host)
+                {
+                    continue;
+                }
+            }
+
             return database;
         }
     }
-    return 0;
+    return nullptr;
 }
 
 bool CGisListDB::hasDatabase(const QString& name)
@@ -140,7 +231,7 @@ bool CGisListDB::hasDatabase(const QString& name)
     const int N = topLevelItemCount();
     for(int i = 0; i < N; i++)
     {
-        CDBFolderDatabase * folder = dynamic_cast<CDBFolderDatabase*>(topLevelItem(i));
+        IDBFolderSql * folder = dynamic_cast<IDBFolderSql*>(topLevelItem(i));
         if(folder && (folder->text(CGisListDB::eColumnName) == name))
         {
             return true;
@@ -157,14 +248,15 @@ bool CGisListDB::event(QEvent * e)
     case eEvtW2DAckInfo:
     {
         CGisListDBEditLock lock(true, this, "event");
-        CEvtW2DAckInfo * evt        = (CEvtW2DAckInfo*)e;
-        CDBFolderDatabase * folder  = getDataBase(evt->db);
+        CEvtW2DAckInfo * evt    = (CEvtW2DAckInfo*)e;
+        IDBFolderSql * folder   = getDataBase(evt->db, evt->host);
         if(folder)
         {
             folder->update(evt);
             if(evt->updateLostFound)
             {
                 folder->updateLostFound();
+                folder->announceChange();
             }
         }
         e->accept();
@@ -174,8 +266,8 @@ bool CGisListDB::event(QEvent * e)
     case eEvtW2DCreate:
     {
         CGisListDBEditLock lock(true, this, "event");
-        CEvtW2DCreate * evt         = (CEvtW2DCreate*)e;
-        CDBFolderDatabase * db  = getDataBase(evt->db);
+        CEvtW2DCreate * evt = (CEvtW2DCreate*)e;
+        IDBFolderSql * db   = getDataBase(evt->db, evt->host);
         if(db)
         {
             quint64 idChild = 0;
@@ -191,10 +283,17 @@ bool CGisListDB::event(QEvent * e)
 
             if(idChild)
             {
+                if(folder)
+                {
+                    folder->setChildIndicatorPolicy(QTreeWidgetItem::ShowIndicator);
+                }
+
                 evt->idChild = idChild;
                 CEvtD2WShowFolder * evt1 = new CEvtD2WShowFolder(idChild, evt->db);
                 CGisWidget::self().postEventForWks(evt1);
             }
+
+            db->announceChange();
         }
         e->accept();
         return true;
@@ -214,10 +313,18 @@ void CGisListDB::slotContextMenu(const QPoint& point)
         return;
     }
 
-    CDBFolderDatabase * database = dynamic_cast<CDBFolderDatabase*>(currentItem());
+    actionUpdate->setEnabled(true);
+    actionAddFolder->setEnabled(true);
+
+    IDBFolderSql * database = dynamic_cast<IDBFolderSql*>(currentItem());
     if(database)
     {
+        bool enabled = database->getDb().isOpen();
+        actionUpdate->setEnabled(enabled);
+        actionAddFolder->setEnabled(enabled);
+
         menuDatabase->exec(p);
+
         return;
     }
 
@@ -254,26 +361,56 @@ void CGisListDB::slotContextMenu(const QPoint& point)
 
 void CGisListDB::slotAddDatabase()
 {
-    QString name, filename("-");
-    CSetupDatabase dlg(name, filename, *this);
+    CSetupDatabase dlg(*this);
     if(dlg.exec() != QDialog::Accepted)
     {
         return;
     }
 
-    addDatabase(name, filename);
+    QString name = dlg.getName();
+
+    IDBFolder * folder = nullptr;
+    bool isUsable = true;
+
+    if(dlg.isSqlite())
+    {
+        QString filename = dlg.getFilename();
+        CDBFolderSqlite *sfolder = new CDBFolderSqlite(filename, name, this);
+        sfolder->setToolTip(eColumnName, sfolder->getDBInfo());
+        folder = sfolder;
+    }
+    else if(dlg.isMysql())
+    {
+        QString server  = dlg.getServer();
+        QString port    = dlg.getPort();
+        QString user    = dlg.getUser();
+        QString passwd  = dlg.getPasswd();
+        bool noPasswd   = dlg.noPasswd();
+
+        CDBFolderMysql *mfolder = new CDBFolderMysql(server, port, user, passwd, noPasswd, name, this);
+        mfolder->setToolTip(eColumnName, mfolder->getDBInfo());
+        isUsable = mfolder->isUsable();
+        folder = mfolder;
+    }
+    else
+    {
+        return;
+    }
+
+    if(isUsable)
+    {
+        folder->setChildIndicatorPolicy(QTreeWidgetItem::ShowIndicator);
+    }
+
     emit sigChanged();
-}
 
-void CGisListDB::addDatabase(const QString& name, const QString& filename)
-{
-    new CDBFolderDatabase(filename, name, this);
+    saveDatabaseConfiguration();
 }
 
 void CGisListDB::slotDelDatabase()
 {
-    CDBFolderDatabase * folder = dynamic_cast<CDBFolderDatabase*>(currentItem());
-    if(folder == 0)
+    IDBFolderSql *folder = dynamic_cast<IDBFolderSql*>(currentItem());
+    if(nullptr == folder)
     {
         return;
     }
@@ -287,14 +424,16 @@ void CGisListDB::slotDelDatabase()
     delete folder;
 
     emit sigChanged();
+
+    saveDatabaseConfiguration();
 }
 
 void CGisListDB::slotAddFolder()
 {
     CGisListDBEditLock lock(false, this, "slotAddFolder");
 
-    IDBFolder * folder = dynamic_cast<IDBFolder*>(currentItem());
-    if(folder == 0)
+    IDBFolder *folder = dynamic_cast<IDBFolder*>(currentItem());
+    if(nullptr == folder)
     {
         return;
     }
@@ -307,14 +446,29 @@ void CGisListDB::slotAddFolder()
         return;
     }
 
-    folder->addFolder(type, name);
+    if(folder->addFolder(type, name) == 0)
+    {
+        return;
+    }
+
+    if(!folder->isExpanded())
+    {
+        folder->setChildIndicatorPolicy(QTreeWidgetItem::ShowIndicator);
+        folder->setExpanded(true);
+    }
+
+    IDBFolderSql * dbfolder = folder->getDBFolder();
+    if(dbfolder)
+    {
+        dbfolder->announceChange();
+    }
 }
 
 void CGisListDB::slotDelFolder()
 {
     CGisListDBEditLock lock(false, this, "slotDelFolder");
     IDBFolder * folder = dynamic_cast<IDBFolder*>(currentItem());
-    if(folder == 0)
+    if(folder == nullptr)
     {
         return;
     }
@@ -325,7 +479,7 @@ void CGisListDB::slotDelFolder()
         return;
     }
 
-    CDBFolderDatabase * dbfolder = folder->getDBFolder();
+    IDBFolderSql * dbfolder = folder->getDBFolder();
 
     folder->remove();
     delete folder;
@@ -333,6 +487,7 @@ void CGisListDB::slotDelFolder()
     if(dbfolder)
     {
         dbfolder->updateLostFound();
+        dbfolder->announceChange();
     }
 }
 
@@ -340,7 +495,7 @@ void CGisListDB::slotDelLostFound()
 {
     CGisListDBEditLock lock(false, this, "slotDelLostFound");
     CDBFolderLostFound * folder = dynamic_cast<CDBFolderLostFound*>(currentItem());
-    if(folder == 0)
+    if(folder == nullptr)
     {
         return;
     }
@@ -354,6 +509,12 @@ void CGisListDB::slotDelLostFound()
     CCanvas::setOverrideCursor(Qt::WaitCursor, "slotDelLostFound");
     folder->clear();
     CCanvas::restoreOverrideCursor("slotDelLostFound");
+
+    IDBFolderSql * dbfolder = folder->getDBFolder();
+    if(dbfolder)
+    {
+        dbfolder->announceChange();
+    }
 }
 
 void CGisListDB::slotDelLostFoundItem()
@@ -373,15 +534,21 @@ void CGisListDB::slotDelLostFoundItem()
     foreach(QTreeWidgetItem * item, items)
     {
         CDBItem * dbItem            = dynamic_cast<CDBItem*>(item);
+        if(dbItem == nullptr)
+        {
+            continue;
+        }
+
         CDBFolderLostFound * folder = dynamic_cast<CDBFolderLostFound*>(dbItem->parent());
+        if(folder == nullptr)
+        {
+            continue;
+        }
 
-        if(folder && dbItem)
+        if(folder->delItem(dbItem))
         {
-            if(folder->delItem(dbItem))
-            {
-                delItems << dbItem;
-                folders << folder;
-            }
+            delItems << dbItem;
+            folders << folder;
         }
     }
 
@@ -389,6 +556,12 @@ void CGisListDB::slotDelLostFoundItem()
     foreach(CDBFolderLostFound* folder, folders)
     {
         folder->update();
+
+        IDBFolderSql * dbfolder = folder->getDBFolder();
+        if(dbfolder)
+        {
+            dbfolder->announceChange();
+        }
     }
     CCanvas::restoreOverrideCursor("slotDelLostFoundItem");
 }
@@ -399,7 +572,7 @@ void CGisListDB::slotItemExpanded(QTreeWidgetItem * item)
     CGisListDBEditLock lock(true, this, "slotItemExpanded");
 
     IDBFolder * folder = dynamic_cast<IDBFolder*>(item);
-    if(folder == 0)
+    if(folder == nullptr)
     {
         return;
     }
@@ -413,28 +586,30 @@ void CGisListDB::slotDelItem()
 
     int last = QMessageBox::NoButton;
 
+    QSet<IDBFolder*>        folders;
     QList<QTreeWidgetItem*> dbItems;
-    QSet<CDBFolderDatabase*> dbFolders;
+    QSet<IDBFolderSql*>     dbFolders;
+
 
     QList<QTreeWidgetItem*> items = selectedItems();
     foreach(QTreeWidgetItem * item, items)
     {
         CDBItem * dbItem = dynamic_cast<CDBItem*>(item);
-        if(dbItem == 0)
+        if(dbItem == nullptr)
         {
             continue;
         }
 
         IDBFolder * folder = dynamic_cast<IDBFolder*>(dbItem->parent());
-        if(folder == 0)
+        if(folder == nullptr)
         {
             continue;
         }
 
         if(last != QMessageBox::YesToAll)
         {
-            QString msg = QObject::tr("Are you sure you want to delete '%1' from folder '%2'?").arg(dbItem->text(CGisListDB::eColumnName)).arg(folder->text(CGisListDB::eColumnName));
-            last = QMessageBox::question(CMainWindow::getBestWidgetForParent(), QObject::tr("Delete..."), msg, QMessageBox::YesToAll|QMessageBox::Cancel|QMessageBox::Ok|QMessageBox::No, QMessageBox::Ok);
+            QString msg = tr("Are you sure you want to delete '%1' from folder '%2'?").arg(dbItem->text(CGisListDB::eColumnName)).arg(folder->text(CGisListDB::eColumnName));
+            last = QMessageBox::question(CMainWindow::getBestWidgetForParent(), tr("Delete..."), msg, QMessageBox::YesToAll|QMessageBox::Cancel|QMessageBox::Ok|QMessageBox::No, QMessageBox::Ok);
         }
         if(last == QMessageBox::No)
         {
@@ -446,14 +621,23 @@ void CGisListDB::slotDelItem()
         }
 
         dbItem->remove();
+
+        folders << folder;
         dbItems << dbItem;
         dbFolders << folder->getDBFolder();
     }
 
     qDeleteAll(dbItems);
-    foreach(CDBFolderDatabase * dbFolder, dbFolders)
+    foreach(IDBFolderSql * dbFolder, dbFolders)
     {
         dbFolder->updateLostFound();
+        dbFolder->announceChange();
+    }
+
+    // tell all folders to update their statistics and waypoint/track correlations
+    foreach(IDBFolder * folder, folders)
+    {
+        folder->updateItemsOnWks();
     }
 }
 
@@ -468,18 +652,104 @@ void CGisListDB::slotItemChanged(QTreeWidgetItem * item, int column)
     if(column == CGisListDB::eColumnCheckbox)
     {
         IDBFolder * folder = dynamic_cast<IDBFolder*>(item);
-        if(folder != 0)
+        if(folder != nullptr)
         {
             folder->toggle();
+
+            // tell folder to update its statistics and waypoint/track correlations
+            folder->updateItemsOnWks();
             return;
         }
 
         CDBItem * dbItem = dynamic_cast<CDBItem*>(item);
-        if(dbItem != 0)
+        if(dbItem != nullptr)
         {
             dbItem->toggle();
+
+            // tell folder to update its statistics and waypoint/track correlations
+            folder = dynamic_cast<IDBFolder*>(dbItem->parent());
+            if(folder)
+            {
+                folder->updateItemsOnWks();
+            }
             return;
         }
     }
 }
 
+void CGisListDB::slotUpdateDatabase()
+{
+    CGisListDBEditLock lock(true, this, "slotUpdateDatabase");
+
+    QList<QTreeWidgetItem*> items = selectedItems();
+    foreach(QTreeWidgetItem* item, items)
+    {
+        IDBFolder * folder = dynamic_cast<IDBFolder*>(item);
+        if(folder == nullptr)
+        {
+            continue;
+        }
+
+        if(folder->type() == IDBFolder::eTypeDatabase)
+        {
+            folder->update();
+
+            CEvtD2WReload * evt = new CEvtD2WReload(folder->getDBName());
+            CGisWidget::self().postEventForWks(evt);
+        }
+    }
+}
+
+
+void CGisListDB::slotReadyRead()
+{
+    CGisListDBEditLock lock(true, this, "slotReadyRead");
+
+    while(socket->hasPendingDatagrams())
+    {
+        QByteArray datagram;
+        datagram.resize(socket->pendingDatagramSize());
+        QHostAddress sender;
+        quint16 senderPort;
+
+        socket->readDatagram(datagram.data(), datagram.size(), &sender, &senderPort);
+
+        QDataStream stream(&datagram, QIODevice::ReadOnly);
+        stream.setByteOrder(QDataStream::LittleEndian);
+        stream.setVersion(QDataStream::Qt_5_2);
+
+        quint32 msgId;
+        quint32 tan;
+        qint32 id;
+        QString driver;
+        QString dbName;
+        QString dbHost;
+
+        stream >> msgId >> tan >> id >> driver >> dbName >> dbHost;
+
+        if((lastTan == tan) || (msgId != 0))
+        {
+            continue;
+        }
+
+        lastTan = tan;
+
+        // check for our own message
+        if(id == CMainWindow::self().id)
+        {
+            continue;
+        }
+
+        qDebug() << "Receive database update from:" << sender << senderPort;
+        qDebug() << "with" << "tan:" << lastTan << "app ID:" << id << "driver:" << driver << "DB name:" << dbName << "DB host:" << dbHost;
+
+        IDBFolderSql * folder = getDataBase(dbName, dbHost);
+        if(folder)
+        {
+            folder->update();
+
+            CEvtD2WReload * evt = new CEvtD2WReload(folder->getDBName());
+            CGisWidget::self().postEventForWks(evt);
+        }
+    }
+}
diff --git a/src/gis/CGisListDB.h b/src/gis/CGisListDB.h
index da99f75..1d108a6 100644
--- a/src/gis/CGisListDB.h
+++ b/src/gis/CGisListDB.h
@@ -22,11 +22,10 @@
 #include <QSqlDatabase>
 #include <QTreeWidget>
 
-#include <gis/db/IDBFolder.h>
-
 struct action_t;
 class QMenu;
-class CDBFolderDatabase;
+class IDBFolderSql;
+class QUdpSocket;
 
 class CGisListDB : public QTreeWidget
 {
@@ -39,10 +38,11 @@ public:
     {
         eColumnCheckbox = 0
         ,eColumnName = 1
+        ,eColumnTime = 2
     };
 
     bool hasDatabase(const QString& name);
-    bool event(QEvent * e);
+    bool event(QEvent * e) override;
 
 signals:
     void sigChanged();
@@ -58,12 +58,15 @@ private slots:
     void slotAddDatabase();
     void slotDelDatabase();
     void slotDelItem();
+    void slotUpdateDatabase();
+
+    void slotReadyRead();
 
 private:
     friend class CGisListDBEditLock;
 
-    CDBFolderDatabase *getDataBase(const QString& name);
-    void addDatabase(const QString& name, const QString& filename);
+    IDBFolderSql *getDataBase(const QString& name, const QString& host);
+    void saveDatabaseConfiguration();
 
     int isInternalEdit = 0;
 
@@ -76,6 +79,7 @@ private:
 
     QMenu * menuDatabase;
     QAction * actionDelDatabase;
+    QAction * actionUpdate;
 
     QMenu * menuItem;
     QAction * actionDelItem;
@@ -86,8 +90,9 @@ private:
     QMenu * menuLostFoundItem;
     QAction * actionDelLostFoundItem;
 
+    QUdpSocket * socket;
 
-//        CDBFolderDatabase *  folderDatabase;
+    quint32 lastTan;
 };
 
 #endif //CGISLISTDB_H
diff --git a/src/gis/CGisListWks.cpp b/src/gis/CGisListWks.cpp
index 6dcbb72..c8be2a8 100644
--- a/src/gis/CGisListWks.cpp
+++ b/src/gis/CGisListWks.cpp
@@ -37,6 +37,7 @@
 #include "gis/db/CSelectDBFolder.h"
 #include "gis/db/CSetupFolder.h"
 #include "gis/db/macros.h"
+#include "gis/fit/CFitProject.h"
 #include "gis/gpx/CGpxProject.h"
 #include "gis/ovl/CGisItemOvlArea.h"
 #include "gis/prj/IGisProject.h"
@@ -44,6 +45,7 @@
 #include "gis/rte/CCreateRouteFromWpt.h"
 #include "gis/rte/CGisItemRte.h"
 #include "gis/search/CSearchGoogle.h"
+#include "gis/slf/CSlfProject.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
 #include "helpers/CAppSetup.h"
@@ -56,8 +58,9 @@
 #include <QtSql>
 #include <QtWidgets>
 
+
 #undef  DB_VERSION
-#define DB_VERSION 2
+#define DB_VERSION 3
 
 class CGisListWksEditLock
 {
@@ -83,7 +86,6 @@ private:
     bool waitCursor;
 };
 
-
 CGisListWks::CGisListWks(QWidget *parent)
     : QTreeWidget(parent)
 {
@@ -93,43 +95,52 @@ CGisListWks::CGisListWks(QWidget *parent)
     db.open();
     configDB();
 
-    menuProjectWks  = new QMenu(this);
-    actionEditPrj   = menuProjectWks->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit.."), this, SLOT(slotEditPrj()));
-    actionShowOnMap = menuProjectWks->addAction(QIcon("://icons/32x32/ShowAll.png"),tr("Show on Map"), this, SLOT(slotShowOnMap()));
-    actionHideFrMap = menuProjectWks->addAction(QIcon("://icons/32x32/ShowNone.png"),tr("Hide from Map"), this, SLOT(slotHideFrMap()));
+    menuProjectWks   = new QMenu(this);
+    actionEditPrj    = menuProjectWks->addAction(QIcon("://icons/32x32/EditDetails.png"), tr("Edit.."         ), this, SLOT(slotEditPrj()));
+    actionShowOnMap  = menuProjectWks->addAction(QIcon("://icons/32x32/ShowAll.png"    ), tr("Show on Map"    ), this, SLOT(slotShowOnMap()));
+    actionHideFrMap  = menuProjectWks->addAction(QIcon("://icons/32x32/ShowNone.png"   ), tr("Hide from Map"  ), this, SLOT(slotHideFrMap()));
+
     menuProjectWks->addSeparator();
-    actionSave      = menuProjectWks->addAction(QIcon("://icons/32x32/SaveGIS.png"),tr("Save"), this, SLOT(slotSaveProject()));
-    actionSaveAs    = menuProjectWks->addAction(QIcon("://icons/32x32/SaveGISAs.png"),tr("Save As..."), this, SLOT(slotSaveAsProject()));
+    actionSave       = menuProjectWks->addAction(QIcon("://icons/32x32/SaveGIS.png"    ), tr("Save"           ), this, SLOT(slotSaveProject()));
+    actionSaveAs     = menuProjectWks->addAction(QIcon("://icons/32x32/SaveGISAs.png"  ), tr("Save As..."     ), this, SLOT(slotSaveAsProject()));
+
     menuProjectWks->addSeparator();
-    actionSyncWksDev= menuProjectWks->addAction(QIcon("://icons/32x32/Device.png"),tr("Send to Devices"), this, SLOT(slotSyncWksDev()));
+    actionSyncWksDev = menuProjectWks->addAction(QIcon("://icons/32x32/Device.png"     ), tr("Send to Devices"), this, SLOT(slotSyncWksDev()));
+    actionSyncDB     = menuProjectWks->addAction(QIcon("://icons/32x32/DatabaseSync.png"      ), tr("Sync. with Database"), this, SLOT(slotSyncDB()));
+
     menuProjectWks->addSeparator();
-    actionCloseProj = menuProjectWks->addAction(QIcon("://icons/32x32/Close.png"),tr("Close"), this, SLOT(slotCloseProject()));
+    actionCloseProj = menuProjectWks->addAction(QIcon("://icons/32x32/Close.png"       ), tr("Close"          ), this, SLOT(slotCloseProject()));
 
     menuProjectDev  = new QMenu(this);
     menuProjectDev->addAction(actionEditPrj);
+    menuProjectDev->addAction(actionShowOnMap);
+    menuProjectDev->addAction(actionHideFrMap);
+    menuProjectDev->addSeparator();
     menuProjectDev->addAction(actionSaveAs);
     menuProjectDev->addAction(actionSave);
+    menuProjectDev->addSeparator();
     actionSyncDevWks= menuProjectDev->addAction(QIcon("://icons/32x32/Device.png"),tr("Update Project on Device"), this, SLOT(slotSyncDevWks()));
-    actionDelProj   = menuProjectDev->addAction(QIcon("://icons/32x32/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteProject()));
+    menuProjectDev->addSeparator();
+    actionDelProj   = menuProjectDev->addAction(QIcon("://icons/32x32/DeleteOne.png"),tr("Delete"),                this, SLOT(slotDeleteProject()));
 
     menuProjectTrash= new QMenu(this);
     menuProjectTrash->addAction(actionSaveAs);
     menuProjectTrash->addAction(actionCloseProj);
 
-    connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
-    connect(this, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(slotItemDoubleClicked(QTreeWidgetItem*,int)));
-    connect(this, SIGNAL(itemChanged(QTreeWidgetItem*,int)), this, SLOT(slotItemChanged(QTreeWidgetItem*,int)));
+    connect(this, &CGisListWks::customContextMenuRequested, this, &CGisListWks::slotContextMenu);
+    connect(this, &CGisListWks::itemDoubleClicked,          this, &CGisListWks::slotItemDoubleClicked);
+    connect(this, &CGisListWks::itemChanged,                this, &CGisListWks::slotItemChanged);
 
-    menuItemTrk     = new QMenu(this);
+    menuItemTrk      = new QMenu(this);
     actionEditDetails = menuItemTrk->addAction(QIcon("://icons/32x32/EditDetails.png"),tr("Edit..."), this, SLOT(slotEditItem()));
-    actionCopyItem  = menuItemTrk->addAction(QIcon("://icons/32x32/Copy.png"),tr("Copy to..."), this, SLOT(slotCopyItem()));
+    actionCopyItem    = menuItemTrk->addAction(QIcon("://icons/32x32/Copy.png"),tr("Copy to..."),     this, SLOT(slotCopyItem()));
     menuItemTrk->addSeparator();
-    actionFocusTrk  = menuItemTrk->addAction(QIcon("://icons/32x32/TrkProfile.png"),tr("Track Profile"));
+    actionFocusTrk   = menuItemTrk->addAction(QIcon("://icons/32x32/TrkProfile.png"),tr("Track Profile"));
     actionFocusTrk->setCheckable(true);
-    actionRangeTrk  = menuItemTrk->addAction(QIcon("://icons/32x32/SelectRange.png"),tr("Select Range"), this, SLOT(slotRangeTrk()));
-    actionEditTrk   = menuItemTrk->addAction(QIcon("://icons/32x32/LineMove.png"),tr("Edit Track Points"), this, SLOT(slotEditTrk()));
-    actionReverseTrk = menuItemTrk->addAction(QIcon("://icons/32x32/Reverse.png"),tr("Reverse Track"), this, SLOT(slotReverseTrk()));
-    actionCombineTrk = menuItemTrk->addAction(QIcon("://icons/32x32/Combine.png"),tr("Combine Tracks"), this, SLOT(slotCombineTrk()));
+    actionRangeTrk   = menuItemTrk->addAction(QIcon("://icons/32x32/SelectRange.png"), tr("Select Range"           ), this, SLOT(slotRangeTrk()));
+    actionEditTrk    = menuItemTrk->addAction(QIcon("://icons/32x32/LineMove.png"),    tr("Edit Track Points"      ), this, SLOT(slotEditTrk()));
+    actionReverseTrk = menuItemTrk->addAction(QIcon("://icons/32x32/Reverse.png"),     tr("Reverse Track"          ), this, SLOT(slotReverseTrk()));
+    actionCombineTrk = menuItemTrk->addAction(QIcon("://icons/32x32/Combine.png"),     tr("Combine Tracks"         ), this, SLOT(slotCombineTrk()));
     menuItemTrk->addSeparator();
     actionDelete    = menuItemTrk->addAction(QIcon("://icons/32x32/DeleteOne.png"),tr("Delete"), this, SLOT(slotDeleteItem()));
 
@@ -137,10 +148,10 @@ CGisListWks::CGisListWks(QWidget *parent)
     menuItemWpt->addAction(actionEditDetails);
     menuItemWpt->addAction(actionCopyItem);
     menuItemWpt->addSeparator();
-    actionBubbleWpt = menuItemWpt->addAction(QIcon("://icons/32x32/Bubble.png"),tr("Show Bubble"), this, SLOT(slotBubbleWpt()));
+    actionBubbleWpt = menuItemWpt->addAction(QIcon("://icons/32x32/Bubble.png"),  tr("Show Bubble"),       this, SLOT(slotBubbleWpt()));
     actionBubbleWpt->setCheckable(true);
-    actionMoveWpt   = menuItemWpt->addAction(QIcon("://icons/32x32/WptMove.png"),tr("Move Waypoint"), this, SLOT(slotMoveWpt()));
-    actionProjWpt   = menuItemWpt->addAction(QIcon("://icons/32x32/WptProj.png"),tr("Proj. Waypoint..."), this, SLOT(slotProjWpt()));
+    actionMoveWpt   = menuItemWpt->addAction(QIcon("://icons/32x32/WptMove.png"), tr("Move Waypoint"),     this, SLOT(slotMoveWpt()));
+    actionProjWpt   = menuItemWpt->addAction(QIcon("://icons/32x32/WptProj.png"), tr("Proj. Waypoint..."), this, SLOT(slotProjWpt()));
     menuItemWpt->addSeparator();
     menuItemWpt->addAction(actionDelete);
 
@@ -150,9 +161,9 @@ CGisListWks::CGisListWks(QWidget *parent)
     menuItemRte->addSeparator();
     actionFocusRte  = menuItemRte->addAction(QIcon("://icons/32x32/RteInstr.png"), tr("Route Instructions"));
     actionFocusRte->setCheckable(true);
-    actionCalcRte   = menuItemRte->addAction(QIcon("://icons/32x32/Apply.png"), tr("Calculate Route"), this, SLOT(slotCalcRte()));
-    actionResetRte  = menuItemRte->addAction(QIcon("://icons/32x32/Reset.png"), tr("Reset Route"), this, SLOT(slotResetRte()));
-    actionEditRte   = menuItemRte->addAction(QIcon("://icons/32x32/LineMove.png"), tr("Edit Route"), this, SLOT(slotEditRte()));
+    actionCalcRte   = menuItemRte->addAction(QIcon("://icons/32x32/Apply.png"),    tr("Calculate Route"), this, SLOT(slotCalcRte()));
+    actionResetRte  = menuItemRte->addAction(QIcon("://icons/32x32/Reset.png"),    tr("Reset Route"),     this, SLOT(slotResetRte()));
+    actionEditRte   = menuItemRte->addAction(QIcon("://icons/32x32/LineMove.png"), tr("Edit Route"),      this, SLOT(slotEditRte()));
     menuItemRte->addSeparator();
     menuItemRte->addAction(actionDelete);
 
@@ -173,13 +184,13 @@ CGisListWks::CGisListWks(QWidget *parent)
     menuItem->addAction(actionDelete);
 
 
-    connect(actionFocusTrk, SIGNAL(triggered(bool)), this, SLOT(slotFocusTrk(bool)));
-    connect(actionFocusRte, SIGNAL(triggered(bool)), this, SLOT(slotFocusRte(bool)));
-    connect(qApp, SIGNAL(aboutToQuit ()), this, SLOT(slotSaveWorkspace()));
+    connect(actionFocusTrk, &QAction::triggered,        this, &CGisListWks::slotFocusTrk);
+    connect(actionFocusRte, &QAction::triggered,        this, &CGisListWks::slotFocusRte);
+    connect(qApp,           &QApplication::aboutToQuit, this, &CGisListWks::slotSaveWorkspace);
 
     SETTINGS;
     saveOnExit  = cfg.value("Database/saveOnExit", saveOnExit).toBool();
-    saveEvery   = cfg.value("Database/saveEvery", saveEvery).toInt();
+    saveEvery   = cfg.value("Database/saveEvery",  saveEvery).toInt();
 
     if(saveOnExit && (saveEvery > 0))
     {
@@ -188,20 +199,16 @@ CGisListWks::CGisListWks(QWidget *parent)
 
 #ifdef Q_OS_LINUX
     deviceWatcher = new CDeviceWatcherLinux(this);
-    connect(deviceWatcher, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+    connect(deviceWatcher, &CDeviceWatcherLinux::sigChanged, this, &CGisListWks::sigChanged);
 #endif
 #ifdef Q_OS_MAC
-    CDeviceWatcherMac* pWatcher = new CDeviceWatcherMac(this);
-    deviceWatcher = pWatcher;
-    connect(deviceWatcher, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
-    connect(qApp, SIGNAL(aboutToQuit()), deviceWatcher, SLOT(slotEndListing()));
+    deviceWatcher = new CDeviceWatcherMac(this);
+    connect(deviceWatcher, &CDeviceWatcherMac::sigChanged, this, &CGisListWks::sigChanged);
 #endif
 #ifdef Q_OS_WIN
     deviceWatcher = new CDeviceWatcherWindows(this);
-    connect(deviceWatcher, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
+    connect(deviceWatcher, &CDeviceWatcherWindows::sigChanged, this, &CGisListWks::sigChanged);
 #endif
-
-    QTimer::singleShot(500, this, SLOT(slotLoadWorkspace()));
 }
 
 CGisListWks::~CGisListWks()
@@ -211,30 +218,22 @@ CGisListWks::~CGisListWks()
 void CGisListWks::configDB()
 {
     QSqlQuery query(db);
-    if(!query.exec("PRAGMA locking_mode=EXCLUSIVE"))
-    {
-        return;
-    }
 
-    if(!query.exec("PRAGMA synchronous=OFF"))
-    {
-        return;
-    }
+    QUERY_RUN("PRAGMA locking_mode=EXCLUSIVE", return )
+    QUERY_RUN("PRAGMA synchronous=OFF",        return )
+    QUERY_RUN("PRAGMA temp_store=MEMORY",      return )
+    QUERY_RUN("PRAGMA default_cache_size=50",  return )
+    QUERY_RUN("PRAGMA page_size=8192",         return )
 
-    if(!query.exec("PRAGMA temp_store=MEMORY"))
+    // When migrating the database these tables are used.
+    // Due to caching they can't be dropped right after the
+    // migration. That is why we look for them on startup.
+    // And delete them as a second chance.
+    if(query.exec("select * from tmp_workspace"))
     {
-        return;
+        QUERY_RUN("DROP TABLE tmp_workspace;", return );
     }
 
-    if(!query.exec("PRAGMA default_cache_size=50"))
-    {
-        return;
-    }
-
-    if(!query.exec("PRAGMA page_size=8192"))
-    {
-        return;
-    }
 
     if(!query.exec("SELECT version FROM versioninfo"))
     {
@@ -265,20 +264,15 @@ void CGisListWks::initDB()
         QUERY_EXEC();
     }
 
-    if(!query.exec( "CREATE TABLE workspace ("
-                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
-                    "type           INTEGER NOT NULL,"
-                    "name           TEXT NOT NULL,"
-                    "key            TEXT NOT NULL,"
-                    "changed        BOOLEAN DEFAULT FALSE,"
-                    "visible        BOOLEAN DEFAULT TRUE,"
-                    "data           BLOB NOT NULL"
-
-                    ")"))
-    {
-        qDebug() << query.lastQuery();
-        qDebug() << query.lastError();
-    }
+    QUERY_RUN("CREATE TABLE workspace ("
+              "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
+              "type           INTEGER NOT NULL,"
+              "name           TEXT NOT NULL,"
+              "keyqms         TEXT NOT NULL,"
+              "changed        BOOLEAN DEFAULT FALSE,"
+              "visible        BOOLEAN DEFAULT TRUE,"
+              "data           BLOB NOT NULL"
+              ")", NO_CMD)
 }
 
 void CGisListWks::migrateDB(int version)
@@ -290,7 +284,10 @@ void CGisListWks::migrateDB(int version)
     {
         migrateDB1to2();
     }
-//  if(version < 3) { migrateDB2to3(); }
+    if(version < 3)
+    {
+        migrateDB2to3();
+    }
 
     // save the new version to the database
     QSqlQuery query(db);
@@ -306,22 +303,38 @@ void CGisListWks::migrateDB1to2()
     // the default value is `true`, as - by default in older versions of QMS - all saved projects
     // have been loaded and shown on the map directly after starting
     QSqlQuery query(db);
-    if(!query.exec( "ALTER TABLE workspace ADD COLUMN visible BOOLEAN DEFAULT TRUE;" ))
-    {
-        qDebug() << query.lastQuery();
-        qDebug() << query.lastError();
-    }
+    QUERY_RUN("ALTER TABLE workspace ADD COLUMN visible BOOLEAN DEFAULT TRUE;", NO_CMD)
+}
+
+void CGisListWks::migrateDB2to3()
+{
+    QSqlQuery query(db);
+
+    QUERY_RUN("BEGIN TRANSACTION;",                             return )
+    QUERY_RUN("ALTER TABLE workspace RENAME TO tmp_workspace;", return )
+    QUERY_RUN("CREATE TABLE workspace ("
+              "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
+              "type           INTEGER NOT NULL,"
+              "name           TEXT NOT NULL,"
+              "keyqms         TEXT NOT NULL,"
+              "changed        BOOLEAN DEFAULT FALSE,"
+              "visible        BOOLEAN DEFAULT TRUE,"
+              "data           BLOB NOT NULL"
+              ")", return );
+    QUERY_RUN("INSERT INTO workspace(id,type,name,keyqms,changed,visible,data) SELECT * FROM tmp_workspace;", return )
+    QUERY_RUN("COMMIT;",                                                                                      return )
+    QUERY_RUN("DROP TABLE tmp_workspace;",                                                                    return )
 }
 
 void CGisListWks::setExternalMenu(QMenu * project)
 {
     menuNone = project;
-    connect(CMainWindow::self().findChild<QAction*>("actionAddEmptyProject"), SIGNAL(triggered()), this, SLOT(slotAddEmptyProject()));
-    connect(CMainWindow::self().findChild<QAction*>("actionCloseAllProjects"), SIGNAL(triggered(bool)), this, SLOT(slotCloseAllProjects()));
-    connect(CMainWindow::self().findChild<QAction*>("actionSearchGoogle"), SIGNAL(triggered(bool)), this, SLOT(slotSearchGoogle(bool)));
+    connect(CMainWindow::self().findChild<QAction*>("actionAddEmptyProject"),  &QAction::triggered, this, &CGisListWks::slotAddEmptyProject);
+    connect(CMainWindow::self().findChild<QAction*>("actionCloseAllProjects"), &QAction::triggered, this, &CGisListWks::slotCloseAllProjects);
+    connect(CMainWindow::self().findChild<QAction*>("actionSearchGoogle"),     &QAction::triggered, this, &CGisListWks::slotSearchGoogle);
 }
 
-void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
+void CGisListWks::dragMoveEvent(QDragMoveEvent  * e )
 {
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
 
@@ -469,7 +482,7 @@ void CGisListWks::dragMoveEvent (QDragMoveEvent  * e )
     QTreeWidget::dragMoveEvent(e);
 }
 
-void CGisListWks::dropEvent ( QDropEvent  * e )
+void CGisListWks::dropEvent( QDropEvent  * e )
 {
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
 
@@ -653,6 +666,36 @@ void CGisListWks::dropEvent ( QDropEvent  * e )
     emit sigChanged();
 }
 
+void CGisListWks::addProject(IGisProject *proj)
+{
+    if(!proj->isValid())
+    {
+        return;
+    }
+
+    addTopLevelItem(proj);
+
+    // move project up the list until there a re only projects, no devices
+    int newIdx      = NOIDX;
+    const int myIdx = topLevelItemCount() - 1;
+    for(int i = myIdx - 1; i >= 0; i--)
+    {
+        IDevice * device = dynamic_cast<IDevice*>(topLevelItem(i));
+        if(0 == device)
+        {
+            break;
+        }
+
+        newIdx = i;
+    }
+
+    if(newIdx != NOIDX)
+    {
+        takeTopLevelItem(myIdx);
+        insertTopLevelItem(newIdx, proj);
+    }
+}
+
 void CGisListWks::removeDevice(const QString& key)
 {
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
@@ -701,7 +744,7 @@ IGisProject * CGisListWks::getProjectByKey(const QString& key)
             return item;
         }
     }
-    return 0;
+    return nullptr;
 }
 
 CDBProject * CGisListWks::getProjectById(quint64 id, const QString& db)
@@ -716,7 +759,7 @@ CDBProject * CGisListWks::getProjectById(quint64 id, const QString& db)
             return item;
         }
     }
-    return 0;
+    return nullptr;
 }
 
 void CGisListWks::slotSaveWorkspace()
@@ -729,10 +772,7 @@ void CGisListWks::slotSaveWorkspace()
     }
 
     QSqlQuery query(db);
-    if(!query.exec("DELETE FROM workspace"))
-    {
-        QUERY_EXEC(return );
-    }
+    QUERY_RUN("DELETE FROM workspace", return )
 
     qDebug() << "slotSaveWorkspace()";
 
@@ -744,7 +784,7 @@ void CGisListWks::slotSaveWorkspace()
         PROGRESS(i, return );
 
         IGisProject * project = dynamic_cast<IGisProject*>(topLevelItem(i));
-        if(project == 0)
+        if(nullptr == project)
         {
             continue;
         }
@@ -756,15 +796,15 @@ void CGisListWks::slotSaveWorkspace()
 
         project->IGisProject::operator>>(stream);
 
-        query.prepare("INSERT INTO workspace (type, key, name, changed, visible, data) VALUES (:type, :key, :name, :changed, :visible, :data)");
-        query.bindValue(":type", project->getType());
-        query.bindValue(":key", project->getKey());
-        query.bindValue(":name", project->getName());
+        query.prepare("INSERT INTO workspace (type, keyqms, name, changed, visible, data) VALUES (:type, :keyqms, :name, :changed, :visible, :data)");
+        query.bindValue(":type",    project->getType());
+        query.bindValue(":keyqms",  project->getKey());
+        query.bindValue(":name",    project->getName());
         query.bindValue(":changed", project->isChanged());
 
         bool visible = (project->checkState(CGisListDB::eColumnCheckbox) == Qt::Checked);
         query.bindValue(":visible", visible);
-        query.bindValue(":data", data);
+        query.bindValue(":data",    data);
         QUERY_EXEC(continue);
     }
 
@@ -780,8 +820,7 @@ void CGisListWks::slotLoadWorkspace()
 
     QSqlQuery query(db);
 
-    query.prepare("SELECT type, key, name, changed, visible, data FROM workspace");
-    QUERY_EXEC(return );
+    QUERY_RUN("SELECT type, keyqms, name, changed, visible, data FROM workspace", return )
 
     const int total = query.size();
     PROGRESS_SETUP(tr("Loading workspace. Please wait."), 0, total, this);
@@ -801,7 +840,7 @@ void CGisListWks::slotLoadWorkspace()
         stream.setVersion(QDataStream::Qt_5_2);
         stream.setByteOrder(QDataStream::LittleEndian);
 
-        IGisProject * project = 0;
+        IGisProject *project = nullptr;
         switch(type)
         {
         case IGisProject::eTypeQms:
@@ -832,30 +871,48 @@ void CGisListWks::slotLoadWorkspace()
             if(!project->isValid())
             {
                 delete project;
-                project = 0;
+                project = nullptr;
             }
             else
             {
-                dbProject->postStatus();
+                dbProject->postStatus(false);
             }
             break;
         }
-        }
 
-        if(project == 0)
+        case IGisProject::eTypeSlf:
         {
-            continue;
+            project = new CSlfProject(name, false);
+            project->setCheckState(CGisListDB::eColumnCheckbox, visible); // (1d)
+            *project << stream;
+
+            // the CSlfProject does not - as the other C*Project - register itself in the list
+            // of currently opened projects. This is done manually here.
+            addProject(project);
+            break;
         }
 
-        // Hiding the individual projects from the map (1a, 1b, 1c) could be done here within a single statement,
-        // but this results in a visible `the checkbox is being unchecked`, especially in case the project
-        // is large and takes some time to load.
-        // When done directly after construction there is no `blinking` of the check mark
+        case IGisProject::eTypeFit:
+        {
+            project = new CFitProject(name, this);
+            project->setCheckState(CGisListDB::eColumnCheckbox, visible);
+            *project << stream;
+            break;
+        }
+        }
 
-        project->setToolTip(eColumnName,project->getInfo());
-        if(changed)
+        if(nullptr != project)
         {
-            project->setChanged();
+            // Hiding the individual projects from the map (1a, 1b, 1c) could be done here within a single statement,
+            // but this results in a visible `the checkbox is being unchecked`, especially in case the project
+            // is large and takes some time to load.
+            // When done directly after construction there is no `blinking` of the check mark
+
+            project->setToolTip(eColumnName,project->getInfo());
+            if(changed)
+            {
+                project->setChanged();
+            }
         }
     }
 
@@ -874,11 +931,12 @@ void CGisListWks::slotContextMenu(const QPoint& point)
     // check whether all projects are checked or unchecked...
     bool allChecked   = true;
     bool allUnchecked = true;
+    bool allCantSave  = true;
 
     foreach(QTreeWidgetItem *item, selectedItems())
     {
         IGisProject *project = dynamic_cast<IGisProject*>(item);
-        if(project != 0)
+        if(nullptr != project)
         {
             // as soon as we find an unchecked element, not all elements are checked (and vice versa)
             if(project->checkState(CGisListDB::eColumnCheckbox) == Qt::Unchecked)
@@ -889,22 +947,23 @@ void CGisListWks::slotContextMenu(const QPoint& point)
             {
                 allUnchecked = false;
             }
-        }
 
-        if(!allChecked && !allUnchecked)
-        {
-            break;
+            if(project->canSave())
+            {
+                allCantSave = false;
+            }
         }
     }
 
     // ...and disable entries without any effect
     actionShowOnMap->setEnabled(!allChecked);
     actionHideFrMap->setEnabled(!allUnchecked);
+    actionSave->setEnabled(!allCantSave);
 
     if(selectedItems().count() > 1)
     {
-        IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
-        if(project != 0)
+        IGisProject *project = dynamic_cast<IGisProject*>(currentItem());
+        if(nullptr != project)
         {
             if(project->isOnDevice())
             {
@@ -913,17 +972,18 @@ void CGisListWks::slotContextMenu(const QPoint& point)
             else
             {
                 actionSyncWksDev->setEnabled(IDevice::count());
+                actionSyncDB->setEnabled(project->getType() == IGisProject::eTypeDb);
                 menuProjectWks->exec(p);
             }
             return;
         }
 
-        IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
-        if(gisItem != 0)
+        IGisItem *gisItem = dynamic_cast<IGisItem*>(currentItem());
+        if(nullptr != gisItem)
         {
             bool onlyWpts = true;
             bool onlyTrks = true;
-            foreach(QTreeWidgetItem * item, selectedItems())
+            foreach(QTreeWidgetItem *item, selectedItems())
             {
                 if(item->type() != IGisItem::eTypeWpt)
                 {
@@ -952,8 +1012,8 @@ void CGisListWks::slotContextMenu(const QPoint& point)
 
     if(selectedItems().count() == 1)
     {
-        IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
-        if(project != 0)
+        IGisProject *project = dynamic_cast<IGisProject*>(currentItem());
+        if(nullptr != project)
         {
             if(project->getType() == IGisProject::eTypeLostFound)
             {
@@ -968,14 +1028,15 @@ void CGisListWks::slotContextMenu(const QPoint& point)
                 else
                 {
                     actionSyncWksDev->setEnabled(IDevice::count());
+                    actionSyncDB->setEnabled(project->getType() == IGisProject::eTypeDb);
                     menuProjectWks->exec(p);
                 }
             }
             return;
         }
 
-        IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
-        if(gisItem != 0)
+        IGisItem *gisItem = dynamic_cast<IGisItem*>(currentItem());
+        if(nullptr != gisItem)
         {
             bool isOnDevice = gisItem->isOnDevice();
 
@@ -1019,8 +1080,8 @@ void CGisListWks::setVisibilityOnMap(bool visible)
     QList<QTreeWidgetItem*> items = selectedItems();
     foreach(QTreeWidgetItem *item, items)
     {
-        IGisProject * project = dynamic_cast<IGisProject*>(item);
-        if(project != 0)
+        IGisProject *project = dynamic_cast<IGisProject*>(item);
+        if(nullptr != project)
         {
             project->setCheckState(CGisListDB::eColumnCheckbox, visible ? Qt::Checked : Qt::Unchecked);
         }
@@ -1038,22 +1099,32 @@ void CGisListWks::slotHideFrMap()
     setVisibilityOnMap(false);
 }
 
-void CGisListWks::slotCloseProject()
+static void closeProjects(const QList<QTreeWidgetItem*> &items)
 {
-    CGisListWksEditLock lock(true, IGisItem::mutexItems);
-    QList<QTreeWidgetItem*> items = selectedItems();
     foreach(QTreeWidgetItem * item, items)
     {
-        IGisProject * project = dynamic_cast<IGisProject*>(item);
-        if(project != 0)
+        IGisProject *project = dynamic_cast<IGisProject*>(item);
+        if(nullptr != project)
         {
             if(project->askBeforClose())
             {
                 break;
             }
+
+            if(IGisProject::eTypeGoogle == project->getType())
+            {
+                CMainWindow::self().findChild<QAction*>("actionSearchGoogle")->setChecked(false);
+            }
             delete project;
         }
     }
+}
+
+void CGisListWks::slotCloseProject()
+{
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
+
+    closeProjects(selectedItems());
     emit sigChanged();
 }
 
@@ -1065,37 +1136,24 @@ void CGisListWks::slotCloseAllProjects()
         return;
     }
 
-
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
-    QList<QTreeWidgetItem*> items = findItems("*", Qt::MatchWildcard);
-    foreach(QTreeWidgetItem * item, items)
-    {
-        IGisProject * project = dynamic_cast<IGisProject*>(item);
-        if(project != 0)
-        {
-            if(project->askBeforClose())
-            {
-                break;
-            }
-            delete project;
-        }
-    }
+    closeProjects(findItems("*", Qt::MatchWildcard));
     emit sigChanged();
 }
 
 
-
 void CGisListWks::slotDeleteProject()
 {
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
+
     QList<QTreeWidgetItem*> items = selectedItems();
     foreach(QTreeWidgetItem * item, items)
     {
         IGisProject * project = dynamic_cast<IGisProject*>(item);
-        if(project != 0)
+        if(nullptr != project)
         {
             CCanvas::setOverrideCursor(Qt::ArrowCursor, "slotDeleteProject");
-            int res = QMessageBox::question(CMainWindow::getBestWidgetForParent(), QObject::tr("Delete project..."), QObject::tr("Do you really want to delete %1?").arg(project->getFilename()), QMessageBox::Ok|QMessageBox::No,QMessageBox::Ok);
+            int res = QMessageBox::question(CMainWindow::getBestWidgetForParent(), tr("Delete project..."), tr("Do you really want to delete %1?").arg(project->getFilename()), QMessageBox::Ok|QMessageBox::No,QMessageBox::Ok);
             CCanvas::restoreOverrideCursor("slotDeleteProject");
             if(res != QMessageBox::Ok)
             {
@@ -1120,9 +1178,16 @@ void CGisListWks::slotSaveProject()
     foreach(QTreeWidgetItem * item, items)
     {
         IGisProject * project = dynamic_cast<IGisProject*>(item);
-        if(project != 0)
+        if(nullptr != project)
         {
-            project->save();
+            if(project->canSave())
+            {
+                project->save();
+            }
+            else
+            {
+                project->saveAs();
+            }
         }
     }
 }
@@ -1135,7 +1200,7 @@ void CGisListWks::slotSaveAsProject()
     foreach(QTreeWidgetItem * item, items)
     {
         IGisProject * project = dynamic_cast<IGisProject*>(item);
-        if(project != 0)
+        if(nullptr != project)
         {
             project->saveAs();
         }
@@ -1147,7 +1212,7 @@ void CGisListWks::slotEditPrj()
     CGisListWksEditLock lock(false, IGisItem::mutexItems);
 
     IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
-    if(project != 0)
+    if(project != nullptr)
     {
         project->edit();
     }
@@ -1156,8 +1221,9 @@ void CGisListWks::slotEditPrj()
 void CGisListWks::slotItemDoubleClicked(QTreeWidgetItem * item, int )
 {
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
+
     IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
-    if(gisItem != 0)
+    if(gisItem != nullptr)
     {
         CMainWindow::self().zoomCanvasTo(gisItem->getBoundingRect());
         CGisWidget::self().focusTrkByKey(true, gisItem->getKey());
@@ -1167,6 +1233,7 @@ void CGisListWks::slotItemDoubleClicked(QTreeWidgetItem * item, int )
 void CGisListWks::slotItemChanged(QTreeWidgetItem * item, int column)
 {
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
+
     if(column == CGisListDB::eColumnCheckbox)
     {
         emit sigChanged();
@@ -1176,8 +1243,9 @@ void CGisListWks::slotItemChanged(QTreeWidgetItem * item, int column)
 void CGisListWks::slotEditItem()
 {
     CGisListWksEditLock lock(false, IGisItem::mutexItems);
+
     IGisItem * gisItem = dynamic_cast<IGisItem*>(currentItem());
-    if(gisItem != 0)
+    if(gisItem != nullptr)
     {
         CGisWidget::self().editItemByKey(gisItem->getKey());
     }
@@ -1196,11 +1264,11 @@ void CGisListWks::slotDeleteItem()
     foreach(QTreeWidgetItem * item, items)
     {
         IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
-        if(gisItem != 0)
+        if(nullptr != gisItem)
         {
             bool yes = false;
-            IGisProject * project = dynamic_cast<IGisProject*>(gisItem->parent());
-            if(project)
+            IGisProject *project = dynamic_cast<IGisProject*>(gisItem->parent());
+            if(nullptr != project)
             {
                 project->blockUpdateItems(true);
                 yes = project->delItemByKey(gisItem->getKey(), last);
@@ -1232,7 +1300,7 @@ void CGisListWks::slotDeleteItem()
     // this will update the database view.
     foreach(CDBProject * project, projects)
     {
-        project->postStatus();
+        project->postStatus(true);
     }
     // unblock update for all projects seen
     foreach(IGisProject * project, projectsAll)
@@ -1251,8 +1319,28 @@ void CGisListWks::slotCopyItem()
 {
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
 
+    /*
+     * Item selection is reset when the target project is a new database
+     * project. Additionally the list of selected items pointers seems
+     * to get invalid, causing a segfault when used.
+     *
+     * As a fix the keys of the selected items are stored temporarily and
+     * later used to retrieve the item on the workspace via CGisWidget::getItemByKey()
+     * again. This is allways safe.
+     */
+    QList<QTreeWidgetItem*> items = selectedItems();
+    QList<IGisItem::key_t>  keys;
+    foreach(QTreeWidgetItem * item, items)
+    {
+        IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
+        if(gisItem != nullptr)
+        {
+            keys << gisItem->getKey();
+        }
+    }
+
     IGisProject * project = CGisWidget::self().selectProject();
-    if(project == 0)
+    if(nullptr == project)
     {
         return;
     }
@@ -1260,25 +1348,21 @@ void CGisListWks::slotCopyItem()
     int lastResult = CSelectCopyAction::eResultNone;
 
     project->blockUpdateItems(true);
-
-    QList<QTreeWidgetItem*> items = selectedItems();
     int cnt = 1;
     PROGRESS_SETUP(tr("Copy items..."), 0, items.count(), this);
-    foreach(QTreeWidgetItem * item, items)
+    foreach(const IGisItem::key_t& key, keys)
     {
         PROGRESS(cnt++, break);
-        IGisItem * gisItem = dynamic_cast<IGisItem*>(item);
-        if(gisItem == 0)
+        IGisItem * gisItem = CGisWidget::self().getItemByKey(key);
+        if(nullptr != gisItem)
         {
-            continue;
+            project->insertCopyOfItem(gisItem, NOIDX, lastResult);
         }
-
-        project->insertCopyOfItem(gisItem, NOIDX, lastResult);
     }
     project->blockUpdateItems(false);
 
-    CCanvas * canvas = CMainWindow::self().getVisibleCanvas();
-    if(canvas)
+    CCanvas *canvas = CMainWindow::self().getVisibleCanvas();
+    if(nullptr != canvas)
     {
         canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
     }
@@ -1287,8 +1371,9 @@ void CGisListWks::slotCopyItem()
 void CGisListWks::slotProjWpt()
 {
     CGisListWksEditLock lock(false, IGisItem::mutexItems);
+
     CGisItemWpt * gisItem = dynamic_cast<CGisItemWpt*>(currentItem());
-    if(gisItem != 0)
+    if(gisItem != nullptr)
     {
         CGisWidget::self().projWptByKey(gisItem->getKey());
     }
@@ -1297,8 +1382,9 @@ void CGisListWks::slotProjWpt()
 void CGisListWks::slotBubbleWpt()
 {
     CGisListWksEditLock lock(false, IGisItem::mutexItems);
+
     CGisItemWpt * gisItem = dynamic_cast<CGisItemWpt*>(currentItem());
-    if(gisItem != 0)
+    if(gisItem != nullptr)
     {
         CGisWidget::self().toggleWptBubble(gisItem->getKey());
     }
@@ -1307,8 +1393,9 @@ void CGisListWks::slotBubbleWpt()
 void CGisListWks::slotMoveWpt()
 {
     CGisListWksEditLock lock(false, IGisItem::mutexItems);
+
     CGisItemWpt * gisItem = dynamic_cast<CGisItemWpt*>(currentItem());
-    if(gisItem != 0)
+    if(gisItem != nullptr)
     {
         CGisWidget::self().moveWptByKey(gisItem->getKey());
     }
@@ -1317,8 +1404,9 @@ void CGisListWks::slotMoveWpt()
 void CGisListWks::slotFocusTrk(bool on)
 {
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
+
     CGisItemTrk * gisItem = dynamic_cast<CGisItemTrk*>(currentItem());
-    if(gisItem != 0)
+    if(gisItem != nullptr)
     {
         CGisWidget::self().focusTrkByKey(on, gisItem->getKey());
     }
@@ -1327,8 +1415,9 @@ void CGisListWks::slotFocusTrk(bool on)
 void CGisListWks::slotEditTrk()
 {
     CGisListWksEditLock lock(false, IGisItem::mutexItems);
+
     CGisItemTrk * gisItem = dynamic_cast<CGisItemTrk*>(currentItem());
-    if(gisItem != 0)
+    if(gisItem != nullptr)
     {
         CGisWidget::self().editTrkByKey(gisItem->getKey());
     }
@@ -1337,8 +1426,9 @@ void CGisListWks::slotEditTrk()
 void CGisListWks::slotReverseTrk()
 {
     CGisListWksEditLock lock(false, IGisItem::mutexItems);
+
     CGisItemTrk * gisItem = dynamic_cast<CGisItemTrk*>(currentItem());
-    if(gisItem != 0)
+    if(gisItem != nullptr)
     {
         CGisWidget::self().reverseTrkByKey(gisItem->getKey());
     }
@@ -1348,8 +1438,7 @@ void CGisListWks::slotCombineTrk()
 {
     CGisListWksEditLock lock(false, IGisItem::mutexItems);
 
-    QList<IGisItem::key_t> keys;
-
+    QList<IGisItem::key_t>  keys;
     QList<QTreeWidgetItem*> items = selectedItems();
     foreach(QTreeWidgetItem * item, items)
     {
@@ -1369,8 +1458,9 @@ void CGisListWks::slotCombineTrk()
 void CGisListWks::slotRangeTrk()
 {
     CGisListWksEditLock lock(false, IGisItem::mutexItems);
+
     CGisItemTrk * gisItem = dynamic_cast<CGisItemTrk*>(currentItem());
-    if(gisItem != 0)
+    if(gisItem != nullptr)
     {
         CGisWidget::self().rangeTrkByKey(gisItem->getKey());
     }
@@ -1379,8 +1469,9 @@ void CGisListWks::slotRangeTrk()
 void CGisListWks::slotFocusRte(bool on)
 {
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
+
     CGisItemRte * gisItem = dynamic_cast<CGisItemRte*>(currentItem());
-    if(gisItem != 0)
+    if(gisItem != nullptr)
     {
         CGisWidget::self().focusRteByKey(on, gisItem->getKey());
     }
@@ -1389,8 +1480,9 @@ void CGisListWks::slotFocusRte(bool on)
 void CGisListWks::slotCalcRte()
 {
     CGisListWksEditLock lock(false, IGisItem::mutexItems);
+
     CGisItemRte * gisItem = dynamic_cast<CGisItemRte*>(currentItem());
-    if(gisItem != 0)
+    if(gisItem != nullptr)
     {
         CGisWidget::self().calcRteByKey(gisItem->getKey());
     }
@@ -1399,8 +1491,9 @@ void CGisListWks::slotCalcRte()
 void CGisListWks::slotResetRte()
 {
     CGisListWksEditLock lock(false, IGisItem::mutexItems);
+
     CGisItemRte * gisItem = dynamic_cast<CGisItemRte*>(currentItem());
-    if(gisItem != 0)
+    if(gisItem != nullptr)
     {
         CGisWidget::self().resetRteByKey(gisItem->getKey());
     }
@@ -1410,8 +1503,9 @@ void CGisListWks::slotResetRte()
 void CGisListWks::slotEditRte()
 {
     CGisListWksEditLock lock(false, IGisItem::mutexItems);
+
     CGisItemRte * gisItem = dynamic_cast<CGisItemRte*>(currentItem());
-    if(gisItem != 0)
+    if(gisItem != nullptr)
     {
         CGisWidget::self().editRteByKey(gisItem->getKey());
     }
@@ -1420,8 +1514,9 @@ void CGisListWks::slotEditRte()
 void CGisListWks::slotEditArea()
 {
     CGisListWksEditLock lock(false, IGisItem::mutexItems);
+
     CGisItemOvlArea * gisItem = dynamic_cast<CGisItemOvlArea*>(currentItem());
-    if(gisItem != 0)
+    if(gisItem != nullptr)
     {
         CGisWidget::self().editAreaByKey(gisItem->getKey());
     }
@@ -1434,7 +1529,7 @@ void CGisListWks::slotAddEmptyProject()
 
     QString key, name;
     CSelectProjectDialog::type_e type;
-    CSelectProjectDialog dlg(key, name, type, 0);
+    CSelectProjectDialog dlg(key, name, type, nullptr);
     dlg.exec();
     if(name.isEmpty() && (type != CSelectProjectDialog::eTypeDb))
     {
@@ -1453,9 +1548,10 @@ void CGisListWks::slotAddEmptyProject()
     {
         quint64 idParent;
         QString db;
+        QString host;
         IDBFolder::type_e type;
 
-        CSelectDBFolder dlg1(idParent, db, this);
+        CSelectDBFolder dlg1(idParent, db, host, this);
         if(dlg1.exec() == QDialog::Rejected)
         {
             return;
@@ -1467,12 +1563,11 @@ void CGisListWks::slotAddEmptyProject()
             return;
         }
 
-        CEvtW2DCreate * evt = new CEvtW2DCreate(name, type, idParent, db);
+        CEvtW2DCreate * evt = new CEvtW2DCreate(name, type, idParent, db, host);
         CGisWidget::self().postEventForDb(evt);
     }
 }
 
-
 void CGisListWks::slotSearchGoogle(bool on)
 {
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
@@ -1483,8 +1578,8 @@ void CGisListWks::slotSearchGoogle(bool on)
         searchGoogle = new CSearchGoogle(this);
     }
 
-    CCanvas * canvas = CMainWindow::self().getVisibleCanvas();
-    if(canvas)
+    CCanvas *canvas = CMainWindow::self().getVisibleCanvas();
+    if(nullptr != canvas)
     {
         canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
     }
@@ -1500,7 +1595,7 @@ void CGisListWks::slotSyncWksDev()
     }
 
     IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
-    if(project == 0)
+    if(nullptr == project)
     {
         return;
     }
@@ -1520,22 +1615,20 @@ void CGisListWks::slotSyncWksDev()
     {
         for(int n = 0; n < N; n++)
         {
-            IDevice * device = dynamic_cast<IDevice*>(topLevelItem(n));
-            if(device == 0)
+            IDevice *device = dynamic_cast<IDevice*>(topLevelItem(n));
+            if(nullptr != device)
             {
-                continue;
+                keys << device->getKey();
+                break;
             }
-
-            keys << device->getKey();
-            break;
         }
     }
 
-    CCanvas * canvas = CMainWindow::self().getVisibleCanvas();
+    CCanvas *canvas = CMainWindow::self().getVisibleCanvas();
     for(int n = 0; n < N; n++)
     {
         IDevice * device = dynamic_cast<IDevice*>(topLevelItem(n));
-        if(device == 0 || keys.isEmpty() || !keys.contains(device->getKey()))
+        if(nullptr == device || keys.isEmpty() || !keys.contains(device->getKey()))
         {
             continue;
         }
@@ -1560,13 +1653,13 @@ void CGisListWks::slotSyncDevWks()
     CGisListWksEditLock lock(true, IGisItem::mutexItems);
 
     IGisProject * project = dynamic_cast<IGisProject*>(currentItem());
-    if(project == 0)
+    if(nullptr == project)
     {
         return;
     }
 
     IDevice * device = dynamic_cast<IDevice*>(project->parent());
-    if(device == 0)
+    if(nullptr == device)
     {
         return;
     }
@@ -1601,16 +1694,15 @@ bool CGisListWks::event(QEvent * e)
     {
         CGisListWksEditLock lock(true, IGisItem::mutexItems);
 
-
         switch(e->type())
         {
         case eEvtD2WReqInfo:
         {
             CEvtD2WReqInfo * evt = (CEvtD2WReqInfo*)e;
             CDBProject * project =  getProjectById(evt->id, evt->db);
-            if(project)
+            if(nullptr != project)
             {
-                project->postStatus();
+                project->postStatus(false);
             }
             e->accept();
             emit sigChanged();
@@ -1621,7 +1713,7 @@ bool CGisListWks::event(QEvent * e)
         {
             CEvtD2WShowFolder * evt = (CEvtD2WShowFolder*)e;
             CDBProject * project =  getProjectById(evt->id, evt->db);
-            if(project == 0)
+            if(nullptr == project)
             {
                 if(evt->id == 0)
                 {
@@ -1694,6 +1786,44 @@ bool CGisListWks::event(QEvent * e)
             emit sigChanged();
             return true;
         }
+
+        case eEvtD2WUpdateItems:
+        {
+            CEvtD2WUpdateItems * evt = (CEvtD2WUpdateItems*)e;
+            IGisProject * project = dynamic_cast<IGisProject*>(getProjectById(evt->id, evt->db));
+            if(project)
+            {
+                project->blockUpdateItems(false);
+            }
+            e->accept();
+            emit sigChanged();
+            return true;
+        }
+
+        case eEvtD2WReload:
+        {
+            CEvtD2WReload * evt = (CEvtD2WReload*)e;
+            QList<CDBProject*> projects;
+
+            const int N = topLevelItemCount();
+            for(int i = 0; i < N; i++)
+            {
+                CDBProject * project = dynamic_cast<CDBProject*>(topLevelItem(i));
+
+                if(project && (project->getDBName() == evt->db))
+                {
+                    project->update();
+                    projects << project;
+                }
+            }
+
+            foreach(CDBProject * project, projects)
+            {
+                project->blockUpdateItems(false);
+            }
+
+            return true;
+        }
         }
     }
     return QTreeWidget::event(e);
@@ -1703,18 +1833,34 @@ bool CGisListWks::event(QEvent * e)
 
 void CGisListWks::slotRteFromWpt()
 {
+    CGisListWksEditLock lock(false, IGisItem::mutexItems);
+
     QList<IGisItem::key_t> keys;
     foreach(QTreeWidgetItem * item, selectedItems())
     {
         CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(item);
-        if(wpt == 0)
+        if(nullptr != wpt)
         {
-            continue;
+            keys << wpt->getKey();
         }
-
-        keys << wpt->getKey();
     }
 
     CCreateRouteFromWpt dlg(keys, this);
     dlg.exec();
 }
+
+void CGisListWks::slotSyncDB()
+{
+    CGisListWksEditLock lock(true, IGisItem::mutexItems);
+
+    foreach(QTreeWidgetItem * item, selectedItems())
+    {
+        CDBProject * project = dynamic_cast<CDBProject*>(item);
+        if(project == nullptr)
+        {
+            continue;
+        }
+
+        project->update();
+    }
+}
diff --git a/src/gis/CGisListWks.h b/src/gis/CGisListWks.h
index a871741..5df17b8 100644
--- a/src/gis/CGisListWks.h
+++ b/src/gis/CGisListWks.h
@@ -51,20 +51,24 @@ public:
     IGisProject * getProjectByKey(const QString& key);
     CDBProject * getProjectById(quint64 id, const QString& db);
 
-    bool event(QEvent * e);
+    bool event(QEvent * e) override;
+
+    void addProject(IGisProject *proj);
 
     void removeDevice(const QString& key);
 
+public slots:
+    void slotLoadWorkspace();
+
 signals:
     void sigChanged();
 
 protected:
-    void dragMoveEvent (QDragMoveEvent  * e );
-    void dropEvent ( QDropEvent  * e );
+    void dragMoveEvent(QDragMoveEvent *e) override;
+    void dropEvent(QDropEvent     *e) override;
 
 private slots:
     void slotSaveWorkspace();
-    void slotLoadWorkspace();
     void slotContextMenu(const QPoint& point);
     void slotSaveProject();
     void slotSaveAsProject();
@@ -97,6 +101,7 @@ private slots:
     void slotSyncWksDev();
     void slotSyncDevWks();
     void slotRteFromWpt();
+    void slotSyncDB();
 
 
 private:
@@ -104,6 +109,7 @@ private:
     void initDB();
     void migrateDB(int version);
     void migrateDB1to2();
+    void migrateDB2to3();
     void setVisibilityOnMap(bool visible);
 
     QSqlDatabase db;
@@ -116,6 +122,7 @@ private:
     QAction  * actionShowOnMap;
     QAction  * actionHideFrMap;
     QAction  * actionSyncWksDev;
+    QAction  * actionSyncDB;
 
 
     QMenu * menuProjectDev;
@@ -147,14 +154,14 @@ private:
     QAction * actionEditArea;
     QAction * actionRteFromWpt;
 
-    QMenu * menuNone = 0;
+    QMenu * menuNone = nullptr;
 
     QPointer<CSearchGoogle> searchGoogle;
 
     bool saveOnExit = true;
     qint32 saveEvery = 5;
 
-    IDeviceWatcher * deviceWatcher = 0;
+    IDeviceWatcher * deviceWatcher = nullptr;
 };
 
 #endif //CGISLISTWKS_H
diff --git a/src/gis/CGisWidget.cpp b/src/gis/CGisWidget.cpp
index faff920..e248204 100644
--- a/src/gis/CGisWidget.cpp
+++ b/src/gis/CGisWidget.cpp
@@ -24,11 +24,13 @@
 #include "gis/db/CDBProject.h"
 #include "gis/db/CSelectDBFolder.h"
 #include "gis/db/CSetupFolder.h"
+#include "gis/fit/CFitProject.h"
 #include "gis/gpx/CGpxProject.h"
 #include "gis/ovl/CGisItemOvlArea.h"
 #include "gis/prj/IGisProject.h"
 #include "gis/qms/CQmsProject.h"
 #include "gis/rte/CGisItemRte.h"
+#include "gis/slf/CSlfProject.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
 #include "gis/wpt/CProjWpt.h"
@@ -39,7 +41,7 @@
 #include <QtWidgets>
 #include <QtXml>
 
-CGisWidget * CGisWidget::pSelf = 0;
+CGisWidget * CGisWidget::pSelf = nullptr;
 
 CGisWidget::CGisWidget(QMenu *menuProject, QWidget *parent)
     : QWidget(parent)
@@ -53,10 +55,12 @@ CGisWidget::CGisWidget(QMenu *menuProject, QWidget *parent)
     treeWks->header()->restoreState(cfg.value("Workspace/treeWks/state", treeWks->header()->saveState()).toByteArray());
     treeDB->header()->restoreState(cfg.value("Workspace/treeDB/state", treeDB->header()->saveState()).toByteArray());
 
-    connect(treeWks, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
-    connect(treeDB, SIGNAL(sigChanged()), SLOT(slotHelpText()));
+    connect(treeWks, &CGisListWks::sigChanged, this, &CGisWidget::sigChanged);
+    connect(treeDB,  &CGisListDB::sigChanged,  this, &CGisWidget::slotHelpText);
 
     slotHelpText();
+
+    treeWks->slotLoadWorkspace();
 }
 
 CGisWidget::~CGisWidget()
@@ -91,7 +95,7 @@ void CGisWidget::loadGisProject(const QString& filename)
     treeWks->blockSignals(true);
 
     QMutexLocker lock(&IGisItem::mutexItems);
-    IGisProject * item = 0;
+    IGisProject *item = nullptr;
     QString suffix = QFileInfo(filename).suffix().toLower();
     if(suffix == "gpx")
     {
@@ -101,11 +105,24 @@ void CGisWidget::loadGisProject(const QString& filename)
     {
         item = new CQmsProject(filename, treeWks);
     }
+    else if(suffix == "slf")
+    {
+        item = new CSlfProject(filename);
+
+        // the CSlfProject does not - as the other C*Project - register itself in the list
+        // of currently opened projects. This is done manually here.
+        treeWks->addProject(item);
+    }
+    else if(suffix == "fit")
+    {
+        item = new CFitProject(filename, treeWks);
+    }
+
 
     if(item && !item->isValid())
     {
         delete item;
-        item = 0;
+        item = nullptr;
     }
 
     // skip if project is already loaded
@@ -114,7 +131,7 @@ void CGisWidget::loadGisProject(const QString& filename)
         QMessageBox::information(this, tr("Load project..."), tr("The project \"%1\" is already in the workspace.").arg(item->getName()), QMessageBox::Abort);
 
         delete item;
-        item = 0;
+        item = nullptr;
     }
 
     treeWks->blockSignals(false);
@@ -142,11 +159,18 @@ void CGisWidget::slotSaveAll()
     for(int i = 0; i < treeWks->topLevelItemCount(); i++)
     {
         IGisProject * item = dynamic_cast<IGisProject*>(treeWks->topLevelItem(i));
-        if(item == 0)
+        if(nullptr == item)
         {
             continue;
         }
-        item->save();
+        if(item->canSave())
+        {
+            item->save();
+        }
+        else
+        {
+            item->saveAs();
+        }
     }
 
     CCanvas::restoreOverrideCursor("slotSaveAll");
@@ -160,14 +184,14 @@ IGisProject * CGisWidget::selectProject()
     CSelectProjectDialog dlg(key, name, type, treeWks);
     dlg.exec();
 
-    IGisProject * project = 0;
+    IGisProject *project = nullptr;
     if(!key.isEmpty())
     {
         QMutexLocker lock(&IGisItem::mutexItems);
         for(int i = 0; i < treeWks->topLevelItemCount(); i++)
         {
             project = dynamic_cast<IGisProject*>(treeWks->topLevelItem(i));
-            if(project == 0)
+            if(nullptr == project)
             {
                 continue;
             }
@@ -181,27 +205,28 @@ IGisProject * CGisWidget::selectProject()
     {
         quint64 idParent;
         QString db;
+        QString host;
         IDBFolder::type_e type;
 
-        CSelectDBFolder dlg1(idParent, db, this);
+        CSelectDBFolder dlg1(idParent, db, host, this);
         if(dlg1.exec() == QDialog::Rejected)
         {
-            return 0;
+            return nullptr;
         }
 
         CSetupFolder dlg2(type, name, false, this);
         if(dlg2.exec() == QDialog::Rejected)
         {
-            return 0;
+            return nullptr;
         }
 
         QMutexLocker lock(&IGisItem::mutexItems);
-        CEvtW2DCreate evt(name, type, idParent, db);
+        CEvtW2DCreate evt(name, type, idParent, db, host);
         QApplication::sendEvent(treeDB, &evt);
 
         if(evt.idChild)
         {
-            while(project == 0)
+            while(nullptr == project)
             {
                 QApplication::processEvents(QEventLoop::WaitForMoreEvents|QEventLoop::ExcludeUserInputEvents, 100);
                 project = treeWks->getProjectById(evt.idChild, db);
@@ -262,7 +287,7 @@ void CGisWidget::mouseMove(const QPointF& pos)
 
 IGisItem * CGisWidget::getItemByKey(const IGisItem::key_t& key)
 {
-    IGisItem * item = 0;
+    IGisItem *item = nullptr;
     QMutexLocker lock(&IGisItem::mutexItems);
     for(int i = 0; i < treeWks->topLevelItemCount(); i++)
     {
@@ -276,7 +301,7 @@ IGisItem * CGisWidget::getItemByKey(const IGisItem::key_t& key)
             }
 
             item = project->getItemByKey(key);
-            if(item != 0)
+            if(nullptr != item)
             {
                 break;
             }
@@ -293,7 +318,7 @@ IGisItem * CGisWidget::getItemByKey(const IGisItem::key_t& key)
             }
 
             item = device->getItemByKey(key);
-            if(item != 0)
+            if(nullptr != item)
             {
                 break;
             }
@@ -310,7 +335,7 @@ void CGisWidget::delItemByKey(const IGisItem::key_t& key)
     for(int i = 0; i < treeWks->topLevelItemCount(); i++)
     {
         IGisProject * project = dynamic_cast<IGisProject*>(treeWks->topLevelItem(i));
-        if(project == 0)
+        if(nullptr == project)
         {
             continue;
         }
@@ -321,7 +346,7 @@ void CGisWidget::delItemByKey(const IGisItem::key_t& key)
             CDBProject * dbp = dynamic_cast<CDBProject*>(project);
             if(dbp)
             {
-                dbp->postStatus();
+                dbp->postStatus(true);
             }
         }
 
@@ -340,15 +365,15 @@ void CGisWidget::editItemByKey(const IGisItem::key_t& key)
     QMutexLocker lock(&IGisItem::mutexItems);
     for(int i = 0; i < treeWks->topLevelItemCount(); i++)
     {
-        QTreeWidgetItem * item = treeWks->topLevelItem(i);
-        IGisProject * project = dynamic_cast<IGisProject*>(item);
-        if(project != 0)
+        QTreeWidgetItem *item = treeWks->topLevelItem(i);
+        IGisProject *project = dynamic_cast<IGisProject*>(item);
+        if(nullptr != project)
         {
             project->editItemByKey(key);
             continue;
         }
         IDevice * device = dynamic_cast<IDevice*>(item);
-        if(device != 0)
+        if(nullptr != device)
         {
             device->editItemByKey(key);
             continue;
@@ -362,14 +387,14 @@ void CGisWidget::copyItemByKey(const IGisItem::key_t &key)
 {
     QMutexLocker lock(&IGisItem::mutexItems);
 
-    IGisItem * item = getItemByKey(key);
-    if(item == 0)
+    IGisItem *item = getItemByKey(key);
+    if(nullptr == item)
     {
         return;
     }
 
-    IGisProject * project = selectProject();
-    if(project == 0)
+    IGisProject *project = selectProject();
+    if(nullptr == project)
     {
         return;
     }
@@ -385,8 +410,8 @@ void CGisWidget::projWptByKey(const IGisItem::key_t& key)
 {
     QMutexLocker lock(&IGisItem::mutexItems);
 
-    CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(getItemByKey(key));
-    if(wpt != 0)
+    CGisItemWpt *wpt = dynamic_cast<CGisItemWpt*>(getItemByKey(key));
+    if(nullptr != wpt)
     {
         CProjWpt dlg(*wpt, 0);
         dlg.exec();
@@ -399,16 +424,16 @@ void CGisWidget::projWptByKey(const IGisItem::key_t& key)
 void CGisWidget::moveWptByKey(const IGisItem::key_t& key)
 {
     QMutexLocker lock(&IGisItem::mutexItems);
-    CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(getItemByKey(key));
-    if(wpt != 0)
+    CGisItemWpt *wpt = dynamic_cast<CGisItemWpt*>(getItemByKey(key));
+    if(nullptr != wpt)
     {
         if(!wpt->setReadOnlyMode(false))
         {
             return;
         }
 
-        CCanvas * canvas = CMainWindow::self().getVisibleCanvas();
-        if(canvas != 0)
+        CCanvas *canvas = CMainWindow::self().getVisibleCanvas();
+        if(nullptr != canvas)
         {
             canvas->setMouseMoveWpt(*wpt);
         }
@@ -419,7 +444,7 @@ void CGisWidget::toggleWptBubble(const IGisItem::key_t &key)
 {
     QMutexLocker lock(&IGisItem::mutexItems);
     CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(getItemByKey(key));
-    if(wpt != 0)
+    if(nullptr != wpt)
     {
         wpt->toggleBubble();
     }
@@ -430,7 +455,7 @@ void CGisWidget::focusTrkByKey(bool yes, const IGisItem::key_t& key)
     QMutexLocker lock(&IGisItem::mutexItems);
 
     CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(getItemByKey(key));
-    if(trk != 0)
+    if(nullptr != trk)
     {
         trk->gainUserFocus(yes);
     }
@@ -443,7 +468,7 @@ void CGisWidget::focusRteByKey(bool yes, const IGisItem::key_t &key)
     QMutexLocker lock(&IGisItem::mutexItems);
 
     CGisItemRte * rte = dynamic_cast<CGisItemRte*>(getItemByKey(key));
-    if(rte != 0)
+    if(nullptr != rte)
     {
         rte->gainUserFocus(yes);
     }
@@ -456,7 +481,7 @@ void CGisWidget::cutTrkByKey(const IGisItem::key_t& key)
     QMutexLocker lock(&IGisItem::mutexItems);
 
     CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(getItemByKey(key));
-    if(trk != 0 && trk->cut())
+    if(nullptr != trk && trk->cut())
     {
         int res = QMessageBox::question(this, tr("Cut Track..."), tr("Do you want to delete the original track?"), QMessageBox::Ok|QMessageBox::No, QMessageBox::Ok);
         if(res == QMessageBox::Ok)
@@ -473,7 +498,7 @@ void CGisWidget::reverseTrkByKey(const IGisItem::key_t& key)
     QMutexLocker lock(&IGisItem::mutexItems);
 
     CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(getItemByKey(key));
-    if(trk)
+    if(nullptr != trk)
     {
         trk->reverse();
     }
@@ -511,7 +536,7 @@ void CGisWidget::editTrkByKey(const IGisItem::key_t& key)
     QMutexLocker lock(&IGisItem::mutexItems);
 
     CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(getItemByKey(key));
-    if(trk != 0)
+    if(nullptr != trk)
     {
         if(!trk->setReadOnlyMode(false))
         {
@@ -519,7 +544,7 @@ void CGisWidget::editTrkByKey(const IGisItem::key_t& key)
         }
 
         CCanvas * canvas = CMainWindow::self().getVisibleCanvas();
-        if(canvas != 0)
+        if(nullptr != canvas)
         {
             canvas->setMouseEditTrk(*trk);
         }
@@ -531,10 +556,10 @@ void CGisWidget::rangeTrkByKey(const IGisItem::key_t& key)
     QMutexLocker lock(&IGisItem::mutexItems);
 
     CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(getItemByKey(key));
-    if(trk != 0)
+    if(nullptr != trk)
     {
         CCanvas * canvas = CMainWindow::self().getVisibleCanvas();
-        if(canvas != 0)
+        if(nullptr != canvas)
         {
             canvas->setMouseRangeTrk(*trk);
         }
@@ -546,15 +571,15 @@ void CGisWidget::editRteByKey(const IGisItem::key_t& key)
     QMutexLocker lock(&IGisItem::mutexItems);
 
     CGisItemRte * rte = dynamic_cast<CGisItemRte*>(getItemByKey(key));
-    if(rte != 0)
+    if(nullptr != rte)
     {
         if(!rte->setReadOnlyMode(false))
         {
             return;
         }
 
-        CCanvas * canvas = CMainWindow::self().getVisibleCanvas();
-        if(canvas != 0)
+        CCanvas *canvas = CMainWindow::self().getVisibleCanvas();
+        if(nullptr != canvas)
         {
             canvas->setMouseEditRte(*rte);
         }
@@ -566,7 +591,7 @@ void CGisWidget::calcRteByKey(const IGisItem::key_t& key)
     QMutexLocker lock(&IGisItem::mutexItems);
 
     CGisItemRte * rte = dynamic_cast<CGisItemRte*>(getItemByKey(key));
-    if(rte != 0)
+    if(nullptr != rte)
     {
         rte->calc();
     }
@@ -577,7 +602,7 @@ void CGisWidget::resetRteByKey(const IGisItem::key_t& key)
     QMutexLocker lock(&IGisItem::mutexItems);
 
     CGisItemRte * rte = dynamic_cast<CGisItemRte*>(getItemByKey(key));
-    if(rte != 0)
+    if(rte != nullptr)
     {
         rte->reset();
     }
@@ -589,7 +614,7 @@ void CGisWidget::editAreaByKey(const IGisItem::key_t& key)
     QMutexLocker lock(&IGisItem::mutexItems);
 
     CGisItemOvlArea * area = dynamic_cast<CGisItemOvlArea*>(getItemByKey(key));
-    if(area != 0)
+    if(area != nullptr)
     {
         if(!area->setReadOnlyMode(false))
         {
@@ -597,7 +622,7 @@ void CGisWidget::editAreaByKey(const IGisItem::key_t& key)
         }
 
         CCanvas * canvas = CMainWindow::self().getVisibleCanvas();
-        if(canvas != 0)
+        if(canvas != nullptr)
         {
             canvas->setMouseEditArea(*area);
         }
@@ -618,16 +643,16 @@ void CGisWidget::draw(QPainter& p, const QPolygonF& viewport, CGisDraw * gis)
             break;
         }
 
-        QTreeWidgetItem * item = treeWks->topLevelItem(i);
+        QTreeWidgetItem *item = treeWks->topLevelItem(i);
 
-        IGisProject * project = dynamic_cast<IGisProject*>(item);
-        if(project)
+        IGisProject *project = dynamic_cast<IGisProject*>(item);
+        if(nullptr != project)
         {
             project->drawItem(p, viewport, blockedAreas, gis);
             continue;
         }
-        IDevice * device = dynamic_cast<IDevice*>(item);
-        if(device)
+        IDevice *device = dynamic_cast<IDevice*>(item);
+        if(nullptr != device)
         {
             device->drawItem(p, viewport, blockedAreas, gis);
             continue;
@@ -645,13 +670,13 @@ void CGisWidget::draw(QPainter& p, const QPolygonF& viewport, CGisDraw * gis)
         QTreeWidgetItem * item = treeWks->topLevelItem(i);
 
         IGisProject * project = dynamic_cast<IGisProject*>(item);
-        if(project)
+        if(nullptr != project)
         {
             project->drawLabel(p, viewport, blockedAreas, fm, gis);
             continue;
         }
         IDevice * device = dynamic_cast<IDevice*>(item);
-        if(device)
+        if(nullptr != device)
         {
             device->drawLabel(p, viewport, blockedAreas, fm, gis);
             continue;
@@ -671,13 +696,13 @@ void CGisWidget::fastDraw(QPainter& p, const QRectF& viewport, CGisDraw *gis)
         QTreeWidgetItem * item = treeWks->topLevelItem(i);
 
         IGisProject * project = dynamic_cast<IGisProject*>(item);
-        if(project)
+        if(nullptr != project)
         {
             project->drawItem(p, viewport, gis);
             continue;
         }
         IDevice * device = dynamic_cast<IDevice*>(item);
-        if(device)
+        if(nullptr != device)
         {
             device->drawItem(p, viewport, gis);
             continue;
diff --git a/src/gis/CGisWidget.h b/src/gis/CGisWidget.h
index c2d3c3e..43773e9 100644
--- a/src/gis/CGisWidget.h
+++ b/src/gis/CGisWidget.h
@@ -24,6 +24,7 @@
 #include <QSqlDatabase>
 #include <QWidget>
 
+#include "db/IDBFolder.h"
 #include "gis/IGisItem.h"
 
 class CGisDraw;
@@ -37,6 +38,8 @@ enum event_types_e
     ,eEvtD2WShowItems   = QEvent::User + 4
     ,eEvtD2WHideItems   = QEvent::User + 5
     ,eEvtD2WUpdateLnF   = QEvent::User + 6
+    ,eEvtD2WUpdateItems = QEvent::User + 7
+    ,eEvtD2WReload      = QEvent::User + 8
 
     ,eEvtW2DAckInfo     = QEvent::User + 100
     ,eEvtW2DCreate      = QEvent::User + 101
@@ -91,6 +94,8 @@ public:
     {
     }
 
+    /// if true only the items in the list are loaded. Any other item loaded but not part of the list will be removed.
+    bool addItemsExclusively = false;
     quint64 id;
     QString db;
     QList<evt_item_t> items;
@@ -111,14 +116,28 @@ public:
 class CEvtW2DAckInfo : public QEvent
 {
 public:
-    CEvtW2DAckInfo(bool loaded, quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtW2DAckInfo)), isLoaded(loaded), updateLostFound(false), id(id), db(db)
+    CEvtW2DAckInfo(Qt::CheckState checkState, quint64 id, const QString& db, const QString& host)
+        : QEvent(QEvent::Type(eEvtW2DAckInfo))
+        , checkState(checkState)
+        , id(id)
+        , db(db)
+        , host(host)
     {
     }
 
-    bool isLoaded;
-    bool updateLostFound;
+    CEvtW2DAckInfo(quint64 id, const QString& db, const QString& host)
+        : QEvent(QEvent::Type(eEvtW2DAckInfo))
+        , id(id)
+        , db(db)
+        , host(host)
+    {
+    }
+
+    Qt::CheckState checkState = Qt::Unchecked;
+    bool updateLostFound = false;
     quint64 id;
     QString db;
+    QString host;
     QSet<QString> keysChildren;
 };
 
@@ -136,14 +155,42 @@ public:
 class CEvtW2DCreate : public QEvent
 {
 public:
-    CEvtW2DCreate(const QString& name, IDBFolder::type_e type, quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtW2DCreate)), name(name), type(type), idParent(id), idChild(0), db(db)
+    CEvtW2DCreate(const QString& name, IDBFolder::type_e type, quint64 id, const QString& db, const QString& host)
+        : QEvent(QEvent::Type(eEvtW2DCreate))
+        , name(name)
+        , type(type)
+        , idParent(id)
+        , db(db)
+        , host(host)
     {
     }
 
     QString name;
     IDBFolder::type_e type;
     quint64 idParent;
-    quint64 idChild;
+    quint64 idChild = 0;
+    QString db;
+    QString host;
+};
+
+class CEvtD2WUpdateItems : public QEvent
+{
+public:
+    CEvtD2WUpdateItems(quint64 id, const QString& db) : QEvent(QEvent::Type(eEvtD2WUpdateItems)), id(id), db(db)
+    {
+    }
+
+    quint64 id;
+    QString db;
+};
+
+class CEvtD2WReload : public QEvent
+{
+public:
+    CEvtD2WReload(const QString& db) : QEvent(QEvent::Type(eEvtD2WReload)), db(db)
+    {
+    }
+
     QString db;
 };
 
diff --git a/src/gis/CSelDevices.cpp b/src/gis/CSelDevices.cpp
index 0fa4d12..937acf6 100644
--- a/src/gis/CSelDevices.cpp
+++ b/src/gis/CSelDevices.cpp
@@ -33,8 +33,8 @@ CSelDevices::CSelDevices(IGisProject * project, QTreeWidget *wks)
     const int N = wks->topLevelItemCount();
     for(int n = 0; n < N; n++)
     {
-        IDevice * device = dynamic_cast<IDevice*>(wks->topLevelItem(n));
-        if(device == 0)
+        IDevice *device = dynamic_cast<IDevice*>(wks->topLevelItem(n));
+        if(nullptr == device)
         {
             continue;
         }
@@ -44,15 +44,8 @@ CSelDevices::CSelDevices(IGisProject * project, QTreeWidget *wks)
         item->setData(Qt::UserRole, device->getKey());
         item->setIcon(device->icon(CGisListWks::eColumnIcon));
 
-        IGisProject * proj = device->getProjectByKey(project->getKey());
-        if(proj)
-        {
-            item->setCheckState(Qt::Checked);
-        }
-        else
-        {
-            item->setCheckState(Qt::Unchecked);
-        }
+        IGisProject *proj = device->getProjectByKey(project->getKey());
+        item->setCheckState(nullptr == proj ? Qt::Unchecked : Qt::Checked);
     }
 
     CCanvas::setOverrideCursor(Qt::ArrowCursor, "CSelDevices");
diff --git a/src/gis/IGisItem.cpp b/src/gis/IGisItem.cpp
index 8719f03..5ede1dc 100644
--- a/src/gis/IGisItem.cpp
+++ b/src/gis/IGisItem.cpp
@@ -39,7 +39,7 @@ QMutex IGisItem::mutexItems(QMutex::Recursive);
 
 const QString IGisItem::noKey;
 
-const QString IGisItem::noName = QObject::tr("[no name]");
+const QString IGisItem::noName = IGisItem::tr("[no name]");
 
 const IGisItem::color_t IGisItem::colorMap[] =
 {
@@ -59,16 +59,18 @@ const IGisItem::color_t IGisItem::colorMap[] =
     ,{"Magenta",     QColor(Qt::magenta),     QString("://icons/8x8/bullet_magenta.png")}
     ,{"Cyan",        QColor(Qt::cyan),        QString("://icons/8x8/bullet_cyan.png")}
     ,{"White",       QColor(Qt::white),       QString("://icons/8x8/bullet_white.png")}
-    ,{"Transparent", QColor(Qt::transparent), QString("")}
+    ,{"Transparent", QColor(Qt::transparent), QString()}
 };
 
+const size_t IGisItem::colorMapSize = sizeof(colorMap) / sizeof(color_t);
+
 IGisItem::IGisItem(IGisProject *parent, type_e typ, int idx)
     : QTreeWidgetItem(parent, typ)
 {
     int n = -1;
     setFlags(QTreeWidgetItem::flags() & ~Qt::ItemIsDropEnabled);
 
-    if(parent == 0)
+    if(nullptr == parent)
     {
         return;
     }
@@ -160,7 +162,7 @@ IGisItem::~IGisItem()
 {
 }
 
-void IGisItem::genKey()
+void IGisItem::genKey() const
 {
     if(key.item.isEmpty())
     {
@@ -188,7 +190,7 @@ void IGisItem::genKey()
 void IGisItem::loadFromDb(quint64 id, QSqlDatabase& db)
 {
     QSqlQuery query(db);
-    query.prepare("SELECT data, key FROM items WHERE id=:id");
+    query.prepare("SELECT data, keyqms, hash FROM items WHERE id=:id");
     query.bindValue(":id", id);
     QUERY_EXEC(return );
     if(query.next())
@@ -203,7 +205,7 @@ void IGisItem::loadFromDb(quint64 id, QSqlDatabase& db)
         if(key.item.isEmpty())
         {
             QString keyFromDB = query.value(1).toString();
-            /*[Issue #72] Database/Workspace inconsisteny in QMS 1.4.0
+            /*[Issue #72] Database/Workspace inconsistency in QMS 1.4.0
 
                The root cause is a missing key in the serialized data. This is fixed by calling getKey() in setupHistory().
 
@@ -217,7 +219,40 @@ void IGisItem::loadFromDb(quint64 id, QSqlDatabase& db)
                 updateHistory();
             }
         }
+
+        lastDatabaseHash = query.value(2).toString();
+    }
+}
+
+void IGisItem::updateFromDB(quint64 id, QSqlDatabase& db)
+{
+    QSqlQuery query(db);
+
+    query.prepare("SELECT hash FROM items WHERE id=:id");
+    query.bindValue(":id", id);
+    QUERY_EXEC(return );
+
+    /*
+        Test on the hash stored in the database. If the hash is
+        equal to the one stored in this item the item is up-to-date
+     */
+
+    if(query.next())
+    {
+        if(query.value(0).toString() == lastDatabaseHash)
+        {
+            return;
+        }
     }
+    else
+    {
+        // no hash? better leave...
+        return;
+    }
+
+    // reset history and load item again
+    history.reset();
+    loadFromDb(id, db);
 }
 
 QString IGisItem::getNameEx() const
@@ -238,7 +273,7 @@ QString IGisItem::getNameEx() const
 }
 
 
-void IGisItem::updateDecoration(mark_e enable, mark_e disable)
+void IGisItem::updateDecoration(quint32 enable, quint32 disable)
 {
     // update text and icon
     setToolTip(CGisListWks::eColumnName,getInfo());
@@ -247,23 +282,48 @@ void IGisItem::updateDecoration(mark_e enable, mark_e disable)
 
     // update project if necessary
     IGisProject * project = dynamic_cast<IGisProject*>(parent());
-    if(project && (enable & eMarkChanged))
+    if(project && (enable & (eMarkChanged|eMarkNotPart|eMarkNotInDB)))
     {
         project->setChanged();
     }
 
+    // test for lost & found folder
+    if(project && project->getType() == IGisProject::eTypeLostFound)
+    {
+        setText(CGisListWks::eColumnDecoration, QString());
+        setToolTip(CGisListWks::eColumnDecoration, QString());
+        return;
+    }
+
     // set marks in column 1
     quint32 mask = data(1,Qt::UserRole).toUInt();
     mask |=  enable;
     mask &= ~disable;
     setData(1, Qt::UserRole, mask);
 
+    QString tt;
     QString str;
+    if(mask & eMarkNotPart)
+    {
+        tt  += tt.isEmpty() ? "" : "\n";
+        tt  += tr("The item is not part of the project in the database.");
+        tt  += tr("\nIt is either a new item or it has been deleted in the database by someone else.");
+        str += "?";
+    }
+    if(mask & eMarkNotInDB)
+    {
+        tt  += tt.isEmpty() ? "" : "\n";
+        tt  += tr("The item is not in the database.");
+        str += "X";
+    }
     if(mask & eMarkChanged)
     {
+        tt  += tt.isEmpty() ? "" : "\n";
+        tt  += tr("The item might need to be saved");
         str += "*";
     }
     setText(CGisListWks::eColumnDecoration, str);
+    setToolTip(CGisListWks::eColumnDecoration, tt);
 }
 
 
@@ -291,6 +351,7 @@ void IGisItem::changed(const QString &what, const QString &icon)
     event.time      = QDateTime::currentDateTimeUtc();
     event.comment   = what;
     event.icon      = icon;
+    event.who       = CMainWindow::getUser();
 
     QDataStream stream(&event.data, QIODevice::WriteOnly);
     stream.setByteOrder(QDataStream::LittleEndian);
@@ -342,7 +403,7 @@ void IGisItem::setupHistory()
         history.events << history_event_t();
         history_event_t& event = history.events.last();
         event.time      = QDateTime::currentDateTimeUtc();
-        event.comment   = QObject::tr("Initial version.");
+        event.comment   = tr("Initial version.");
         event.icon      = "://icons/48x48/Start.png";
     }
 
@@ -420,10 +481,10 @@ bool IGisItem::isTainted() const
     return flags & eFlagTainted;
 }
 
-bool IGisItem::isOnDevice() const
+qint32 IGisItem::isOnDevice() const
 {
     IGisProject * project = dynamic_cast<IGisProject*>(parent());
-    if(project == 0)
+    if(nullptr == project)
     {
         return false;
     }
@@ -450,8 +511,8 @@ bool IGisItem::setReadOnlyMode(bool readOnly)
         if(isReadOnly() && !readOnly)
         {
             CCanvas::setOverrideCursor(Qt::ArrowCursor, "setReadOnlyMode");
-            QString str = QObject::tr("<h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press 'Ok'.").arg(getName());
-            int res = QMessageBox::warning(CMainWindow::getBestWidgetForParent(), QObject::tr("Read Only Mode..."), str, QMessageBox::Ok|QMessageBox::Abort, QMessageBox::Ok);
+            QString str = tr("<h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press 'Ok'.").arg(getName());
+            int res = QMessageBox::warning(CMainWindow::getBestWidgetForParent(), tr("Read Only Mode..."), str, QMessageBox::Ok|QMessageBox::Abort, QMessageBox::Ok);
             CCanvas::restoreOverrideCursor("setReadOnlyMode");
             if(res != QMessageBox::Ok)
             {
@@ -475,7 +536,7 @@ bool IGisItem::setReadOnlyMode(bool readOnly)
 }
 
 
-const IGisItem::key_t &IGisItem::getKey()
+const IGisItem::key_t &IGisItem::getKey() const
 {
     if(key.item.isEmpty() || key.project.isEmpty())
     {
@@ -493,9 +554,25 @@ const QString& IGisItem::getHash()
     return history.events[history.histIdxCurrent].hash;
 }
 
+
+const QString& IGisItem::getLastDatabaseHash()
+{
+    if(lastDatabaseHash.isEmpty())
+    {
+        lastDatabaseHash = getHash();
+    }
+
+    return lastDatabaseHash;
+}
+
+void IGisItem::setLastDatabaseHash(quint64 id, QSqlDatabase& db)
+{
+    lastDatabaseHash = getHash();
+}
+
 QColor IGisItem::str2color(const QString& name)
 {
-    for(size_t i = 0; i < sizeof(colorMap) / sizeof(color_t); i++)
+    for(size_t i = 0; i < colorMapSize; i++)
     {
         if(QString(colorMap[i].name).toUpper() == name.toUpper())
         {
@@ -508,7 +585,7 @@ QColor IGisItem::str2color(const QString& name)
 
 QString IGisItem::color2str(const QColor& color)
 {
-    for(size_t i = 0; i < sizeof(colorMap) / sizeof(color_t); i++)
+    for(size_t i = 0; i < colorMapSize; i++)
     {
         if(colorMap[i].color == color)
         {
@@ -521,22 +598,21 @@ QString IGisItem::color2str(const QColor& color)
 
 void IGisItem::splitLineToViewport(const QPolygonF& line, const QRectF& extViewport, QList<QPolygonF>& lines)
 {
-    int i;
-    QPointF pt, ptt, pt1;
-    QPolygonF subline;
-    const int size = line.size();
-
     if(line.isEmpty())
     {
         return;
     }
 
-    pt = line[0];
+    QPointF ptt;
+    QPointF pt = line[0];
+
+    QPolygonF subline;
     subline << pt;
 
-    for(i = 1; i < size; i++)
+    const int size = line.size();
+    for(int i = 1; i < size; i++)
     {
-        pt1 = line[i];
+        QPointF pt1 = line[i];
 
         if(!GPS_Math_LineCrossesRect(pt, pt1, extViewport))
         {
@@ -551,13 +627,11 @@ void IGisItem::splitLineToViewport(const QPolygonF& line, const QRectF& extViewp
         }
 
         ptt = pt1 - pt;
-        if(ptt.manhattanLength() < 5)
+        if(ptt.manhattanLength() >= 5)
         {
-            continue;
+            subline << pt1;
+            pt = pt1;
         }
-
-        subline << pt1;
-        pt = pt1;
     }
 
     if(subline.size() > 1)
@@ -573,6 +647,10 @@ QString IGisItem::removeHtml(const QString &str)
     return html.toPlainText();
 }
 
+QString IGisItem::html2Dev(const QString& str)
+{
+    return isOnDevice() == IDevice::eTypeGarmin ? removeHtml(str) : str;
+}
 
 QString IGisItem::toLink(bool isReadOnly, const QString& href, const QString& str, const QString &key)
 {
@@ -598,10 +676,10 @@ QString IGisItem::createText(bool isReadOnly, const QString& cmt, const QString&
     isEmpty = removeHtml(desc).simplified().isEmpty();
     if(!isReadOnly || !isEmpty)
     {
-        str += toLink(isReadOnly, "description", QObject::tr("<h4>Description:</h4>"), key);
+        str += toLink(isReadOnly, "description", tr("<h4>Description:</h4>"), key);
         if(removeHtml(desc).simplified().isEmpty())
         {
-            str += QObject::tr("<p>--- no description ---</p>");
+            str += tr("<p>--- no description ---</p>");
         }
         else
         {
@@ -612,10 +690,10 @@ QString IGisItem::createText(bool isReadOnly, const QString& cmt, const QString&
     isEmpty = removeHtml(cmt).simplified().isEmpty();
     if(!isReadOnly || !isEmpty)
     {
-        str += toLink(isReadOnly, "comment", QObject::tr("<h4>Comment:</h4>"), key);
+        str += toLink(isReadOnly, "comment", tr("<h4>Comment:</h4>"), key);
         if(isEmpty)
         {
-            str += QObject::tr("<p>--- no comment ---</p>");
+            str += tr("<p>--- no comment ---</p>");
         }
         else
         {
@@ -626,10 +704,10 @@ QString IGisItem::createText(bool isReadOnly, const QString& cmt, const QString&
     isEmpty = links.isEmpty();
     if(!isReadOnly || !isEmpty)
     {
-        str += toLink(isReadOnly, "links", QObject::tr("<h4>Links:</h4>"), key);
+        str += toLink(isReadOnly, "links", tr("<h4>Links:</h4>"), key);
         if(isEmpty)
         {
-            str += QObject::tr("<p>--- no links ---</p>");
+            str += tr("<p>--- no links ---</p>");
         }
         else
         {
@@ -657,10 +735,10 @@ QString IGisItem::createText(bool isReadOnly, const QString& desc, const QList<l
     isEmpty = removeHtml(desc).simplified().isEmpty();
     if(!isReadOnly || !isEmpty)
     {
-        str += toLink(isReadOnly, "description", QObject::tr("<h4>Description:</h4>"), key);
+        str += toLink(isReadOnly, "description", tr("<h4>Description:</h4>"), key);
         if(removeHtml(desc).simplified().isEmpty())
         {
-            str += QObject::tr("<p>--- no description ---</p>");
+            str += tr("<p>--- no description ---</p>");
         }
         else
         {
@@ -671,10 +749,10 @@ QString IGisItem::createText(bool isReadOnly, const QString& desc, const QList<l
     isEmpty = links.isEmpty();
     if(!isReadOnly || !isEmpty)
     {
-        str += toLink(isReadOnly, "links", QObject::tr("<h4>Links:</h4>"), key);
+        str += toLink(isReadOnly, "links", tr("<h4>Links:</h4>"), key);
         if(isEmpty)
         {
-            str += QObject::tr("<p>--- no links ---</p>");
+            str += tr("<p>--- no links ---</p>");
         }
         else
         {
@@ -723,5 +801,5 @@ bool IGisItem::isVisible(const QPointF& point, const QPolygonF& viewport, CGisDr
 
 bool IGisItem::isChanged() const
 {
-    return text(CGisListWks::eColumnDecoration) == "*";
+    return text(CGisListWks::eColumnDecoration).contains('*');
 }
diff --git a/src/gis/IGisItem.h b/src/gis/IGisItem.h
index 6f84712..f98b7c5 100644
--- a/src/gis/IGisItem.h
+++ b/src/gis/IGisItem.h
@@ -22,6 +22,7 @@
 #include <QTreeWidgetItem>
 
 #include <QColor>
+#include <QCoreApplication>
 #include <QDateTime>
 #include <QDomNode>
 #include <QMap>
@@ -42,11 +43,13 @@ class IGisProject;
 
 class IGisItem : public QTreeWidgetItem
 {
+    Q_DECLARE_TR_FUNCTIONS(IGisItem)
 public:
     struct history_event_t
     {
         QDateTime time;
         QString hash;
+        QString who = "QMapShack";
         QString icon;
         QString comment;
         QByteArray data;
@@ -58,6 +61,13 @@ public:
         {
         }
 
+        void reset()
+        {
+            histIdxInitial = NOIDX;
+            histIdxCurrent = NOIDX;
+            events.clear();
+        }
+
         qint32 histIdxInitial;
         qint32 histIdxCurrent;
         QList<history_event_t> events;
@@ -126,6 +136,8 @@ public:
     {
         eMarkNone      = 0
         ,eMarkChanged   = 0x00000001
+        ,eMarkNotPart   = 0x00000002
+        ,eMarkNotInDB   = 0x00000004
     };
 
     struct key_t
@@ -156,11 +168,16 @@ public:
     static QMutex mutexItems;
 
     /**
+       @brief If the item is part of a database project it will update itself with the database content
+     */
+    virtual void updateFromDB(quint64 id, QSqlDatabase& db);
+
+    /**
        @brief Update the visual representation of the QTreeWidgetItem
        @param enable
        @param disable
      */
-    virtual void updateDecoration(mark_e enable, mark_e disable);
+    virtual void updateDecoration(quint32 enable, quint32 disable);
 
     /**
        @brief Save the item's data into a GPX structure
@@ -172,7 +189,7 @@ public:
        @brief Get key string to identify object
        @return
      */
-    const key_t& getKey();
+    const key_t& getKey() const;
 
     /**
        @brief Get a hash over the items data.
@@ -187,6 +204,18 @@ public:
     const QString& getHash();
 
     /**
+       @brief Get the hash stored in the database when the item was loaded
+
+       @return The hash as a string
+     */
+    const QString& getLastDatabaseHash();
+
+    /**
+       @brief Read the hash stored in the database
+     */
+    void setLastDatabaseHash(quint64 id, QSqlDatabase& db);
+
+    /**
        @brief Get the icon attached to object
        @return
      */
@@ -249,9 +278,9 @@ public:
        @param mouse     a pointer to the mouse object initiating the action
        @return A null pointer is returned if no screen option are available
      */
-    virtual IScrOpt * getScreenOptions(const QPoint& origin, IMouse * mouse)
+    virtual IScrOpt* getScreenOptions(const QPoint& origin, IMouse * mouse)
     {
-        return 0;
+        return nullptr;
     }
 
     /**
@@ -307,9 +336,9 @@ public:
 
     /**
        @brief Check if item is on a GPS device
-       @return True if the item is stored on a device
+       @return The device type (IDevice::type_e). IDevice::eTypeNone if the item is not stored on a device.
      */
-    bool isOnDevice() const;
+    qint32 isOnDevice() const;
 
     /**
        @brief Check if there are any pending unsaved changes
@@ -390,6 +419,16 @@ public:
     void cutHistory();
 
     /**
+       @brief Create a clone of itself and pass back the pointer
+
+       Add the cloned item to the project with the same index as the original
+
+       @return The pointer of the cloned item
+     */
+    virtual IGisItem * createClone() = 0;
+
+
+    /**
        @brief Remove all HTML tags from a string
        @param str the string
        @return A string without HTML tags
@@ -446,6 +485,7 @@ public:
     };
 
     static const color_t colorMap[];
+    static const size_t colorMapSize;
 
 protected:
     /// set icon of QTreeWidgetItem
@@ -455,11 +495,11 @@ protected:
     /// write waypoint data to an XML snippet
     void writeWpt(QDomElement &xml, const wpt_t &wpt);
     /// generate a unique key from item's data
-    virtual void genKey();
+    virtual void genKey() const;
     /// setup the history structure right after the creation of the item
     void setupHistory();
     /// update current history entry (e.g. to save the flags)
-    void updateHistory();
+    virtual void updateHistory();
     /// convert a color string from GPX to a QT color
     QColor str2color(const QString& name);
     /// convert a QT color to a string to be used in a GPX file
@@ -469,17 +509,34 @@ protected:
     /// call when ever you make a change to the item's data
     virtual void changed(const QString& what, const QString& icon);
 
-    virtual void loadFromDb(quint64 id, QSqlDatabase& db);
+
+    void loadFromDb(quint64 id, QSqlDatabase& db);
 
     bool isVisible(const QRectF& rect, const QPolygonF& viewport, CGisDraw * gis);
     bool isVisible(const QPointF& point, const QPolygonF& viewport, CGisDraw * gis);
 
+    /**
+       @brief Converts a string with HTML tags to a string without HTML depending on the device
+
+       Some devices e.g. Garmin can not handle HTML.
+
+       @param str   a string
+       @return A string with HTML removed depending on the device
+     */
+    QString html2Dev(const QString& str);
+
+    /// see flags_e for possible flags
     quint32 flags = 0;
-    key_t key;
+    /// the item's unique key
+    mutable key_t key;
+    /// each item has an icon for the tree widget
     QPixmap icon;
+    /// the dimensions of the item
     QRectF boundingRect;
-
+    /// that's where the real data is. An item is completely defined by it's history
     history_t history;
+    /// the hash in the database when the item was loaded/saved
+    QString lastDatabaseHash;
 
     enum flags_e
     {
diff --git a/src/gis/IGisWidget.ui b/src/gis/IGisWidget.ui
index 72e5014..79f8b35 100644
--- a/src/gis/IGisWidget.ui
+++ b/src/gis/IGisWidget.ui
@@ -99,6 +99,11 @@
         <string>Name</string>
        </property>
       </column>
+      <column>
+       <property name="text">
+        <string>Age</string>
+       </property>
+      </column>
      </widget>
     </widget>
    </item>
diff --git a/src/gis/WptIcons.cpp b/src/gis/WptIcons.cpp
index 241ce6a..0e5dfd2 100644
--- a/src/gis/WptIcons.cpp
+++ b/src/gis/WptIcons.cpp
@@ -19,6 +19,7 @@
 
 #include "WptIcons.h"
 #include "helpers/CAppSetup.h"
+#include "helpers/CSettings.h"
 
 #include <QtGui>
 
@@ -28,6 +29,8 @@ static QMap<QString, icon_t> wptIcons;
 
 void initWptIcons()
 {
+    wptIcons.clear();
+
     wptIcons["Default"]             = icon_t(wptDefault, 16, 16);
     wptIcons["City (Capitol)"]      = icon_t("://icons/waypoints/32x32/CityCapitol.png", 16, 16);
     wptIcons["City (Large)"]        = icon_t("://icons/waypoints/32x32/CityLarge.png", 16, 16);
@@ -64,10 +67,11 @@ void initWptIcons()
     setWptIconByName("Virtual Cache", "://icons/cache/32x32/virtual.png");
     setWptIconByName("Webcam Cache", "://icons/cache/32x32/webcam.png");
 
-    QDir dirIcon = CAppSetup::getPlattformInstance()->configDir("WaypointIcons");
+    SETTINGS;
+    QDir dirIcon(cfg.value("Paths/externalWptIcons",CAppSetup::getPlattformInstance()->configDir("WaypointIcons").absolutePath()).toString());
 
     QString filename;
-    QStringList filenames = dirIcon.entryList(QDir::Files);
+    QStringList filenames = dirIcon.entryList(QStringList("*.bmp"), QDir::Files);
 
     foreach(filename, filenames)
     {
@@ -92,7 +96,8 @@ void setWptIconByName(const QString& name, const QString& filename)
 
 void setWptIconByName(const QString& name, const QPixmap& icon)
 {
-    QDir dirIcon = CAppSetup::getPlattformInstance()->configDir("WaypointIcons");
+    SETTINGS;
+    QDir dirIcon(cfg.value("Paths/externalWptIcons",CAppSetup::getPlattformInstance()->configDir("WaypointIcons").absolutePath()).toString());
     QString filename = dirIcon.filePath(name + ".png");
 
     icon.save(filename);
@@ -112,8 +117,6 @@ QPixmap loadIcon(const QString& path)
         img.setColor(0,qRgba(0,0,0,0));
         return QPixmap::fromImage(img);
     }
-
-    return QPixmap();
 }
 
 QPixmap getWptIconByName(const QString& name, QPointF &focus, QString * src)
diff --git a/src/gis/WptIcons.h b/src/gis/WptIcons.h
index fa1961e..7b65d16 100644
--- a/src/gis/WptIcons.h
+++ b/src/gis/WptIcons.h
@@ -35,12 +35,12 @@ struct icon_t
 };
 
 
-extern void initWptIcons();
-extern const QMap<QString, icon_t> &getWptIcons();
-extern QPixmap getWptIconByName(const QString& name, QPointF &focus, QString * src = 0);
-extern void setWptIconByName(const QString& name, const QString& filename);
-extern void setWptIconByName(const QString& name, const QPixmap& icon);
-extern QPixmap loadIcon(const QString& path);
+void initWptIcons();
+const QMap<QString, icon_t> &getWptIcons();
+QPixmap getWptIconByName(const QString& name, QPointF &focus, QString * src = nullptr);
+void setWptIconByName(const QString& name, const QString& filename);
+void setWptIconByName(const QString& name, const QPixmap& icon);
+QPixmap loadIcon(const QString& path);
 
 #endif //WPTICONS_H
 
diff --git a/src/gis/db/CDBFolderLostFound.cpp b/src/gis/db/CDBFolderLostFound.cpp
index cfe42ab..cac8c2a 100644
--- a/src/gis/db/CDBFolderLostFound.cpp
+++ b/src/gis/db/CDBFolderLostFound.cpp
@@ -27,7 +27,7 @@
 CDBFolderLostFound::CDBFolderLostFound(QSqlDatabase& db, QTreeWidgetItem *parent)
     : IDBFolder(true, db, eTypeLostFound, 0, parent)
 {
-    setToolTip(CGisListDB::eColumnName, QObject::tr("All your data grouped by folders."));
+    setToolTip(CGisListDB::eColumnName, tr("All your data grouped by folders."));
     setupFromDB();
 
     setCheckState(CGisListDB::eColumnCheckbox, Qt::Unchecked);
@@ -46,24 +46,22 @@ void CDBFolderLostFound::setupFromDB()
 
     qDeleteAll(takeChildren());
 
-
-    query.prepare("SELECT id FROM items AS t1 WHERE NOT EXISTS(SELECT * FROM folder2item WHERE child=t1.id) ORDER BY t1.type, t1.name");
-    QUERY_EXEC(return );
+    QUERY_RUN("SELECT id FROM items AS t1 WHERE NOT EXISTS(SELECT * FROM folder2item WHERE child=t1.id) ORDER BY t1.type, t1.name", return );
     while(query.next())
     {
-        quint64 id      = query.value(0).toULongLong();
+        quint64 id = query.value(0).toULongLong();
         new CDBItem(db, id, this);
         cnt++;
     }
 
     if(cnt)
     {
-        setText(CGisListDB::eColumnName, QObject::tr("Lost & Found (%1)").arg(cnt));
+        setText(CGisListDB::eColumnName, tr("Lost & Found (%1)").arg(cnt));
         setIcon(CGisListDB::eColumnCheckbox, QIcon("://icons/32x32/DeleteMultiple.png"));
     }
     else
     {
-        setText(CGisListDB::eColumnName, QObject::tr("Lost & Found"));
+        setText(CGisListDB::eColumnName, tr("Lost & Found"));
         setIcon(CGisListDB::eColumnCheckbox, QIcon("://icons/32x32/Empty.png"));
     }
 
@@ -77,20 +75,33 @@ void CDBFolderLostFound::update(CEvtW2DAckInfo * info)
     {
         return;
     }
-    setCheckState(CGisListDB::eColumnCheckbox, info->isLoaded ? Qt::Checked : Qt::Unchecked);
+    setCheckState(CGisListDB::eColumnCheckbox, info->checkState);
 }
 
-void CDBFolderLostFound::update()
+bool CDBFolderLostFound::update()
 {
     setupFromDB();
+    return true;
+}
+
+void CDBFolderLostFound::expanding()
+{
+    const int N = childCount();
+    for(int i=0; i<N; i++)
+    {
+        CDBItem * item = dynamic_cast<CDBItem*>(child(i));
+        if(item)
+        {
+            item->updateAge();
+        }
+    }
 }
 
 void CDBFolderLostFound::clear()
 {
     QSqlQuery query(db);
 
-    query.prepare("DELETE FROM items WHERE id NOT IN (SELECT child from folder2item)");
-    QUERY_EXEC(return );
+    QUERY_RUN("DELETE FROM items WHERE id NOT IN (SELECT child from folder2item)", return )
 
     setupFromDB();
 }
diff --git a/src/gis/db/CDBFolderLostFound.h b/src/gis/db/CDBFolderLostFound.h
index c5d60b1..7436080 100644
--- a/src/gis/db/CDBFolderLostFound.h
+++ b/src/gis/db/CDBFolderLostFound.h
@@ -20,24 +20,24 @@
 #define CDBFOLDERLOSTFOUND_H
 
 #include "gis/db/IDBFolder.h"
+#include <QCoreApplication>
 
 class CDBFolderLostFound : public IDBFolder
 {
+    Q_DECLARE_TR_FUNCTIONS(CDBFolderLostFound)
 public:
     CDBFolderLostFound(QSqlDatabase &db, QTreeWidgetItem *parent);
     virtual ~CDBFolderLostFound();
 
-    void update(CEvtW2DAckInfo * info);
-    void update();
-    void expanding()
-    {
-    }
+    void update(CEvtW2DAckInfo * info) override;
+    bool update() override;
+    void expanding() override;
     void clear();
     bool delItem(CDBItem * item);
 
 
 protected:
-    void setupFromDB();
+    void setupFromDB() override;
 };
 
 #endif //CDBFOLDERLOSTFOUND_H
diff --git a/src/gis/db/CDBFolderMysql.cpp b/src/gis/db/CDBFolderMysql.cpp
new file mode 100644
index 0000000..0f89ac6
--- /dev/null
+++ b/src/gis/db/CDBFolderMysql.cpp
@@ -0,0 +1,76 @@
+/**********************************************************************************************
+    Copyright (C) 2014-2015 Oliver Eichler oliver.eichler at gmx.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/CGisListDB.h"
+#include "gis/db/CDBFolderMysql.h"
+
+#include <QSqlError>
+
+CDBFolderMysql::CDBFolderMysql(const QString &server, const QString &port, const QString &user, const QString & passwd, bool noPasswd, const QString &name, QTreeWidget *parent)
+    : IDBFolderSql(IDB::db, parent)
+    , server(server)
+    , port(port)
+    , user(user)
+    , passwd(passwd)
+    , noPasswd(noPasswd)
+{
+    setToolTip(CGisListDB::eColumnName, tr("All your data grouped by folders."));
+    setText(CGisListDB::eColumnName, name);
+
+    if(setupDB(server, port, user, passwd, noPasswd, name, name))
+    {
+        setIcon(CGisListDB::eColumnCheckbox, QIcon("://icons/32x32/MySQL.png"));
+
+        setupFromDB();
+
+        setChildIndicatorPolicy(QTreeWidgetItem::ShowIndicator);
+    }
+    else
+    {
+        setIcon(CGisListDB::eColumnCheckbox, QIcon("://icons/32x32/MySQLNoConn.png"));
+    }
+}
+
+QString CDBFolderMysql::getDBInfo() const
+{
+    QString str = "<div style='font-weight: bold;'>" + IDB::db.connectionName() + "</div><br />";
+    str += tr("MySQL Database") + "<br />";
+    if(!port.isEmpty())
+    {
+        str += tr("Server: ") + QString("<i>%1:%2</i>").arg(server).arg(port);
+    }
+    else
+    {
+        str += tr("Server: ") + QString("<i>%1</i>").arg(server);
+    }
+
+    if(noPasswd)
+    {
+        str += tr(" (No PW)");
+    }
+
+    if(!isUsable())
+    {
+        const QString &dbError = IDB::db.lastError().databaseText();
+        const QString &drError = IDB::db.lastError().driverText();
+
+        str += "<br />" + tr("Error: ") + QString("<span style=\"color:#f00; font-weight:bold;\">%1</span>").arg(dbError.isEmpty() ? drError : dbError);
+    }
+
+    return str;
+}
diff --git a/src/mouse/line/CLineOpMovePoint.h b/src/gis/db/CDBFolderMysql.h
similarity index 52%
copy from src/mouse/line/CLineOpMovePoint.h
copy to src/gis/db/CDBFolderMysql.h
index d2eaa22..30a07f7 100644
--- a/src/mouse/line/CLineOpMovePoint.h
+++ b/src/gis/db/CDBFolderMysql.h
@@ -16,32 +16,38 @@
 
 **********************************************************************************************/
 
-#ifndef CLINEOPMOVEPOINT_H
-#define CLINEOPMOVEPOINT_H
+#ifndef CDBFOLDERMYSQL_H
+#define CDBFOLDERMYSQL_H
 
-#include "mouse/line/ILineOp.h"
+#include "gis/db/IDBFolderSql.h"
+#include "gis/db/IDBMysql.h"
 
-class CLineOpMovePoint : public ILineOp
+
+class CDBFolderMysql : public IDBFolderSql, public IDBMysql
 {
+    Q_DECLARE_TR_FUNCTIONS(CDBFolderMysql)
 public:
-    CLineOpMovePoint(SGisLine& points, CGisDraw *gis, CCanvas *canvas, IMouseEditLine *parent);
-    virtual ~CLineOpMovePoint();
-
-    void mousePressEventEx(QMouseEvent * e);
-    void mouseMoveEventEx(QMouseEvent * e);
-    void mouseReleaseEventEx(QMouseEvent * e)
+    CDBFolderMysql(const QString &server, const QString &port, const QString &user, const QString &passwd, bool noPasswd, const QString &name, QTreeWidget *parent);
+    virtual ~CDBFolderMysql() = default;
+
+    const QString& getServer() const {return server; }
+    const QString& getPort() const {return port; }
+    const QString& getUser() const {return user; }
+    const QString& getPasswd() const {return passwd; }
+    bool hasNoPasswd() const
     {
+        return noPasswd;
     }
 
-    void drawFg(QPainter& p);
-
-    void canvasPanned(QPointF pos);
-
-    bool abortStep();
+    QString getDBInfo() const;
 
 private:
-    bool movePoint = false;
+    const QString server;
+    const QString port;
+    const QString user;
+    const QString passwd;
+    const bool noPasswd;
 };
 
-#endif //CLINEOPMOVEPOINT_H
+#endif //CDBFOLDERMYSQL_H
 
diff --git a/src/gis/db/CDBFolderDatabase.cpp b/src/gis/db/CDBFolderSqlite.cpp
similarity index 51%
rename from src/gis/db/CDBFolderDatabase.cpp
rename to src/gis/db/CDBFolderSqlite.cpp
index a42360f..4cceaa1 100644
--- a/src/gis/db/CDBFolderDatabase.cpp
+++ b/src/gis/db/CDBFolderSqlite.cpp
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+    Copyright (C) 2014-2015 Oliver Eichler oliver.eichler at gmx.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -17,40 +17,42 @@
 **********************************************************************************************/
 
 #include "gis/CGisListDB.h"
-#include "gis/db/CDBFolderDatabase.h"
-#include "gis/db/CDBFolderLostFound.h"
+#include "gis/db/CDBFolderSqlite.h"
 
-CDBFolderDatabase::CDBFolderDatabase(const QString& filename, const QString& name, QTreeWidget *parent)
-    : IDBFolder(false, IDB::db, eTypeDatabase, 1, parent)
+#include <QtCore>
+
+CDBFolderSqlite::CDBFolderSqlite(const QString& filename, const QString& name, QTreeWidget *parent)
+    : IDBFolderSql(IDB::db, parent)
     , filename(filename)
-    , folderLostFound(0)
 {
-    setToolTip(CGisListDB::eColumnName, QObject::tr("All your data grouped by folders."));
-    setIcon(CGisListDB::eColumnCheckbox, QIcon("://icons/32x32/Database.png"));
+    setToolTip(CGisListDB::eColumnName, tr("All your data grouped by folders."));
+    setIcon(CGisListDB::eColumnCheckbox, QIcon("://icons/32x32/SQLite.png"));
     setText(CGisListDB::eColumnName, name);
 
     setupDB(filename, name);
 
     setupFromDB();
-}
 
-CDBFolderDatabase::~CDBFolderDatabase()
-{
+    setChildIndicatorPolicy(QTreeWidgetItem::ShowIndicator);
 }
 
-void CDBFolderDatabase::expanding()
+CDBFolderSqlite::~CDBFolderSqlite()
 {
-    IDBFolder::expanding();
-
-    folderLostFound  = new CDBFolderLostFound(IDB::db, 0);
-    insertChild(0, folderLostFound);
 }
 
-void CDBFolderDatabase::updateLostFound()
+QString CDBFolderSqlite::getDBInfo() const
 {
-    if(folderLostFound)
+    QString str = "<div style='font-weight: bold;'>" + IDB::db.connectionName() + "</div><br />";
+    str += tr("SQLite Database") + "<br />";
+
+    QString path = IDB::db.databaseName();
+    #ifndef Q_OS_WIN
+    if(path.startsWith(QDir::homePath()))
     {
-        folderLostFound->update();
+        path = "~" + path.remove(0, QDir::homePath().length());
     }
-}
+    #endif
 
+    str += tr("File: ") + QString("<i>%1</i>").arg(path);
+    return str;
+}
diff --git a/src/mouse/line/CLineOpDeletePoint.h b/src/gis/db/CDBFolderSqlite.h
similarity index 66%
copy from src/mouse/line/CLineOpDeletePoint.h
copy to src/gis/db/CDBFolderSqlite.h
index 0083f26..7b6cfc4 100644
--- a/src/mouse/line/CLineOpDeletePoint.h
+++ b/src/gis/db/CDBFolderSqlite.h
@@ -16,27 +16,29 @@
 
 **********************************************************************************************/
 
-#ifndef CLINEOPDELETEPOINT_H
-#define CLINEOPDELETEPOINT_H
+#ifndef CDBFOLDERSQLITE_H
+#define CDBFOLDERSQLITE_H
 
-#include "mouse/line/ILineOp.h"
+#include "gis/db/IDBFolderSql.h"
+#include "gis/db/IDBSqlite.h"
 
-class CLineOpDeletePoint : public ILineOp
+
+class CDBFolderSqlite : public IDBFolderSql, public IDBSqlite
 {
+    Q_DECLARE_TR_FUNCTIONS(CDBFolderSqlite)
 public:
-    CLineOpDeletePoint(SGisLine& points, CGisDraw *gis, CCanvas *canvas, IMouseEditLine *parent);
-    virtual ~CLineOpDeletePoint();
+    CDBFolderSqlite(const QString &filename, const QString &name, QTreeWidget *parent);
+    virtual ~CDBFolderSqlite();
 
-    void mousePressEventEx(QMouseEvent * e)
+    const QString& getFilename()
     {
+        return filename;
     }
-    void mouseMoveEventEx(QMouseEvent * e);
-    void mouseReleaseEventEx(QMouseEvent *e);
 
-    void drawFg(QPainter& p);
+    QString getDBInfo() const;
 
 private:
+    QString filename;
 };
-
-#endif //CLINEOPDELETEPOINT_H
+#endif //CDBFOLDERSQLITE_H
 
diff --git a/src/gis/db/CDBItem.cpp b/src/gis/db/CDBItem.cpp
index 07e6707..665500c 100644
--- a/src/gis/db/CDBItem.cpp
+++ b/src/gis/db/CDBItem.cpp
@@ -31,19 +31,21 @@ CDBItem::CDBItem(QSqlDatabase &db, quint64 id, IDBFolder *parent)
 {
 //    qDebug() << "CDBItem::CDBItem()";
     QSqlQuery query(db);
-    query.prepare("SELECT type, key, icon, name, comment FROM items WHERE id=:id");
+    query.prepare("SELECT type, keyqms, icon, name, comment FROM items WHERE id=:id");
     query.bindValue(":id", id);
     QUERY_EXEC(return );
     if(query.next())
     {
         QPixmap pixmap;
         type = query.value(0).toInt();
-        key = query.value(1).toString();
+        key  = query.value(1).toString();
         pixmap.loadFromData(query.value(2).toByteArray(), "PNG");
         setIcon(CGisListDB::eColumnCheckbox, pixmap);
         setText(CGisListDB::eColumnName, query.value(3).toString());
         setToolTip(CGisListDB::eColumnName, query.value(4).toString());
     }
+
+    updateAge();
 }
 
 CDBItem::~CDBItem()
@@ -51,25 +53,73 @@ CDBItem::~CDBItem()
 //    qDebug() << "CDBItem::~CDBItem()";
 }
 
+void CDBItem::updateAge()
+{
+    QSqlQuery query(db);
+    query.prepare("SELECT trash FROM items WHERE id=:id");
+    query.bindValue(":id", id);
+    QUERY_EXEC(return );
+    if(!query.next())
+    {
+        return;
+    }
+
+    if(parent()->type() == IDBFolder::eTypeLostFound)
+    {
+        QString date = query.value(0).toString();
+        QDateTime timestamp;
+
+        // The time format can differ by database type
+        if(date.contains('T'))
+        {
+            timestamp = QDateTime::fromString(date,"yyyy-MM-ddThh:mm:ss");
+        }
+        else
+        {
+            timestamp = QDateTime::fromString(date,"yyyy-MM-dd hh:mm:ss");
+        }
+
+        if(timestamp.isValid())
+        {
+            quint64 diff = QDateTime::currentDateTimeUtc().toTime_t() - timestamp.toTime_t();
+            if(diff < (60*60))
+            {
+                setText(CGisListDB::eColumnTime, tr("%1 min.").arg(diff/60));
+            }
+            else if(diff < (60*60*24))
+            {
+                setText(CGisListDB::eColumnTime, tr("%1 h").arg(diff/(60*60)));
+            }
+            else
+            {
+                setText(CGisListDB::eColumnTime, tr("%1 days").arg(diff/(60*60*24)));
+            }
+        }
+    }
+}
+
 void CDBItem::toggle()
 {
     IDBFolder * folder = dynamic_cast<IDBFolder*>(parent());
-    if(folder == 0)
+    if(nullptr == folder)
     {
         return;
     }
 
     if(checkState(CGisListDB::eColumnCheckbox) == Qt::Checked)
     {
+        // make sure the project is shown on the workspace
         CEvtD2WShowFolder * evt1 = new CEvtD2WShowFolder(folder->getId(), folder->getDBName());
         CGisWidget::self().postEventForWks(evt1);
 
+        // tell the project to load the item from the database
         CEvtD2WShowItems * evt2 = new CEvtD2WShowItems(folder->getId(), folder->getDBName());
         evt2->items << evt_item_t(id, type);
         CGisWidget::self().postEventForWks(evt2);
     }
     else
     {
+        // tell the project to remove the item
         CEvtD2WHideItems * evt2 = new CEvtD2WHideItems(folder->getId(), folder->getDBName());
         evt2->keys << key;
         CGisWidget::self().postEventForWks(evt2);
@@ -79,7 +129,7 @@ void CDBItem::toggle()
 void CDBItem::remove()
 {
     IDBFolder * folder = dynamic_cast<IDBFolder*>(parent());
-    if(folder == 0)
+    if(nullptr == folder)
     {
         return;
     }
diff --git a/src/gis/db/CDBItem.h b/src/gis/db/CDBItem.h
index 475be4e..aaad194 100644
--- a/src/gis/db/CDBItem.h
+++ b/src/gis/db/CDBItem.h
@@ -19,6 +19,7 @@
 #ifndef CDBITEM_H
 #define CDBITEM_H
 
+#include <QCoreApplication>
 #include <QTreeWidgetItem>
 
 class IDBFolder;
@@ -26,6 +27,7 @@ class QSqlDatabase;
 
 class CDBItem : public QTreeWidgetItem
 {
+    Q_DECLARE_TR_FUNCTIONS(CDBItem)
 public:
     CDBItem(QSqlDatabase& db, quint64 id, IDBFolder * parent);
     virtual ~CDBItem();
@@ -38,14 +40,24 @@ public:
     {
         return key;
     }
+
+    /**
+       @brief Send show/hide events to the workspace
+     */
     void toggle();
+
+    /**
+       @brief Delete the folder/item relation in the database
+     */
     void remove();
 
+    void updateAge();
+
 private:
     QSqlDatabase& db;
     quint64 id;
 
-    int type;
+    int type = 0;
     QString key;
 };
 
diff --git a/src/gis/db/CDBProject.cpp b/src/gis/db/CDBProject.cpp
index 0df0c95..ffa4cc1 100644
--- a/src/gis/db/CDBProject.cpp
+++ b/src/gis/db/CDBProject.cpp
@@ -20,6 +20,7 @@
 #include "gis/CGisWidget.h"
 #include "gis/db/CDBProject.h"
 #include "gis/db/CSelectSaveAction.h"
+#include "gis/db/IDB.h"
 #include "gis/db/macros.h"
 #include "gis/gpx/CGpxProject.h"
 #include "gis/ovl/CGisItemOvlArea.h"
@@ -60,11 +61,28 @@ CDBProject::CDBProject(const QString& dbName, quint64 id, CGisListWks *parent)
 
     if(data.isEmpty())
     {
+        // Make sure the key is reset
+        key.clear();
         metadata.name = name;
-        metadata.time = QDateTime::fromString(date,"yyyy-MM-dd hh:mm:ss");
 
-        query.prepare("UPDATE folders SET key=:key WHERE id=:id");
-        query.bindValue(":key", getKey());
+        // The time format can differ by database type
+        if(date.contains('T'))
+        {
+            metadata.time = QDateTime::fromString(date,"yyyy-MM-ddThh:mm:ss");
+        }
+        else
+        {
+            metadata.time = QDateTime::fromString(date,"yyyy-MM-dd hh:mm:ss");
+        }
+
+        // Still no valid date? Bad as we need it to produce an unique key.
+        if(!metadata.time.isValid())
+        {
+            metadata.time = QDateTime::currentDateTimeUtc();
+        }
+
+        query.prepare("UPDATE folders SET keyqms=:keyqms WHERE id=:id");
+        query.bindValue(":keyqms", getKey());
         query.bindValue(":id", id);
         QUERY_EXEC(return );
     }
@@ -85,7 +103,7 @@ CDBProject::CDBProject(const QString& dbName, quint64 id, CGisListWks *parent)
 
 CDBProject::~CDBProject()
 {
-    CEvtW2DAckInfo * info = new CEvtW2DAckInfo(false, getId(), db.connectionName());
+    CEvtW2DAckInfo * info = new CEvtW2DAckInfo(Qt::Unchecked, getId(), getDBName(), getDBHost());
     CGisWidget::self().postEventForDb(info);
 }
 
@@ -94,8 +112,8 @@ void CDBProject::restoreDBLink()
     db = QSqlDatabase::database(filename);
 
     QSqlQuery query(db);
-    query.prepare("SELECT id FROM folders WHERE key=:key");
-    query.bindValue(":key", getKey());
+    query.prepare("SELECT id FROM folders WHERE keyqms=:keyqms");
+    query.bindValue(":keyqms", getKey());
     QUERY_EXEC(return );
     if(query.next())
     {
@@ -109,6 +127,7 @@ void CDBProject::setupName(const QString &defaultName)
 {
     IGisProject::setupName(defaultName);
 
+    // look for a parent folder's name to be used as suffix
     QSqlQuery query(db);
     query.prepare("SELECT t1.name FROM folders AS t1 WHERE id=(SELECT parent FROM folder2folder WHERE child=:id) AND (t1.type=:type1 OR t1.type=:type2)");
     query.bindValue(":id", id);
@@ -123,13 +142,13 @@ void CDBProject::setupName(const QString &defaultName)
 }
 
 
-void CDBProject::postStatus()
+void CDBProject::postStatus(bool updateLostFound)
 {
-    CEvtW2DAckInfo * info = new CEvtW2DAckInfo(true, getId(), db.connectionName());
+    // collect the keys of all child items and post them to the database view
+    CEvtW2DAckInfo * info = new CEvtW2DAckInfo(getId(), getDBName(), getDBHost());
 
-    bool changedItems = false;
-
-    const int N = childCount();
+    bool changedItems   = false;
+    const int N         = childCount();
     for(int n = 0; n < N; n++)
     {
         IGisItem * item = dynamic_cast<IGisItem*>(child(n));
@@ -140,7 +159,32 @@ void CDBProject::postStatus()
         }
     }
 
-    updateItems();
+    // check if all items are loaded
+    if(type != eTypeLostFound)
+    {
+        QSqlQuery query(db);
+        query.prepare("SELECT COUNT(*) FROM folder2item WHERE parent=:parent");
+        query.bindValue(":parent", getId());
+        QUERY_EXEC();
+
+        if(query.next() && (query.value(0).toInt() != info->keysChildren.count()))
+        {
+            checkState = Qt::PartiallyChecked;
+        }
+        else
+        {
+            checkState = Qt::Checked;
+        }
+    }
+    else
+    {
+        checkState = Qt::Checked;
+    }
+    info->checkState        = checkState;
+    info->updateLostFound   = updateLostFound;
+
+    // update item counters and track/waypoint correlation
+    // updateItems(); <--- don't! this is causing a crash
     if(!changedItems)
     {
         setText(CGisListWks::eColumnDecoration,"");
@@ -149,43 +193,70 @@ void CDBProject::postStatus()
     CGisWidget::self().postEventForDb(info);
 }
 
-bool CDBProject::saveAs()
+
+int CDBProject::checkForAction2(IGisItem * item, quint64 &idItem, QString& hashItem, QSqlQuery &query)
 {
-    SETTINGS;
-    QString path = cfg.value("Paths/lastGisPath", QDir::homePath()).toString();
+    int action = eActionNone;
 
-    QString filter = filedialogFilterQMS;
-    QString fn = QFileDialog::getSaveFileName(CMainWindow::getBestWidgetForParent(), QObject::tr("Save GIS data to..."), path, filedialogSaveFilters, &filter);
+    query.prepare("SELECT hash, last_user, last_change FROM items WHERE id=:id");
+    query.bindValue(":id", idItem);
+    QUERY_EXEC(throw eReasonQueryFail);
 
-    if(fn.isEmpty())
+    if(query.next())
     {
-        return false;
-    }
+        QString hash    = query.value(0).toString();
+        QString user    = query.value(1).toString();
+        QString date    = query.value(2).toString();
 
-    bool res = false;
-    if(filter == filedialogFilterGPX)
-    {
-        res = CGpxProject::saveAs(fn, *this);
-    }
-    else if(filter == filedialogFilterQMS)
-    {
-        res = CQmsProject::saveAs(fn, *this);
+        if(hash == hashItem)
+        {
+            // there seems to be no difference
+            return action;
+        }
+
+        hashItem = hash;
+
+        QString msg = tr(
+            "The item %1 has been changed by %2 (%3). \n\n"
+            "To solve this conflict you can create and save a clone, force your version or drop "
+            "your version and take the one from the database"
+            ).arg(item->getNameEx()).arg(user).arg(date);
+
+        QMessageBox msgBox(QMessageBox::Question, tr("Conflict with database..."), msg, QMessageBox::NoButton, CMainWindow::self().getBestWidgetForParent());
+        QAbstractButton* pButClone  = msgBox.addButton(tr("Clone && Save"), QMessageBox::YesRole);
+        QAbstractButton* pButForce  = msgBox.addButton(tr("Force Save"),    QMessageBox::ApplyRole);
+        QAbstractButton* pButUpdate = msgBox.addButton(tr("Take remote"),   QMessageBox::DestructiveRole);
+        msgBox.addButton(QMessageBox::Abort);
+
+        msgBox.exec();
+
+        if(msgBox.clickedButton() == pButClone)
+        {
+            action = eActionClone;
+        }
+        else if(msgBox.clickedButton() == pButForce)
+        {
+            action = eActionUpdate;
+        }
+        else if(msgBox.clickedButton() == pButUpdate)
+        {
+            action = eActionReload;
+        }
     }
     else
     {
-        return false;
+        // item has been removed. By throwing eReasonConflict
+        // the save procedure is restarted for the item and
+        // the item should be inserted into the database.
+        throw eReasonConflict;
     }
 
-    path = QFileInfo(fn).absolutePath();
-    cfg.setValue("Paths/lastGisPath", path);
 
-    return res;
+    return action;
 }
 
-void CDBProject::updateItem(IGisItem * item, quint64 idItem)
+void CDBProject::updateItem(IGisItem *&item, quint64 idItem, QSqlQuery &query)
 {
-    QSqlQuery query(db);
-
     // serialize complete history of item
     QByteArray data;
     QDataStream in(&data, QIODevice::WriteOnly);
@@ -200,20 +271,92 @@ void CDBProject::updateItem(IGisItem * item, quint64 idItem)
     pixmap.save(&buffer, "PNG");
     buffer.seek(0);
 
-    query.prepare("UPDATE items SET type=:type, key=:key, icon=:icon, name=:name, comment=:comment, data=:data WHERE id=:id");
+    QString hashInDb = item->getLastDatabaseHash();
+
+    query.prepare("UPDATE items SET type=:type, keyqms=:keyqms, icon=:icon, name=:name, comment=:comment, data=:data, hash=:hash WHERE id=:id AND hash=:oldhash");
     query.bindValue(":type",    item->type());
-    query.bindValue(":key",     item->getKey().item);
+    query.bindValue(":keyqms",  item->getKey().item);
     query.bindValue(":icon",    buffer.data());
     query.bindValue(":name",    item->getName());
     query.bindValue(":comment", item->getInfo());
-    query.bindValue(":data", data);
-    query.bindValue(":id", idItem);
-    QUERY_EXEC(throw -1);
+    query.bindValue(":data",    data);
+    query.bindValue(":hash",    item->getHash());
+    query.bindValue(":id",      idItem);
+    query.bindValue(":oldhash", hashInDb);
+    QUERY_EXEC(throw eReasonQueryFail);
+
+    if(query.numRowsAffected())
+    {
+        // the update has been successful.
+        // set current hash as database hash.
+        item->setLastDatabaseHash(idItem, db);
+    }
+    else
+    {
+        // there are two reasons why an update does not affect a row
+        // 1) the hash is different because another user changed the item
+        // 2) the id was not found because another user removed the item
+        // 3) the items was completely identical, therefore no row was affected.
+        int action = checkForAction2(item, idItem, hashInDb, query);
+
+        switch(action)
+        {
+        case eActionClone:
+        {
+            IGisItem * item2    = item->createClone();
+            quint64 idItem      = insertItem(item2, query);
+
+            delete item;
+            item = item2;
+
+            query.prepare("INSERT INTO folder2item (parent, child) VALUES (:parent, :child)");
+            query.bindValue(":parent", id);
+            query.bindValue(":child", idItem);
+            QUERY_EXEC(throw eReasonQueryFail);
+            break;
+        }
+
+        case eActionUpdate:
+        {
+            // hashInDb has been updated by checkForAction2() by the one stored in the database
+            // therefore the update should succeed now.
+            query.prepare("UPDATE items SET type=:type, keyqms=:keyqms, icon=:icon, name=:name, comment=:comment, data=:data, hash=:hash WHERE id=:id AND hash=:oldhash");
+            query.bindValue(":type",    item->type());
+            query.bindValue(":keyqms",  item->getKey().item);
+            query.bindValue(":icon",    buffer.data());
+            query.bindValue(":name",    item->getName());
+            query.bindValue(":comment", item->getInfo());
+            query.bindValue(":data",    data);
+            query.bindValue(":hash",    item->getHash());
+            query.bindValue(":id",      idItem);
+            query.bindValue(":oldhash", hashInDb);
+            QUERY_EXEC(throw eReasonQueryFail);
+
+            if(query.numRowsAffected())
+            {
+                item->setLastDatabaseHash(idItem, db);
+            }
+            else
+            {
+                // in the case someone updated the item between calling
+                // checkForAction2() and this update our update fails.
+                // In this case we throw eReasonConflict to restart the
+                // save procedure for this item.
+                throw eReasonConflict;
+            }
+            break;
+        }
+
+        case eActionReload:
+            item->updateFromDB(idItem, db);
+            break;
+        }
+    }
 }
 
-quint64 CDBProject::insertItem(IGisItem * item)
+quint64 CDBProject::insertItem(IGisItem * item, QSqlQuery &query)
 {
-    QSqlQuery query(db);
+    quint64 idItem = 0;
 
     // serialize complete history of item
     QByteArray data;
@@ -229,48 +372,180 @@ quint64 CDBProject::insertItem(IGisItem * item)
     pixmap.save(&buffer, "PNG");
     buffer.seek(0);
 
-    query.prepare("INSERT INTO items (type, key, icon, name, comment, data) VALUES (:type, :key, :icon, :name, :comment, :data)");
+    query.prepare("INSERT INTO items (type, keyqms, icon, name, comment, data, hash) VALUES (:type, :keyqms, :icon, :name, :comment, :data, :hash)");
     query.bindValue(":type",    item->type());
-    query.bindValue(":key",     item->getKey().item);
+    query.bindValue(":keyqms",  item->getKey().item);
     query.bindValue(":icon",    buffer.data());
     query.bindValue(":name",    item->getName());
     query.bindValue(":comment", item->getInfo());
-    query.bindValue(":data", data);
-    QUERY_EXEC(throw -1);
+    query.bindValue(":data",    data);
+    query.bindValue(":hash",    item->getHash());
+    QUERY_EXEC(throw eReasonQueryFail);
 
-    query.prepare("SELECT last_insert_rowid() from items");
-    QUERY_EXEC(throw -1);
-    query.next();
-    quint64 idItem = query.value(0).toULongLong();
-    if(idItem == 0)
+    if(query.numRowsAffected())
+    {
+        idItem = IDB::getLastInsertID(db, "items");
+        if(idItem == 0)
+        {
+            qDebug() << "childId equals 0. bad.";
+            throw eReasonUnexpected;
+        }
+        item->setLastDatabaseHash(idItem, db);
+    }
+    else
     {
-        qDebug() << "childId equals 0. bad.";
-        throw -1;
+        throw eReasonConflict;
     }
 
     return idItem;
 }
 
-bool CDBProject::save()
+int CDBProject::checkForAction1(IGisItem * item, quint64& idItem, int& lastResult, QSqlQuery &query)
 {
-    bool clearProjectChangeFlag = true;
-    int lastResult = CSelectSaveAction::eResultNone;
+    int action = eActionNone;
+
+    // test if item exists in database
+    quint32 typeItem = 0;
+    query.prepare("SELECT id, type FROM items WHERE keyqms=:keyqms");
+    query.bindValue(":keyqms", item->getKey().item);
+    QUERY_EXEC(throw eReasonQueryFail);
+
+
+    if(query.next())
+    {
+        idItem      = query.value(0).toULongLong();
+        typeItem    = query.value(1).toUInt();
+
+        // check if relation already exists.
+        query.prepare("SELECT id FROM folder2item WHERE parent=:parent AND child=:child");
+        query.bindValue(":parent", id);
+        query.bindValue(":child", idItem);
+        QUERY_EXEC(throw eReasonQueryFail);
+
+        if(!query.next())
+        {
+            // item is already in database but folder relation does not exit
+            int result  = lastResult;
+
+            if(lastResult == CSelectSaveAction::eResultNone)
+            {
+                // Build the dialog to ask for user action
+
+                IGisItem * item1 = nullptr;
+
+                // load item from database for a compare
+                switch(typeItem)
+                {
+                case IGisItem::eTypeWpt:
+                    item1 = new CGisItemWpt(idItem, db, 0);
+                    break;
+
+                case IGisItem::eTypeTrk:
+                    item1 = new CGisItemTrk(idItem, db, 0);
+                    break;
+
+                case IGisItem::eTypeRte:
+                    item1 = new CGisItemRte(idItem, db, 0);
+                    break;
 
+                case IGisItem::eTypeOvl:
+                    item1 = new CGisItemOvlArea(idItem, db, 0);
+                    break;
+
+                default:
+                    ;
+                }
+
+                if(nullptr == item1)
+                {
+                    qDebug() << "no item to compare!?.";
+                    throw eReasonUnexpected;
+                }
+
+                CSelectSaveAction dlg(item, item1, CMainWindow::self().getBestWidgetForParent());
+                dlg.exec();
+
+                result = dlg.getResult();
+                if(dlg.allOthersToo())
+                {
+                    lastResult = result;
+                }
+            }
+
+            if(result == CSelectSaveAction::eResultNone)
+            {
+                // no decision by user, cancel operation.
+                // this is different to a skip as a skip will
+                // just skip saving the data, but the item to folder
+                // link will be still processed.
+                return eActionNone;
+            }
+
+            // the item is in the database and has no relation to the folder -> update only if the user confirms.
+            action = eActionLink;
+
+            switch(result)
+            {
+            case CSelectSaveAction::eResultSave:
+                action |= eActionUpdate;
+                break;
+
+            case CSelectSaveAction::eResultSkip:
+                action |= eActionReload;
+                break;
+
+            case CSelectSaveAction::eResultClone:
+                action |= eActionClone;
+                break;
+            }
+        }
+        else
+        {
+            // the item is in the database and has a relation to the folder -> simply update item
+            action = eActionUpdate;
+        }
+    }
+    else
+    {
+        action = eActionInsert|eActionLink;
+    }
+
+    return action;
+}
+
+
+bool CDBProject::save()
+{
     QSqlQuery query(db);
+    bool stop       = false;
+    bool success    = true;
+    int lastResult  = CSelectSaveAction::eResultNone;
 
-    int N = childCount();
-    PROGRESS_SETUP(QObject::tr("Save ..."), 0, N, CMainWindow::getBestWidgetForParent());
+    // check if project is still part of the databasse
+    query.prepare("SELECT keyqms FROM folders WHERE id=:id");
+    query.bindValue(":id", id);
+    QUERY_EXEC(return false);
+    if(!query.next())
+    {
+        QMessageBox::critical(CMainWindow::self().getBestWidgetForParent()
+                              , tr("Missing folder...")
+                              , tr("Failed to save project. The folder has been deleted in the database.")
+                              , QMessageBox::Abort
+                              );
+        return false;
+    }
 
-    CEvtW2DAckInfo * info = new CEvtW2DAckInfo(true, getId(), db.connectionName());
+    int N = childCount();
+    PROGRESS_SETUP(tr("Save ..."), 0, N, CMainWindow::getBestWidgetForParent());
 
-    try
+    for(int i = 0; (i < N) && !stop; i++)
     {
-        for(int i = 0; i < N; i++)
+        try
         {
-            PROGRESS(i, throw 0);
+            PROGRESS(i, throw eReasonCancel);
 
             IGisItem * item = dynamic_cast<IGisItem*>(child(i));
-            if(item == 0)
+            if(nullptr == item)
             {
                 continue;
             }
@@ -278,160 +553,97 @@ bool CDBProject::save()
             // skip unchanged items
             if(!item->isChanged())
             {
-                info->keysChildren << item->getKey().item;
                 continue;
             }
 
-            // test if item exists in database
-            quint64 idItem      = 0;
-            quint32 typeItem    = 0;
-            query.prepare("SELECT id, type FROM items WHERE key=:key");
-            query.bindValue(":key", item->getKey().item);
-            QUERY_EXEC(throw -1);
+            quint64 idItem = 0;
 
-            if(query.next())
+            int action = checkForAction1(item, idItem, lastResult, query);
+
+            if(action & eActionInsert)
             {
-                idItem      = query.value(0).toULongLong();
-                typeItem    = query.value(1).toUInt();
+                idItem = insertItem(item, query);
+            }
 
-                // check if relation already exists.
-                query.prepare("SELECT id FROM folder2item WHERE parent=:parent AND child=:child");
-                query.bindValue(":parent", id);
-                query.bindValue(":child", idItem);
-                QUERY_EXEC();
+            if(action & eActionUpdate)
+            {
+                updateItem(item, idItem, query);
+            }
 
-                if(!query.next())
-                {
-                    // update dialog
-                    int result  = lastResult;
-
-                    if(lastResult == CSelectSaveAction::eResultNone)
-                    {
-                        IGisItem * item1 = 0;
-
-                        // load item from database for a compare
-                        switch(typeItem)
-                        {
-                        case IGisItem::eTypeWpt:
-                            item1 = new CGisItemWpt(idItem, db, 0);
-                            break;
-
-                        case IGisItem::eTypeTrk:
-                            item1 = new CGisItemTrk(idItem, db, 0);
-                            break;
-
-                        case IGisItem::eTypeRte:
-                            item1 = new CGisItemRte(idItem, db, 0);
-                            break;
-
-                        case IGisItem::eTypeOvl:
-                            item1 = new CGisItemOvlArea(idItem, db, 0);
-                            break;
-
-                        default:
-                            ;
-                        }
-
-                        if(item1 == 0)
-                        {
-                            qDebug() << "no item to compare!?.";
-                            throw -1;
-                        }
-
-
-                        CSelectSaveAction dlg(item, item1, &progress);
-                        dlg.exec();
-
-                        result = dlg.getResult();
-                        if(dlg.allOthersToo())
-                        {
-                            lastResult = result;
-                        }
-                    }
-                    if(result == CSelectSaveAction::eResultNone)
-                    {
-                        // no decision by user, cancel operation.
-                        // this is different to a skip as a skip will
-                        // just skip saving the data, but the item to folder
-                        // link will be still processed.
-                        clearProjectChangeFlag = false;
-                        continue;
-                    }
-
-                    // create relation
-                    query.prepare("INSERT INTO folder2item (parent, child) VALUES (:parent, :child)");
-                    query.bindValue(":parent", id);
-                    query.bindValue(":child", idItem);
-                    QUERY_EXEC(throw -1);
-
-                    if(result == CSelectSaveAction::eResultSave)
-                    {
-                        // the item is in the database and has no relation to the folder -> update only if the user confirms.
-                        updateItem(item, idItem);
-                    }
-                }
-                else
-                {
-                    // the item is in the database and has a relation to the folder -> simply update item
-                    updateItem(item, idItem);
-                }
+            if(action & eActionReload)
+            {
+                item->updateFromDB(idItem, db);
             }
-            else
+
+
+            if(action & eActionClone)
             {
-                // the item is not in the database -> insert item and create relation to folder
-                idItem = insertItem(item);
+                IGisItem * item2 = item->createClone();
+                idItem = insertItem(item2, query);
+
+                delete item;
+                item = item2;
+            }
 
-                // create relation
+            if((action & eActionLink) && (idItem != 0))
+            {
                 query.prepare("INSERT INTO folder2item (parent, child) VALUES (:parent, :child)");
                 query.bindValue(":parent", id);
                 query.bindValue(":child", idItem);
-                QUERY_EXEC(throw -1);
+                QUERY_EXEC(throw eReasonQueryFail);
             }
-
-            info->keysChildren << item->getKey().item;
-            item->updateDecoration(IGisItem::eMarkNone, IGisItem::eMarkChanged);
-        }
-
-        // serialize metadata of project
-        QByteArray data;
-        QDataStream in(&data, QIODevice::WriteOnly);
-        in.setByteOrder(QDataStream::LittleEndian);
-        in.setVersion(QDataStream::Qt_5_2);
-        *this >> in;
-
-        // update folder entry in database
-        query.prepare("UPDATE folders SET name=:name, comment=:comment, data=:data WHERE id=:id");
-        query.bindValue(":name", getName());
-        query.bindValue(":comment", getInfo());
-        query.bindValue(":data", data);
-        query.bindValue(":id", getId());
-        QUERY_EXEC(throw -1);
-
-        info->updateLostFound = true;
-        CGisWidget::self().postEventForDb(info);
-        if(clearProjectChangeFlag)
-        {
-            setText(CGisListWks::eColumnDecoration,"");
+            item->updateDecoration(IGisItem::eMarkNone, IGisItem::eMarkChanged|IGisItem::eMarkNotPart|IGisItem::eMarkNotInDB);
         }
-    }
-    catch(int n)
-    {
-        if(n < 0)
-        {
-            delete info;
-        }
-        else
+        catch(reasons_e reason)
         {
-            info->updateLostFound = true;
-            CGisWidget::self().postEventForDb(info);
+            switch(reason)
+            {
+            case eReasonQueryFail:
+                QMessageBox::critical(&progress, tr("Error"), tr("There was an unexpected database error:\n\n%1").arg(query.lastError().text()), QMessageBox::Abort);
+
+            case eReasonCancel:
+            case eReasonUnexpected:
+                stop    = true;
+                success = false;
+                break;
+
+            case eReasonConflict:
+                i--;
+                break;
+            }
         }
-        return false;
     }
-    return true;
+
+    // serialize metadata of project
+    QByteArray data;
+    QDataStream in(&data, QIODevice::WriteOnly);
+    in.setByteOrder(QDataStream::LittleEndian);
+    in.setVersion(QDataStream::Qt_5_2);
+    *this >> in;
+
+    // update folder entry in database
+    query.prepare("UPDATE folders SET name=:name, comment=:comment, data=:data WHERE id=:id");
+    query.bindValue(":name", getName());
+    query.bindValue(":comment", getInfo());
+    query.bindValue(":data", data);
+    query.bindValue(":id", getId());
+    QUERY_EXEC(return false);
+
+    postStatus(true);
+
+    // update change flag
+    updateDecoration();
+    return success;
 }
 
+
 void CDBProject::showItems(CEvtD2WShowItems * evt)
 {
+    if(evt->addItemsExclusively)
+    {
+        qDeleteAll(takeChildren());
+    }
+
     foreach(const evt_item_t &item, evt->items)
     {
         IGisItem * gisItem = 0;
@@ -457,7 +669,7 @@ void CDBProject::showItems(CEvtD2WShowItems * evt)
             ;
         }
 
-        /* [Issue #72] Database/Workspace inconsisteny in QMS 1.4.0
+        /* [Issue #72] Database/Workspace inconsistency in QMS 1.4.0
 
            When an item with no key is loaded it is "healed". The healing
            will mark it as changed. To avoid this save all items that are
@@ -466,12 +678,25 @@ void CDBProject::showItems(CEvtD2WShowItems * evt)
          */
         if(gisItem && gisItem->isChanged())
         {
-            updateItem(gisItem, item.id);
-            gisItem->updateDecoration(IGisItem::eMarkNone, IGisItem::eMarkChanged);
+            bool success = true;
+            try
+            {
+                QSqlQuery query(db);
+                updateItem(gisItem, item.id, query);
+            }
+            catch(int)
+            {
+                success = false;
+            }
+
+            if(success)
+            {
+                gisItem->updateDecoration(IGisItem::eMarkNone, IGisItem::eMarkChanged);
+            }
         }
     }
 
-    postStatus();
+    postStatus(false);
     setToolTip(CGisListWks::eColumnName, getInfo());
 }
 
@@ -488,7 +713,131 @@ void CDBProject::hideItems(CEvtD2WHideItems * evt)
         delItemByKey(key, last);
     }
 
-    postStatus();
+    postStatus(false);
     setToolTip(CGisListWks::eColumnName, getInfo());
 }
 
+
+void CDBProject::update()
+{
+    Qt::CheckState state = checkState;
+
+    if(isChanged())
+    {
+        QString msg = tr("The project '%1' is about to update itself from the database. However there are changes not saved.").arg(getName());
+        int res = QMessageBox::question(CMainWindow::self().getBestWidgetForParent(), tr("Save changes?"), msg, QMessageBox::Save|QMessageBox::Ignore|QMessageBox::Abort, QMessageBox::Save);
+
+        if(res == QMessageBox::Abort)
+        {
+            return;
+        }
+        if(res == QMessageBox::Save)
+        {
+            if(!save())
+            {
+                return;
+            }
+        }
+    }
+
+    // read project properties
+    QSqlQuery query(db);
+    query.prepare("SELECT date, name, data FROM folders WHERE id=:id");
+    query.bindValue(":id", getId());
+    QUERY_EXEC(return );
+    query.next();
+
+    QString name    = query.value(1).toString();
+    QByteArray data = query.value(2).toByteArray();
+
+    if(!data.isEmpty())
+    {
+        QDataStream in(&data, QIODevice::ReadOnly);
+        in.setByteOrder(QDataStream::LittleEndian);
+        in.setVersion(QDataStream::Qt_5_2);
+        *this << in;
+        filename = getDBName();
+    }
+
+    setupName(name);
+    setToolTip(CGisListWks::eColumnName, getInfo());
+
+    /*
+        The further proceeding depends on the check state of the project. If the project
+        is partially loaded we simply update all items. If it is completely loaded we
+        reload it.
+     */
+
+    if(state == Qt::Checked)
+    {
+        // get keys of all children attached to the project in the database
+        query.prepare("SELECT id, type FROM items WHERE id IN (SELECT child FROM folder2item WHERE parent=:parent)");
+        query.bindValue(":parent", getId());
+        QUERY_EXEC(return );
+
+        CEvtD2WShowItems * evt = new CEvtD2WShowItems(getId(), getDBName());
+        evt->addItemsExclusively = true;
+
+        while(query.next())
+        {
+            evt->items << evt_item_t(query.value(0).toULongLong(), query.value(1).toUInt());
+        }
+
+        CGisWidget::self().postEventForWks(evt);
+    }
+    else
+    {
+        // Iterate over all children and update
+        const int N = childCount();
+        for(int i = 0; i < N; i++)
+        {
+            IGisItem * item = dynamic_cast<IGisItem*>(child(i));
+            if(item == nullptr)
+            {
+                continue;
+            }
+
+            const IGisItem::key_t& key = item->getKey();
+            // update item from database
+            query.prepare("SELECT id FROM items WHERE keyqms=:keyqms");
+            query.bindValue(":keyqms", key.item);
+            QUERY_EXEC(return );
+
+            if(query.next())
+            {
+                // item is in the database
+                quint64 idItem = query.value(0).toULongLong();
+
+                QSqlQuery query2(db);
+                query2.prepare("SELECT id FROM folder2item WHERE parent=:parent AND child=:child");
+                query2.bindValue(":parent", getId());
+                query2.bindValue(":child", idItem);
+                query2.exec();
+
+                if(query2.next())
+                {
+                    // item is connected to this project
+                    item->updateFromDB(idItem, db);
+                    item->updateDecoration(IGisItem::eMarkNone, IGisItem::eMarkChanged);
+                }
+                else
+                {
+                    // item is not connected to this project
+                    item->updateFromDB(idItem, db);
+                    item->updateDecoration(IGisItem::eMarkNotPart|IGisItem::eMarkChanged, IGisItem::eMarkNone);
+                }
+            }
+            else
+            {
+                // item is not in the database at all.
+                item->updateDecoration(IGisItem::eMarkNotInDB|IGisItem::eMarkChanged, IGisItem::eMarkNone);
+            }
+        }
+
+        postStatus(false);
+    }
+
+
+    updateDecoration();
+}
+
diff --git a/src/gis/db/CDBProject.h b/src/gis/db/CDBProject.h
index c3052a1..367aa3d 100644
--- a/src/gis/db/CDBProject.h
+++ b/src/gis/db/CDBProject.h
@@ -28,6 +28,7 @@ class CQlgtFolder;
 
 class CDBProject : public IGisProject
 {
+    Q_DECLARE_TR_FUNCTIONS(CDBProject)
 public:
     CDBProject(CGisListWks * parent);
     CDBProject(const QString &dbName, quint64 id, CGisListWks * parent);
@@ -42,17 +43,25 @@ public:
      */
     void restoreDBLink();
 
-    bool save();
-    bool saveAs();
+    bool canSave() const override
+    {
+        return true;
+    }
 
-    quint64 getId()
+    bool save() override;
+
+    quint64 getId() const
     {
         return id;
     }
-    QString getDBName()
+    QString getDBName() const
     {
         return db.connectionName();
     }
+    QString getDBHost() const
+    {
+        return db.hostName();
+    }
 
     /**
        @brief Serialize object out of a QDataStream
@@ -62,7 +71,7 @@ public:
        @param stream the binary data stream
        @return The stream object.
      */
-    QDataStream& operator<<(QDataStream& stream);
+    QDataStream& operator<<(QDataStream& stream) override;
 
     /**
        @brief Serialize object into a QDataStream
@@ -72,21 +81,80 @@ public:
        @param stream the binary data stream
        @return The stream object.
      */
-    QDataStream& operator>>(QDataStream& stream);
+    QDataStream& operator>>(QDataStream& stream) const override;
 
+    /**
+       @brief Send a CEvtW2DAckInfo event to the database view
+     */
+    void postStatus(bool updateLostFound);
 
-    void postStatus();
+    /**
+       @brief Load items from the database into the project
 
+       @param evt   the event sent by the database view
+     */
     void showItems(CEvtD2WShowItems * evt);
+    /**
+       @brief Remove items from the project
+
+       Note: This is not the same as for the other projects. The relation in the database
+       is still valid. The item is just not selected to be shown.
+
+       @param evt   the event sent by the database view
+     */
     void hideItems(CEvtD2WHideItems * evt);
 
+    void update();
+
 protected:
-    void setupName(const QString &defaultName);
-    void updateItem(IGisItem * item, quint64 idItem);
-    quint64 insertItem(IGisItem * item);
+    /**
+       @brief Setup the items text with the name and suffix
+
+       @param defaultName
+     */
+    void setupName(const QString &defaultName) override;
+
+    /**
+     * @brief Save item's data into an existing database entry
+     *
+     * @param item      the item itself
+     * @param idItem    the 64bit database key
+     */
+    void updateItem(IGisItem *&item, quint64 idItem, QSqlQuery& query);
+
+
+    int checkForAction1(IGisItem * item, quint64 &idItem, int &lastResult, QSqlQuery& query);
+    int checkForAction2(IGisItem * item, quint64 &idItem, QString &hashItem, QSqlQuery& query);
+
+    /**
+     * @brief Add item to database
+     * @param item      the item itself
+     * @return The new 64bit database key
+     */
+    quint64 insertItem(IGisItem * item, QSqlQuery& query);
 
     QSqlDatabase db;
-    quint64 id;
+    quint64 id = 0;
+
+    enum reasons_e
+    {
+        eReasonCancel     = 0
+        , eReasonQueryFail  = -1
+        , eReasonUnexpected = -2
+        , eReasonConflict   = -3
+    };
+
+    enum action_e
+    {
+        eActionNone = 0x00
+        , eActionLink = 0x01
+        , eActionUpdate = 0x02
+        , eActionInsert = 0x04
+        , eActionClone  = 0x08
+        , eActionReload = 0x10
+    };
+
+    Qt::CheckState checkState = Qt::Unchecked;
 };
 
 #endif //CDBPROJECT_H
diff --git a/src/gis/db/CLostFoundProject.cpp b/src/gis/db/CLostFoundProject.cpp
index 7edcc9a..4781e34 100644
--- a/src/gis/db/CLostFoundProject.cpp
+++ b/src/gis/db/CLostFoundProject.cpp
@@ -36,7 +36,7 @@ CLostFoundProject::CLostFoundProject(const QString &dbName, CGisListWks * parent
     setIcon(CGisListWks::eColumnIcon,QIcon("://icons/32x32/DeleteMultiple.png"));
 
     filename        = dbName;
-    metadata.name   = QObject::tr("Lost & Found");
+    metadata.name   = tr("Lost & Found");
 
     setupName(dbName);
 
@@ -52,13 +52,12 @@ void CLostFoundProject::updateFromDb()
     qDeleteAll(takeChildren());
 
     QSqlQuery query(db);
-    query.prepare("SELECT id, type FROM items AS t1 WHERE NOT EXISTS(SELECT * FROM folder2item WHERE child=t1.id) ORDER BY t1.type, t1.name");
-    QUERY_EXEC(return );
+    QUERY_RUN("SELECT id, type FROM items AS t1 WHERE NOT EXISTS(SELECT * FROM folder2item WHERE child=t1.id) ORDER BY t1.type, t1.name", return )
 
     while(query.next())
     {
-        quint64 id      = query.value(0).toULongLong();
-        quint32 type    = query.value(1).toUInt();
+        quint64 id   = query.value(0).toULongLong();
+        quint32 type = query.value(1).toUInt();
 
         switch(type)
         {
diff --git a/src/gis/db/CLostFoundProject.h b/src/gis/db/CLostFoundProject.h
index c61bb22..681f60a 100644
--- a/src/gis/db/CLostFoundProject.h
+++ b/src/gis/db/CLostFoundProject.h
@@ -24,12 +24,13 @@
 
 class CLostFoundProject : public CDBProject
 {
+    Q_DECLARE_TR_FUNCTIONS(CLostFoundProject)
 public:
     CLostFoundProject(const QString &dbName, CGisListWks * parent);
 
     virtual ~CLostFoundProject();
 
-    bool save()
+    bool save() override
     {
         return false;
     }
diff --git a/src/gis/db/CSelectDBFolder.cpp b/src/gis/db/CSelectDBFolder.cpp
index af1f376..235a674 100644
--- a/src/gis/db/CSelectDBFolder.cpp
+++ b/src/gis/db/CSelectDBFolder.cpp
@@ -17,33 +17,52 @@
 **********************************************************************************************/
 
 #include "canvas/CCanvas.h"
-#include "gis/db/CDBFolderDatabase.h"
+#include "gis/db/CDBFolderMysql.h"
+#include "gis/db/CDBFolderSqlite.h"
 #include "gis/db/CSelectDBFolder.h"
 #include "helpers/CSettings.h"
 
 #include <QtWidgets>
 
-CSelectDBFolder::CSelectDBFolder(quint64 &id, QString &db, QWidget *parent)
+CSelectDBFolder::CSelectDBFolder(quint64 &id, QString &db, QString &host, QWidget *parent)
     : QDialog(parent)
     , id(id)
     , db(db)
+    , host(host)
 {
     setupUi(this);
 
     buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
 
     SETTINGS;
-    QStringList names = cfg.value("Database/names").toStringList();
-    QStringList files = cfg.value("Database/files").toStringList();
-
-    const int N = names.count();
-    for(int i = 0; i < N; i++)
+    cfg.beginGroup("Database");
+    QStringList names = cfg.value("names").toStringList();
+    cfg.beginGroup("Entries");
+    foreach(const QString &name, names)
     {
-        new CDBFolderDatabase(files[i], names[i], treeWidget);
+        cfg.beginGroup(name);
+        QString type = cfg.value("type", "SQLite").toString();
+        if(type == "SQLite")
+        {
+            QString filename = cfg.value("filename","").toString();
+            new CDBFolderSqlite(filename, name, treeWidget);
+        }
+
+        if(type == "MySQL")
+        {
+            QString server  = cfg.value("server","").toString();
+            QString port    = cfg.value("port","").toString();
+            QString user    = cfg.value("user","").toString();
+            QString passwd  = cfg.value("passwd","").toString();
+            bool noPasswd   = cfg.value("noPasswd",false).toBool();
+            new CDBFolderMysql(server, port, user, passwd, noPasswd, name, treeWidget);
+        }
+        cfg.endGroup(); // name
     }
+    cfg.endGroup(); // Database
 
-    connect(treeWidget, SIGNAL(itemExpanded(QTreeWidgetItem*)), this, SLOT(slotItemExpanded(QTreeWidgetItem*)));
-    connect(treeWidget, SIGNAL(itemSelectionChanged()), this, SLOT(slotItemSelectionChanged()));
+    connect(treeWidget, &QTreeWidget::itemExpanded,         this, &CSelectDBFolder::slotItemExpanded);
+    connect(treeWidget, &QTreeWidget::itemSelectionChanged, this, &CSelectDBFolder::slotItemSelectionChanged);
 
     CCanvas::setOverrideCursor(Qt::ArrowCursor, "CSelectDBFolder");
 }
@@ -56,22 +75,20 @@ CSelectDBFolder::~CSelectDBFolder()
 void CSelectDBFolder::slotItemExpanded(QTreeWidgetItem * item)
 {
     IDBFolder * folder = dynamic_cast<IDBFolder*>(item);
-    if(folder == 0)
+    if(nullptr != folder)
     {
-        return;
+        folder->expanding();
     }
-
-    folder->expanding();
 }
 
-
 void CSelectDBFolder::slotItemSelectionChanged()
 {
     IDBFolder * folder = dynamic_cast<IDBFolder*>(treeWidget->currentItem());
     if(folder)
     {
-        id = folder->getId();
-        db = folder->getDBName();
+        id      = folder->getId();
+        db      = folder->getDBName();
+        host    = folder->getDBHost();
         buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
     }
     else
diff --git a/src/gis/db/CSelectDBFolder.h b/src/gis/db/CSelectDBFolder.h
index 6f7a329..43601a8 100644
--- a/src/gis/db/CSelectDBFolder.h
+++ b/src/gis/db/CSelectDBFolder.h
@@ -26,7 +26,7 @@ class CSelectDBFolder : public QDialog, private Ui::ISelectDBFolder
 {
     Q_OBJECT
 public:
-    CSelectDBFolder(quint64& id, QString& db, QWidget * parent);
+    CSelectDBFolder(quint64& id, QString& db, QString& host, QWidget * parent);
     virtual ~CSelectDBFolder();
 
 private slots:
@@ -36,6 +36,7 @@ private slots:
 private:
     quint64& id;
     QString& db;
+    QString& host;
 };
 
 #endif //CSELECTDBFOLDER_H
diff --git a/src/gis/db/CSelectSaveAction.cpp b/src/gis/db/CSelectSaveAction.cpp
index 8b6d995..848e3d9 100644
--- a/src/gis/db/CSelectSaveAction.cpp
+++ b/src/gis/db/CSelectSaveAction.cpp
@@ -32,8 +32,9 @@ CSelectSaveAction::CSelectSaveAction(const IGisItem *src, const IGisItem *tar, Q
 
     adjustSize();
 
-    connect(pushSave, SIGNAL(clicked()), this, SLOT(slotSelectResult()));
-    connect(pushSkip, SIGNAL(clicked()), this, SLOT(slotSelectResult()));
+    connect(pushSave,  &QPushButton::clicked, this, &CSelectSaveAction::slotSelectResult);
+    connect(pushSkip,  &QPushButton::clicked, this, &CSelectSaveAction::slotSelectResult);
+    connect(pushClone, &QPushButton::clicked, this, &CSelectSaveAction::slotSelectResult);
 
     CCanvas::setOverrideCursor(Qt::ArrowCursor, "CSelectSaveAction");
 }
@@ -58,6 +59,10 @@ void CSelectSaveAction::slotSelectResult()
     {
         result = eResultSkip;
     }
+    else if(sender() == pushClone)
+    {
+        result = eResultClone;
+    }
 
     accept();
 }
diff --git a/src/gis/db/CSelectSaveAction.h b/src/gis/db/CSelectSaveAction.h
index c6ab479..6ad6e76 100644
--- a/src/gis/db/CSelectSaveAction.h
+++ b/src/gis/db/CSelectSaveAction.h
@@ -36,6 +36,7 @@ public:
         eResultNone,
         eResultSave,
         eResultSkip,
+        eResultClone,
     };
 
     result_e getResult()
diff --git a/src/gis/db/CSetupDatabase.cpp b/src/gis/db/CSetupDatabase.cpp
index 05554ff..3466671 100644
--- a/src/gis/db/CSetupDatabase.cpp
+++ b/src/gis/db/CSetupDatabase.cpp
@@ -23,20 +23,38 @@
 
 #include <QtWidgets>
 
-CSetupDatabase::CSetupDatabase(QString& name, QString& filename, CGisListDB &parent)
+CSetupDatabase::CSetupDatabase(CGisListDB &parent)
     : QDialog(&parent)
     , list(parent)
-    , name(name)
-    , filename(filename)
 {
     setupUi(this);
 
-    lineName->setText(name);
-    labelFilename->setText(filename);
+    lineUser->setText(CMainWindow::getUser());
+
+    connect(toolNewDB,   &QToolButton::clicked,   this, &CSetupDatabase::slotNewDB);
+    connect(toolAddDB,   &QToolButton::clicked,   this, &CSetupDatabase::slotOpenDB);
+    connect(lineName,    &QLineEdit::textChanged, this, &CSetupDatabase::slotUpdateButtonBox);
+    connect(lineServer,  &QLineEdit::textChanged, this, &CSetupDatabase::slotUpdateButtonBox);
+    connect(lineUser,    &QLineEdit::textChanged, this, &CSetupDatabase::slotUpdateButtonBox);
+    connect(radioSqlite, &QRadioButton::clicked,  this, &CSetupDatabase::slotUpdateButtonBox);
+    connect(radioMysql,  &QRadioButton::clicked,  this, &CSetupDatabase::slotUpdateButtonBox);
+    connect(checkMySQLNoPasswd, &QCheckBox::clicked, linePasswd, &QLineEdit::setDisabled);
+
+    if(!QSqlDatabase::isDriverAvailable("QMYSQL"))
+    {
+        gridLayout->removeWidget(frameMysql);
+
+        QString errorTitle = tr("Missing Requirement");
+        QString errorText  = tr("MySQL cannot be used at this point, because the corresponding driver (QMYSQL) is not available.<br />Please make sure you have installed the corresponding package.<br />If you don't know what to do now you should have <a href=\"%1\">a look at the wiki</a>.").arg("https://bitbucket.org/maproom/qmapshack/wiki/DocGisDatabaseAddRemove#markdown-header-mysql-565");
 
-    connect(toolNewDB, SIGNAL(clicked()), this, SLOT(slotNewDB()));
-    connect(toolAddDB, SIGNAL(clicked()), this, SLOT(slotOpenDB()));
-    connect(lineName, SIGNAL(textChanged(QString)), this, SLOT(slotUpdateButtonBox()));
+        QLabel *errorMissingMySQL = new QLabel(QString("<b>%1</b><br /><br />%2").arg(errorTitle).arg(errorText));
+        errorMissingMySQL->setOpenExternalLinks(true);
+        errorMissingMySQL->setWordWrap(true);
+        gridLayout->addWidget(errorMissingMySQL, 4, 1, Qt::AlignTop);
+
+        radioSqlite->setChecked(true);
+        radioMysql->setDisabled(true);
+    }
 
     slotUpdateButtonBox();
 }
@@ -47,15 +65,29 @@ CSetupDatabase::~CSetupDatabase()
 
 void CSetupDatabase::slotUpdateButtonBox()
 {
-    bool enable = true;
+    bool enable = !lineName->text().isEmpty();
 
-    if(lineName->text().isEmpty())
+    if(radioSqlite->isChecked())
     {
-        enable = false;
+        if(labelFilename->text() == "-")
+        {
+            enable = false;
+        }
+        frameSqlite->setEnabled(true);
+        frameMysql->setEnabled(false);
     }
-    if(labelFilename->text() == "-")
+    else if(radioMysql->isChecked())
     {
-        enable = false;
+        if(lineServer->text().isEmpty())
+        {
+            enable = false;
+        }
+        if(lineUser->text().isEmpty())
+        {
+            enable = false;
+        }
+        frameSqlite->setEnabled(false);
+        frameMysql->setEnabled(true);
     }
 
     buttonBox->button(QDialogButtonBox::Ok)->setEnabled(enable);
@@ -64,13 +96,12 @@ void CSetupDatabase::slotUpdateButtonBox()
 
 void CSetupDatabase::accept()
 {
-    name = lineName->text();
+    QString name = lineName->text();
     if(list.hasDatabase(name))
     {
         QMessageBox::warning(CMainWindow::getBestWidgetForParent(), tr("Error..."), tr("There is already a database with name '%1'").arg(name), QMessageBox::Abort);
         return;
     }
-    filename = labelFilename->text();
 
     QDialog::accept();
 }
@@ -125,3 +156,9 @@ void CSetupDatabase::slotOpenDB()
 
     slotUpdateButtonBox();
 }
+
+
+bool CSetupDatabase::noPasswd() const
+{
+    return radioMysql->isChecked() && checkMySQLNoPasswd->isChecked();
+}
diff --git a/src/gis/db/CSetupDatabase.h b/src/gis/db/CSetupDatabase.h
index 492ada6..9dacc7f 100644
--- a/src/gis/db/CSetupDatabase.h
+++ b/src/gis/db/CSetupDatabase.h
@@ -28,11 +28,23 @@ class CSetupDatabase : public QDialog, private Ui::ISetupDatabase
 {
     Q_OBJECT
 public:
-    CSetupDatabase(QString &name, QString &filename, CGisListDB& parent);
+    CSetupDatabase(CGisListDB& parent);
     virtual ~CSetupDatabase();
 
+    bool isSqlite() const {return radioSqlite->isChecked(); }
+    bool isMysql() const {return radioMysql->isChecked(); }
+    bool noPasswd() const;
+
+    QString getName() const {return lineName->text(); }
+    QString getFilename() const {return labelFilename->text(); }
+    QString getServer() const {return lineServer->text(); }
+    QString getPort() const {return linePort->text(); }
+    QString getUser() const {return lineUser->text(); }
+    QString getPasswd() const {return linePasswd->text(); }
+
+
 public slots:
-    void accept();
+    void accept() override;
 
 private slots:
     void slotNewDB();
@@ -41,8 +53,6 @@ private slots:
 
 private:
     CGisListDB& list;
-    QString& name;
-    QString& filename;
 };
 
 #endif //CSETUPDATABASE_H
diff --git a/src/gis/db/CSetupFolder.cpp b/src/gis/db/CSetupFolder.cpp
index 33e7a9f..4bc5322 100644
--- a/src/gis/db/CSetupFolder.cpp
+++ b/src/gis/db/CSetupFolder.cpp
@@ -28,7 +28,7 @@ CSetupFolder::CSetupFolder(IDBFolder::type_e& type, QString &name, bool groupAll
 {
     setupUi(this);
 
-    connect(lineName, SIGNAL(textChanged(QString)), this, SLOT(slotNameChanged(QString)));
+    connect(lineName, &QLineEdit::textChanged, this, &CSetupFolder::slotNameChanged);
 
     lineName->setText(name);
     switch(type)
diff --git a/src/gis/db/CSetupFolder.h b/src/gis/db/CSetupFolder.h
index eee07e5..2cb39f0 100644
--- a/src/gis/db/CSetupFolder.h
+++ b/src/gis/db/CSetupFolder.h
@@ -31,7 +31,7 @@ public:
     virtual ~CSetupFolder();
 
 public slots:
-    void accept();
+    void accept() override;
 
 private slots:
     void slotNameChanged(const QString& text);
diff --git a/src/gis/db/CSetupWorkspace.cpp b/src/gis/db/CSetupWorkspace.cpp
index b32fdfc..f77288d 100644
--- a/src/gis/db/CSetupWorkspace.cpp
+++ b/src/gis/db/CSetupWorkspace.cpp
@@ -31,9 +31,11 @@ CSetupWorkspace::CSetupWorkspace(QWidget *parent)
     cfg.beginGroup("Database");
     checkSaveOnExit->setChecked(cfg.value("saveOnExit", true).toBool());
     spinSaveEvery->setValue(cfg.value("saveEvery",5).toInt());
+    checkDbUpdate->setChecked(cfg.value("listenUpdate", false).toBool());
+    linePort->setText(cfg.value("port", "34123").toString());
     cfg.endGroup();
 
-    connect(checkSaveOnExit, SIGNAL(toggled(bool)), spinSaveEvery, SLOT(setEnabled(bool)));
+    connect(checkSaveOnExit, &QCheckBox::toggled, spinSaveEvery, &QSpinBox::setEnabled);
 }
 
 CSetupWorkspace::~CSetupWorkspace()
@@ -46,6 +48,8 @@ void CSetupWorkspace::accept()
     cfg.beginGroup("Database");
     cfg.setValue("saveOnExit", checkSaveOnExit->isChecked());
     cfg.setValue("saveEvery", spinSaveEvery->value());
+    cfg.setValue("listenUpdate", checkDbUpdate->isChecked());
+    cfg.setValue("port", linePort->text());
     cfg.endGroup();
 
     QMessageBox::information(this, tr("Setup database..."), tr("Changes will become active after an application's restart."), QMessageBox::Ok);
diff --git a/src/gis/db/CSetupWorkspace.h b/src/gis/db/CSetupWorkspace.h
index 0a39a06..be4dc00 100644
--- a/src/gis/db/CSetupWorkspace.h
+++ b/src/gis/db/CSetupWorkspace.h
@@ -31,7 +31,7 @@ public:
     virtual ~CSetupWorkspace();
 
 public slots:
-    void accept();
+    void accept() override;
 };
 
 #endif //CSETUPWORKSPACE_H
diff --git a/src/gis/db/IDB.cpp b/src/gis/db/IDB.cpp
index 85cfb47..56affab 100644
--- a/src/gis/db/IDB.cpp
+++ b/src/gis/db/IDB.cpp
@@ -16,10 +16,12 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "gis/db/IDB.h"
 #include "gis/db/macros.h"
 
 #include <QtSql>
+#include <QtWidgets>
 
 QMap<QString,int> IDB::references;
 
@@ -37,37 +39,15 @@ IDB::~IDB()
     }
 }
 
-bool IDB::setupDB(const QString& filename, const QString& connectionName)
+void IDB::setup(const QString &connectionName)
 {
     references[connectionName]++;
+}
 
-    if(!QSqlDatabase::contains(connectionName))
-    {
-        db = QSqlDatabase::addDatabase("QSQLITE", connectionName);
-        db.setDatabaseName(filename);
-        if(!db.open())
-        {
-            qDebug() << "failed to open database" << db.lastError();
-        }
-    }
-    else
-    {
-        db = QSqlDatabase::database(connectionName);
-    }
-
+bool IDB::setupDB()
+{
     QSqlQuery query(db);
 
-    query.prepare("PRAGMA locking_mode=EXCLUSIVE");
-    QUERY_EXEC(return false);
-    query.prepare("PRAGMA temp_store=MEMORY");
-    QUERY_EXEC(return false);
-    query.prepare("PRAGMA default_cache_size=50");
-    QUERY_EXEC(return false);
-    query.prepare("PRAGMA page_size=8192");
-    QUERY_EXEC(return false);
-    query.prepare("PRAGMA synchronous=OFF");
-    QUERY_EXEC(return false);
-
     if(!query.exec("SELECT version FROM versioninfo"))
     {
         return initDB();
@@ -75,112 +55,80 @@ bool IDB::setupDB(const QString& filename, const QString& connectionName)
     else if(query.next())
     {
         int version = query.value(0).toInt();
-        if(version != DB_VERSION)
+        if(version < DB_VERSION)
+        {
+            QString msg = tr("The internal database format of '%1'' has changed. QMapShack will migrate your database, now. "
+                             "After the migration the database won't be usable with older versions of QMapShack. "
+                             "It is recommended to backup the database first.").arg(db.connectionName());
+            int res = QMessageBox::warning(CMainWindow::self().getBestWidgetForParent(),
+                                           tr("Migrate database..."),
+                                           msg,
+                                           QMessageBox::Ok|QMessageBox::Abort);
+            if(res != QMessageBox::Ok)
+            {
+                exit(0);
+            }
+
+            if(!migrateDB(version))
+            {
+                QString msg = tr("Failed to migrate '%1'.").arg(db.connectionName());
+                QMessageBox::critical(CMainWindow::self().getBestWidgetForParent(),
+                                      tr("Error..."),
+                                      msg,
+                                      QMessageBox::Abort);
+
+                return false;
+            }
+        }
+        else if(version > DB_VERSION)
         {
-            return migrateDB(version);
+            QString msg = tr("The database version of '%1'' is more advanced as the one understood by your "
+                             "QMapShack installation. This won't work.").arg(db.connectionName());
+            QMessageBox::critical(CMainWindow::self().getBestWidgetForParent(),
+                                  tr("Wrong database version..."),
+                                  msg,
+                                  QMessageBox::Abort);
+            return false;
         }
     }
     else
     {
-        return initDB();
+        if(!initDB())
+        {
+            QString msg = tr("Failed to initialize '%1'.").arg(db.connectionName());
+            QMessageBox::critical(CMainWindow::self().getBestWidgetForParent(),
+                                  tr("Error..."),
+                                  msg,
+                                  QMessageBox::Abort);
+
+            return false;
+        }
     }
 
     query.prepare( "UPDATE folders SET name=:name WHERE id=1");
-    query.bindValue(":name", connectionName);
-    QUERY_EXEC()
+    query.bindValue(":name", db.connectionName());
+    QUERY_EXEC(return false);
 
     return true;
 }
 
-bool IDB::initDB()
+quint64 IDB::getLastInsertID(QSqlDatabase& db, const QString& table)
 {
+    quint64 idChild = 0;
     QSqlQuery query(db);
 
-    if(query.exec( "CREATE TABLE versioninfo ( version TEXT, type TEXT )"))
+    if(db.driverName() == "QSQLITE")
     {
-        query.prepare( "INSERT INTO versioninfo (version, type) VALUES(:version, 'QMapShack')");
-        query.bindValue(":version", DB_VERSION);
-        QUERY_EXEC(return false);
+        QUERY_RUN("SELECT last_insert_rowid() from " + table, return 0)
+        query.next();
+        idChild = query.value(0).toULongLong();
     }
-
-    if(!query.exec( "CREATE TABLE folders ("
-                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
-                    "type           INTEGER NOT NULL,"
-                    "key            TEXT,"
-                    "date           DATETIME DEFAULT CURRENT_TIMESTAMP,"
-                    "name           TEXT NOT NULL,"
-                    "comment        TEXT,"
-                    "locked         BOOLEAN DEFAULT FALSE,"
-                    "data           BLOB"
-                    ")"))
-    {
-        qDebug() << query.lastQuery();
-        qDebug() << query.lastError();
-        return false;
-    }
-
-    if(!query.exec( "CREATE TABLE items ("
-                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
-                    "type           INTEGER,"
-                    "key            TEXT NOT NULL,"
-                    "date           DATETIME DEFAULT CURRENT_TIMESTAMP,"
-                    "icon           BLOB NOT NULL,"
-                    "name           TEXT NOT NULL,"
-                    "comment        TEXT,"
-                    "data           BLOB NOT NULL"
-                    ")"))
-    {
-        qDebug() << query.lastQuery();
-        qDebug() << query.lastError();
-        return false;
-    }
-
-    query.prepare("INSERT INTO folders (type, name, comment) VALUES (2, :name, '')");
-    query.bindValue(":name", db.connectionName());
-    QUERY_EXEC(return false);
-
-    if(!query.exec( "CREATE TABLE folder2folder ("
-                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
-                    "parent         INTEGER NOT NULL,"
-                    "child          INTEGER NOT NULL,"
-                    "FOREIGN KEY(parent) REFERENCES folders(id),"
-                    "FOREIGN KEY(child) REFERENCES folders(id)"
-                    ")"))
+    else if(db.driverName() == "QMYSQL")
     {
-        qDebug() << query.lastQuery();
-        qDebug() << query.lastError();
-        return false;
+        QUERY_RUN("SELECT last_insert_id() from " + table, return 0)
+        query.next();
+        idChild = query.value(0).toULongLong();
     }
 
-    if(!query.exec( "CREATE TABLE folder2item ("
-                    "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
-                    "parent         INTEGER NOT NULL,"
-                    "child          INTEGER NOT NULL,"
-                    "FOREIGN KEY(parent) REFERENCES folders(id),"
-                    "FOREIGN KEY(child) REFERENCES items(id)"
-                    ")"))
-    {
-        qDebug() << query.lastQuery();
-        qDebug() << query.lastError();
-        return false;
-    }
-    return true;
+    return idChild;
 }
-
-bool IDB::migrateDB(int version)
-{
-    QSqlQuery query(db);
-
-    for(version++; version <= DB_VERSION; version++)
-    {
-//        switch(version)
-//        {
-//        default:;
-//        }
-    }
-    query.prepare( "UPDATE versioninfo set version=:version");
-    query.bindValue(":version", version - 1);
-    QUERY_EXEC(return false);
-    return true;
-}
-
diff --git a/src/gis/db/IDB.h b/src/gis/db/IDB.h
index 8c0e487..2452cbd 100644
--- a/src/gis/db/IDB.h
+++ b/src/gis/db/IDB.h
@@ -19,23 +19,34 @@
 #ifndef IDB_H
 #define IDB_H
 
+#include <QCoreApplication>
 #include <QMap>
 #include <QSqlDatabase>
 
 class IDB
 {
+    Q_DECLARE_TR_FUNCTIONS(IDB)
+
 public:
     IDB();
     virtual ~IDB();
 
-protected:
-    bool setupDB(const QString &filename, const QString &connectionName);
-    bool initDB();
-    bool migrateDB(int version);
+    QSqlDatabase& getDb() { return db; }
 
-    QSqlDatabase db;
+    static quint64 getLastInsertID(QSqlDatabase& db, const QString& table);
 
+    bool isUsable() const
+    {
+        return db.isOpen();
+    }
+
+protected:
     static QMap<QString,int> references;
+    QSqlDatabase db;
+    void setup(const QString& connectionName);
+    bool setupDB();
+    virtual bool initDB() = 0;
+    virtual bool migrateDB(int version) = 0;
 };
 
 #endif //IDB_H
diff --git a/src/gis/db/IDBFolder.cpp b/src/gis/db/IDBFolder.cpp
index 6ed8338..db408dd 100644
--- a/src/gis/db/IDBFolder.cpp
+++ b/src/gis/db/IDBFolder.cpp
@@ -19,12 +19,13 @@
 #include "gis/CGisListDB.h"
 #include "gis/CGisWidget.h"
 #include "gis/IGisItem.h"
-#include "gis/db/CDBFolderDatabase.h"
 #include "gis/db/CDBFolderGroup.h"
 #include "gis/db/CDBFolderOther.h"
 #include "gis/db/CDBFolderProject.h"
 #include "gis/db/CDBItem.h"
+#include "gis/db/IDB.h"
 #include "gis/db/IDBFolder.h"
+#include "gis/db/IDBFolderSql.h"
 #include "gis/db/macros.h"
 
 #include <QtSql>
@@ -52,7 +53,7 @@ IDBFolder::~IDBFolder()
 bool IDBFolder::operator<(const QTreeWidgetItem &other) const
 {
     const IDBFolder * folder = dynamic_cast<const IDBFolder*>(&other);
-    if(folder == 0)
+    if(nullptr == folder)
     {
         return false;
     }
@@ -75,28 +76,33 @@ IDBFolder * IDBFolder::createFolderByType(QSqlDatabase& db, int type, quint64 id
         return new CDBFolderOther(db, id, parent);
 
     default:
-        return 0;
+        return nullptr;
     }
 }
 
-QString IDBFolder::getDBName()
+QString IDBFolder::getDBName() const
 {
     return db.connectionName();
 }
 
-CDBFolderDatabase * IDBFolder::getDBFolder()
+QString IDBFolder::getDBHost() const
+{
+    return db.hostName();
+}
+
+IDBFolderSql *IDBFolder::getDBFolder()
 {
     if(type() == eTypeDatabase)
     {
-        return dynamic_cast<CDBFolderDatabase*>(this);
+        return dynamic_cast<IDBFolderSql*>(this);
     }
 
     IDBFolder * folder = dynamic_cast<IDBFolder*>(parent());
-    if(folder != 0)
+    if(nullptr != folder)
     {
         return folder->getDBFolder();
     }
-    return 0;
+    return nullptr;
 }
 
 IDBFolder * IDBFolder::getFolder(quint64 idFolder)
@@ -110,19 +116,19 @@ IDBFolder * IDBFolder::getFolder(quint64 idFolder)
     for(int n = 0; n < N; n++)
     {
         IDBFolder * folder1 = dynamic_cast<IDBFolder*>(child(n));
-        if(folder1 == 0)
+        if(nullptr == folder1)
         {
-            return 0;
+            return nullptr;
         }
 
         IDBFolder * folder2 = folder1->getFolder(idFolder);
-        if(folder2)
+        if(nullptr != folder2)
         {
             return folder2;
         }
     }
 
-    return 0;
+    return nullptr;
 }
 
 quint64 IDBFolder::addFolder(type_e type, const QString& name)
@@ -130,7 +136,7 @@ quint64 IDBFolder::addFolder(type_e type, const QString& name)
     quint64 idChild = IDBFolder::addFolderToDb(type, name, id, db);
     if(idChild != 0)
     {
-        IDBFolder::createFolderByType(db, type, idChild, this);
+        createFolderByType(db, type, idChild, this);
         expanding();
     }
     return idChild;
@@ -144,10 +150,7 @@ quint64 IDBFolder::addFolderToDb(type_e type, const QString& name, quint64 idPar
     query.bindValue(":type", type);
     QUERY_EXEC(return 0);
 
-    query.prepare("SELECT last_insert_rowid() from folders");
-    QUERY_EXEC(return 0);
-    query.next();
-    quint64 idChild = query.value(0).toULongLong();
+    quint64 idChild = IDB::getLastInsertID(db, "folders");
     if(idChild == 0)
     {
         qDebug() << "CGisListDB::slotAddFolder(): childId equals 0. bad.";
@@ -165,7 +168,7 @@ quint64 IDBFolder::addFolderToDb(type_e type, const QString& name, quint64 idPar
 void IDBFolder::expanding()
 {
     qDeleteAll(takeChildren());
-    addChildren(QSet<QString>());
+    addChildren(QSet<QString>(), false);
 
     CEvtD2WReqInfo * evt = new CEvtD2WReqInfo(getId(), getDBName());
     CGisWidget::self().postEventForWks(evt);
@@ -187,7 +190,7 @@ void IDBFolder::update(CEvtW2DAckInfo * info)
         return;
     }
 
-    setCheckState(CGisListDB::eColumnCheckbox, info->isLoaded ? Qt::Checked : Qt::Unchecked);
+    setCheckState(CGisListDB::eColumnCheckbox, info->checkState);
 
     QSqlQuery query(db);
     // update text and tooltip
@@ -199,37 +202,130 @@ void IDBFolder::update(CEvtW2DAckInfo * info)
     setText(CGisListDB::eColumnName, query.value(0).toString());
     setToolTip(CGisListDB::eColumnName, query.value(1).toString());
 
-    // count folders linked to this folder
-    query.prepare("SELECT COUNT() FROM folder2folder WHERE parent=:id");
+    setChildIndicator();
+
+    if(isExpanded())
+    {
+        qDeleteAll(takeChildren());
+        addChildren(info->keysChildren, false);
+    }
+}
+
+bool IDBFolder::update()
+{
+    QSqlQuery query(db);
+
+    // Step 0: check if folder is still in the database
+    query.prepare("SELECT COUNT(*) FROM folders WHERE id=:id");
     query.bindValue(":id", id);
-    QUERY_EXEC(return );
-    query.next();
+    QUERY_EXEC(return false);
 
-    qint32 nFolders = query.value(0).toInt();
+    if(!query.next() || query.value(0).toInt() == 0)
+    {
+        qDebug() << text(CGisListDB::eColumnName) << query.value(0).toInt() << id;
+        // return false to mark folder to be deleted
+        return false;
+    }
 
-    // count items linked to this folder
-    query.prepare("SELECT COUNT() FROM folder2item WHERE parent=:id");
+    // Step 1: get basic properties like name and key
+    query.prepare("SELECT keyqms, name, comment FROM folders WHERE id=:id");
     query.bindValue(":id", id);
-    QUERY_EXEC(return );
+    QUERY_EXEC(return false);
     query.next();
 
-    qint32 nItems = query.value(0).toInt();
+    // update items look on the gui.
+    key = query.value(0).toString();
+    setText(CGisListDB::eColumnName, query.value(1).toString());
+    setToolTip(CGisListDB::eColumnName, query.value(2).toString());
 
-    // set indicator according to items
-    if(nFolders || nItems)
+    // Step 2: Test for children.
+    setChildIndicator();
+
+    // Nothing to do for folders not expanded
+    if(!isExpanded())
     {
-        setChildIndicatorPolicy(QTreeWidgetItem::ShowIndicator);
+        return true;
     }
-    else
+
+    /* Step 3: Iterate over all child items.
+     *
+     * There might be new folders to add. This is done collecting all sub-folder IDs in
+     * dbFoldersAdd. Remove every existing folder while iterating over all items. The
+     * left overs are the folders to add.
+     *
+     * Update existing folders. If the update return s false the folder was removed from
+     * the database or an error occured. In both cases remove the folder item.
+     *
+     * Collect all items in dbItems. They will be removed and the item list ist rebuilt
+     * from scratch.
+     */
+    QSet<QString>       activeChildren;
+    QList<CDBItem*>     dbItems;
+    QList<IDBFolder*>   dbFoldersDel;
+
+    // get all folder IDs attached to this folder
+    QList<quint64> dbFoldersAdd;
+    query.prepare("SELECT child FROM folder2folder WHERE parent=:parent");
+    query.bindValue(":parent", id);
+    QUERY_EXEC(return false);
+    while(query.next())
     {
-        setChildIndicatorPolicy(QTreeWidgetItem::DontShowIndicator);
+        dbFoldersAdd << query.value(0).toULongLong();
     }
 
-    if(isExpanded())
+    const int N = childCount();
+    for(int i = 0; i < N; i++)
     {
-        qDeleteAll(takeChildren());
-        addChildren(info->keysChildren);
+        QTreeWidgetItem * item = child(i);
+
+        // test for folder and update folder
+        // remove the folder from the add list as it is allready known
+        // if the update returns false register it for removal
+        IDBFolder * dbFolder = dynamic_cast<IDBFolder*>(item);
+        if(dbFolder != nullptr)
+        {
+            dbFoldersAdd.removeAll(dbFolder->getId());
+            if(dbFolder->update() == false)
+            {
+                dbFoldersDel << dbFolder;
+            }
+            continue;
+        }
+
+        CDBItem * dbItem = dynamic_cast<CDBItem*>(item);
+        if(dbItem != nullptr)
+        {
+            if(dbItem->checkState(CGisListDB::eColumnCheckbox) == Qt::Checked)
+            {
+                activeChildren << dbItem->getKey();
+            }
+            dbItems << dbItem;
+            continue;
+        }
     }
+
+    // Step 4: Remove items and folders registered for removal. Add missing folders. Rebuild list of items.
+    qDeleteAll(dbFoldersDel);
+    qDeleteAll(dbItems);
+
+    // add folders
+    query.prepare("SELECT t1.child, t2.type FROM folder2folder AS t1, folders AS t2 WHERE t1.parent = :id AND t2.id = t1.child ORDER BY t2.id");
+    query.bindValue(":id", id);
+    QUERY_EXEC(return false);
+    while(query.next())
+    {
+        quint64 idChild     = query.value(0).toULongLong();
+        quint32 typeChild   = query.value(1).toInt();
+        if(dbFoldersAdd.contains(idChild))
+        {
+            createFolderByType(db, typeChild, idChild, this);
+        }
+    }
+    sortChildren(CGisListDB::eColumnName, Qt::AscendingOrder);
+
+    // add children
+    addChildren(activeChildren, true);
+    return true;
 }
 
 void IDBFolder::toggle()
@@ -252,6 +348,8 @@ void IDBFolder::toggle()
         QUERY_EXEC(return );
 
         CEvtD2WShowItems * evt2 = new CEvtD2WShowItems(getId(), getDBName());
+        evt2->addItemsExclusively = true;
+
         while(query.next())
         {
             evt2->items << evt_item_t(query.value(0).toULongLong(), query.value(1).toUInt());
@@ -268,7 +366,7 @@ void IDBFolder::toggle()
 void IDBFolder::remove()
 {
     IDBFolder * folder = dynamic_cast<IDBFolder*>(parent());
-    if(folder == 0)
+    if(nullptr == folder)
     {
         return;
     }
@@ -287,7 +385,8 @@ void IDBFolder::setupFromDB()
 
     QSqlQuery query(db);
 
-    query.prepare("SELECT key, name, comment FROM folders WHERE id=:id");
+    // get basic properties like name and key
+    query.prepare("SELECT keyqms, name, comment FROM folders WHERE id=:id");
     query.bindValue(":id", id);
     QUERY_EXEC(return );
     query.next();
@@ -296,27 +395,11 @@ void IDBFolder::setupFromDB()
     setText(CGisListDB::eColumnName, query.value(1).toString());
     setToolTip(CGisListDB::eColumnName, query.value(2).toString());
 
-    query.prepare("SELECT EXISTS(SELECT 1 FROM folder2folder WHERE parent=:id LIMIT 1)");
-    query.bindValue(":id", id);
-    QUERY_EXEC(return );
-    query.next();
-
-    if(query.value(0).toInt() == 1)
-    {
-        setChildIndicatorPolicy(QTreeWidgetItem::ShowIndicator);
-    }
-    else
-    {
-        query.prepare("SELECT EXISTS(SELECT 1 FROM folder2item WHERE parent=:id LIMIT 1)");
-        query.bindValue(":id", id);
-        QUERY_EXEC(return );
-        query.next();
-        if(query.value(0).toInt() == 1)
-        {
-            setChildIndicatorPolicy(QTreeWidgetItem::ShowIndicator);
-        }
-    }
+    // check if folder has child folders (to set expand indicator)
+    setChildIndicator();
 
+    // if the folder is loadable the checkbox has to be displayed and
+    // an event to query the state has to be sent to the workspace
     if(isLoadable)
     {
         setCheckState(CGisListDB::eColumnCheckbox, Qt::Unchecked);
@@ -325,22 +408,25 @@ void IDBFolder::setupFromDB()
     }
 }
 
-void IDBFolder::addChildren(const QSet<QString>& activeChildren)
+void IDBFolder::addChildren(const QSet<QString>& activeChildren, bool skipFolders)
 {
     QSqlQuery query(db);
 
-    // folders 1st
-    query.prepare("SELECT t1.child, t2.type FROM folder2folder AS t1, folders AS t2 WHERE t1.parent = :id AND t2.id = t1.child ORDER BY t2.id");
-    query.bindValue(":id", id);
-    QUERY_EXEC(return );
-    while(query.next())
+    if(!skipFolders)
     {
-        quint64 idChild     = query.value(0).toULongLong();
-        quint32 typeChild   = query.value(1).toInt();
-        IDBFolder::createFolderByType(db, typeChild, idChild, this);
-    }
+        // folders 1st
+        query.prepare("SELECT t1.child, t2.type FROM folder2folder AS t1, folders AS t2 WHERE t1.parent = :id AND t2.id = t1.child ORDER BY t2.id");
+        query.bindValue(":id", id);
+        QUERY_EXEC(return );
+        while(query.next())
+        {
+            quint64 idChild     = query.value(0).toULongLong();
+            quint32 typeChild   = query.value(1).toInt();
+            createFolderByType(db, typeChild, idChild, this);
+        }
 
-    sortChildren(CGisListDB::eColumnName, Qt::AscendingOrder);
+        sortChildren(CGisListDB::eColumnName, Qt::AscendingOrder);
+    }
 
     // tracks 2nd
     query.prepare("SELECT t1.child FROM folder2item AS t1, items AS t2 WHERE t1.parent = :id AND t2.id = t1.child AND t2.type=:type ORDER BY t2.id");
@@ -425,3 +511,40 @@ void IDBFolder::remove(quint64 idParent, quint64 idFolder)
         QUERY_EXEC()
     }
 }
+
+void IDBFolder::updateItemsOnWks()
+{
+    CEvtD2WUpdateItems * evt = new CEvtD2WUpdateItems(getId(), getDBName());
+    CGisWidget::self().postEventForWks(evt);
+}
+
+void IDBFolder::setChildIndicator()
+{
+    QSqlQuery query(db);
+
+    // count folders linked to this folder
+    query.prepare("SELECT COUNT(*) FROM folder2folder WHERE parent=:id");
+    query.bindValue(":id", id);
+    QUERY_EXEC(return );
+    query.next();
+
+    qint32 nFolders = query.value(0).toInt();
+
+    // count items linked to this folder
+    query.prepare("SELECT COUNT(*) FROM folder2item WHERE parent=:id");
+    query.bindValue(":id", id);
+    QUERY_EXEC(return );
+    query.next();
+
+    qint32 nItems = query.value(0).toInt();
+
+    // set indicator according to items
+    if(nFolders || nItems)
+    {
+        setChildIndicatorPolicy(QTreeWidgetItem::ShowIndicator);
+    }
+    else
+    {
+        setChildIndicatorPolicy(QTreeWidgetItem::DontShowIndicator);
+    }
+}
diff --git a/src/gis/db/IDBFolder.h b/src/gis/db/IDBFolder.h
index ff3b3db..192881c 100644
--- a/src/gis/db/IDBFolder.h
+++ b/src/gis/db/IDBFolder.h
@@ -24,9 +24,12 @@
 
 class QSqlDatabase;
 class CEvtW2DAckInfo;
-class CDBFolderDatabase;
+class IDBFolderSql;
 class CDBItem;
 
+/**
+ * @brief Baseclass for all folders in the database view
+ */
 class IDBFolder : public QTreeWidgetItem
 {
 public:
@@ -34,39 +37,144 @@ public:
     {
         eTypeLostFound = 1
         ,eTypeDatabase = 2
-        ,eTypeGroup = 3
-        ,eTypeProject = 4
-        ,eTypeOther = 5
+        ,eTypeGroup    = 3
+        ,eTypeProject  = 4
+        ,eTypeOther    = 5
     };
 
     IDBFolder(bool isLoadable, QSqlDatabase& db, type_e type, quint64 id, QTreeWidgetItem * parent);
     IDBFolder(bool isLoadable, QSqlDatabase& db, type_e type, quint64 id, QTreeWidget * parent);
     virtual ~IDBFolder();
 
-    quint64 getId()
+    /**
+     * @brief Get the 64bit database key
+     * @return
+     */
+    quint64 getId() const
     {
         return id;
     }
-    QString getDBName();
-    CDBFolderDatabase * getDBFolder();
+    QString getDBName() const;
+    QString getDBHost() const;
+
+    QSqlDatabase& getDb(){return db; }
+
+    /**
+     * @brief Get the database folder that folder is stored in
+     *
+     * @return On success a pointer to the item holding the database is returned.
+     */
+    IDBFolderSql * getDBFolder();
+
+    /**
+     * @brief Search and get access to a subfolder
+     * @param idFolder  the database key of the folder
+     * @return On success a pointer to the item is returned. Else 0.
+     */
     IDBFolder * getFolder(quint64 idFolder);
 
+    /**
+     * @brief Add a new folder to the database and the treewidget.
+     *
+     * This will call addFolderToDb() and createFolderByType()
+     *
+     * @param type      the type of the new folder
+     * @param name      the name of the new folder
+     * @return The 64bit database key of the new folder. 0 on failure.
+     */
     virtual quint64 addFolder(type_e type, const QString &name);
+    /**
+     * @brief Add children from database
+     */
     virtual void expanding();
+    /**
+     * @brief Update item all child items from database
+     *
+     * The event has a list of active items. The item list is created from
+     * scratch and the check state is updated by that list
+     *
+     * @param info  The event object posted by the workspace
+     */
     virtual void update(CEvtW2DAckInfo * info);
+
+    /**
+     * @brief Update from database
+     *
+     * The database might have been changed by other users. Update list of folders
+     * and update each folder expanded. Rebuild list of items.
+     */
+    virtual bool update();
+
+    /**
+     * @brief Toggle check state of project and post event to workspace.
+     */
     virtual void toggle();
+    /**
+     * @brief Remove folder from database and post event to workspace
+     */
     virtual void remove();
 
-    static IDBFolder * createFolderByType(QSqlDatabase &db, int type, quint64 id, QTreeWidgetItem *parent);
+    /**
+     * @brief Create a new folder entry into the database table
+     *
+     * The folder will be attached to it's parent folder
+     *
+     * @param type          the tye of the new folder
+     * @param name          the name of the new folder
+     * @param idParent      the 64bit database key of the parent
+     * @param db            the database to work on
+     * @return The 64bit database key of the new folder. 0 on failure.
+     */
     static quint64 addFolderToDb(type_e type, const QString& name, quint64 idParent, QSqlDatabase& db);
 
-    bool operator<(const QTreeWidgetItem &other) const;
+    /**
+     * @brief Create a new treeWidgetItem from a folder in the database
+     *
+     * @param db        the database the item belongs to
+     * @param type      the folder type to create
+     * @param id        the database key of the folder
+     * @param parent    the items parent item
+     * @return A pointer to the new treewidgetitem.
+     */
+    static IDBFolder * createFolderByType(QSqlDatabase &db, int type, quint64 id, QTreeWidgetItem *parent);
+
+    bool operator<(const QTreeWidgetItem &other) const override;
+
+    void updateItemsOnWks();
 
 protected:
+    /**
+       @brief Setup all item properties
+
+       This will read the database to setup the name, key and tooltip. Additionally it
+       will query for child elements (folders, gis items) and set the expand indicator
+       accordingly. If the folder is loadable the checkbox has to be displayed and the
+       workspace has to be queried for the folder.
+
+     */
     virtual void setupFromDB();
-    virtual void addChildren(const QSet<QString> &activeChildren);
+
+    /**
+       @brief Add child items like folders, tracks, routes, waypoints and overlays
+
+       The checkbox of active items will be set checked.
+
+       @param activeChildren     a set of item keys that are active on the workspace
+     */
+    virtual void addChildren(const QSet<QString> &activeChildren, bool skipFolders);
+
+    /**
+       @brief Remove a folder to folder realtion
+
+       If the folder has no other relation the folder's relation to it's children is removed, too.
+
+       @param idParent      the 64bit database key of the parent folder
+       @param idFolder      the 64bit database key of the child folder to be removed
+     */
     virtual void remove(quint64 idParent, quint64 idFolder);
 
+    void setChildIndicator();
+
     QSqlDatabase& db;
 
     quint64 id;
diff --git a/src/gis/db/IDBFolderSql.cpp b/src/gis/db/IDBFolderSql.cpp
new file mode 100644
index 0000000..da1361e
--- /dev/null
+++ b/src/gis/db/IDBFolderSql.cpp
@@ -0,0 +1,156 @@
+/**********************************************************************************************
+    Copyright (C) 2014-2015 Oliver Eichler oliver.eichler at gmx.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "CMainWindow.h"
+#include "gis/CGisListDB.h"
+#include "gis/db/CDBFolderLostFound.h"
+#include "gis/db/IDBFolderSql.h"
+#include "gis/db/macros.h"
+#include "helpers/CSettings.h"
+
+#include <QtNetwork>
+#include <QtSql>
+
+IDBFolderSql::IDBFolderSql(QSqlDatabase &db, QTreeWidget *parent)
+    : IDBFolder(false, db, eTypeDatabase, 1, parent)
+{
+    socket = new QUdpSocket(this);
+}
+
+void IDBFolderSql::expanding()
+{
+    IDBFolder::expanding();
+
+    folderLostFound  = new CDBFolderLostFound(db, nullptr);
+    insertChild(0, folderLostFound);
+}
+
+void IDBFolderSql::updateLostFound()
+{
+    if(folderLostFound)
+    {
+        folderLostFound->update();
+    }
+}
+
+bool IDBFolderSql::update()
+{
+    QSqlQuery query(db);
+    QList<IDBFolder*> dbFoldersDel;
+
+    /* Database folders are a bit special as there are no items. But a lost & found folder.
+     *
+     * As there can be folders removed from the database and new folders this is a bit tricky.
+     *
+     * dbFoldersAdd is filled with all folders IDs attached with the database folder. Now we
+     * iterate over all existing items and remove their ID from dbFoldersAdd. Additionally
+     * the folder item is updated. If the update returns false, the folders was removed from
+     * the database or an error occured. In both cases the item is registered for removal in
+     * dbFoldersDel.
+     *
+     * When done with the iteration all folders registered for removal are deleted and the
+     * new ones are created. Finally lost & found is updated.
+     */
+
+    // get all folder IDs attached to this folder
+    QList<quint64> dbFoldersAdd;
+    query.prepare("SELECT child FROM folder2folder WHERE parent=:parent");
+    query.bindValue(":parent", id);
+    QUERY_EXEC(return false);
+    while(query.next())
+    {
+        dbFoldersAdd << query.value(0).toULongLong();
+    }
+
+    const int N = childCount();
+    for(int i = 1; i < N; i++)
+    {
+        IDBFolder * folder = dynamic_cast<IDBFolder*>(child(i));
+        if(folder)
+        {
+            dbFoldersAdd.removeAll(folder->getId());
+            if(!folder->update())
+            {
+                dbFoldersDel << folder;
+            }
+        }
+    }
+
+    qDeleteAll(dbFoldersDel);
+
+    // add folders
+    query.prepare("SELECT t1.child, t2.type FROM folder2folder AS t1, folders AS t2 WHERE t1.parent = :id AND t2.id = t1.child ORDER BY t2.id");
+    query.bindValue(":id", id);
+    QUERY_EXEC(return false);
+    while(query.next())
+    {
+        quint64 idChild     = query.value(0).toULongLong();
+        quint32 typeChild   = query.value(1).toInt();
+        if(dbFoldersAdd.contains(idChild))
+        {
+            createFolderByType(db, typeChild, idChild, this);
+        }
+    }
+
+    takeChild(0);
+    sortChildren(CGisListDB::eColumnName, Qt::AscendingOrder);
+    insertChild(0, folderLostFound);
+
+    updateLostFound();
+    return true;
+}
+
+void IDBFolderSql::announceChange() const
+{
+    SETTINGS;
+    bool enabled = cfg.value("Database/listenUpdate", false).toBool();
+    if(!enabled)
+    {
+        return;
+    }
+    quint16 port = cfg.value("Database/port", UDP_PORT).toUInt();
+
+
+    QByteArray msg;
+    QDataStream stream(&msg, QIODevice::WriteOnly);
+    stream.setByteOrder(QDataStream::LittleEndian);
+    stream.setVersion(QDataStream::Qt_5_2);
+
+    quint32 tan = qrand();
+
+    stream << quint32(0);
+    stream << tan;
+    stream << CMainWindow::self().id;
+    stream << db.driverName();
+    stream << getDBName();
+    stream << getDBHost();
+
+    QList<QNetworkInterface> netdevices = QNetworkInterface::allInterfaces();
+    QNetworkInterface netdevice;
+    foreach(netdevice, netdevices)
+    {
+        QList<QNetworkAddressEntry> networks = netdevice.addressEntries();
+        QNetworkAddressEntry network;
+        foreach(network, networks)
+        {
+            socket->writeDatagram(msg, network.broadcast(), port);
+            socket->writeDatagram(msg, network.broadcast(), port);
+            socket->writeDatagram(msg, network.broadcast(), port);
+        }
+    }
+}
diff --git a/src/gis/db/CDBFolderDatabase.h b/src/gis/db/IDBFolderSql.h
similarity index 61%
rename from src/gis/db/CDBFolderDatabase.h
rename to src/gis/db/IDBFolderSql.h
index f47dde9..8af3347 100644
--- a/src/gis/db/CDBFolderDatabase.h
+++ b/src/gis/db/IDBFolderSql.h
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+    Copyright (C) 2014-2015 Oliver Eichler oliver.eichler at gmx.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -16,36 +16,38 @@
 
 **********************************************************************************************/
 
-#ifndef CDBFOLDERDATABASE_H
-#define CDBFOLDERDATABASE_H
+#ifndef IDBFOLDERSQL_H
+#define IDBFOLDERSQL_H
 
 #include "gis/db/IDBFolder.h"
-#include <gis/db/IDB.h>
 
 class CDBFolderLostFound;
+class QUdpSocket;
 
-class CDBFolderDatabase : public IDBFolder, private IDB
+#define UDP_PORT 34123
+
+class IDBFolderSql : public IDBFolder, public QObject
 {
 public:
-    CDBFolderDatabase(const QString &filename, const QString &name, QTreeWidget *parent);
-    virtual ~CDBFolderDatabase();
+    IDBFolderSql(QSqlDatabase& db, QTreeWidget * parent);
+    virtual ~IDBFolderSql() = default;
 
-    void expanding();
+    void expanding() override;
     void updateLostFound();
-    const QString& getFilename()
+    void update(CEvtW2DAckInfo * info) override
     {
-        return filename;
+        IDBFolder::update(info);
     }
+    bool update() override;
 
-    QSqlDatabase& getDb()
-    {
-        return IDB::db;
-    }
+    void announceChange() const;
+
+
+protected:
+    CDBFolderLostFound * folderLostFound = nullptr;
 
-private:
-    QString filename;
-    CDBFolderLostFound * folderLostFound = 0;
+    QUdpSocket * socket;
 };
 
-#endif //CDBFOLDERDATABASE_H
+#endif //IDBFOLDERSQL_H
 
diff --git a/src/gis/db/IDBMysql.cpp b/src/gis/db/IDBMysql.cpp
new file mode 100644
index 0000000..7d43e5a
--- /dev/null
+++ b/src/gis/db/IDBMysql.cpp
@@ -0,0 +1,173 @@
+/**********************************************************************************************
+    Copyright (C) 2014-2015 Oliver Eichler oliver.eichler at gmx.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "CMainWindow.h"
+#include "gis/db/IDBMysql.h"
+#include "gis/db/macros.h"
+
+#include <QtSql>
+#include <QtWidgets>
+
+
+IDBMysql::IDBMysql()
+{
+}
+
+bool IDBMysql::setupDB(const QString& server, const QString& port, const QString& user, const QString& passwd, bool noPasswd, const QString& name, const QString& connectionName)
+{
+    // this is important!
+    IDB::setup(connectionName);
+
+    if(!QSqlDatabase::contains(connectionName))
+    {
+        db = QSqlDatabase::addDatabase("QMYSQL", connectionName);
+        db.setDatabaseName(name);
+        db.setHostName(server);
+
+        if(!port.isEmpty())
+        {
+            quint16 port16 = port.toUInt();
+            db.setPort(port16);
+        }
+
+        db.setUserName(user);
+
+        if(!noPasswd)
+        {
+            if(passwd.isEmpty())
+            {
+                QString p = QInputDialog::getText(CMainWindow::self().getBestWidgetForParent(), tr("Password..."), tr("Password for database '%1':").arg(name), QLineEdit::Password, "");
+                db.setPassword(p);
+            }
+            else
+            {
+                db.setPassword(passwd);
+            }
+        }
+
+        qDebug() << "open MySQL database" << name << "@" << server << ":" << port << "as user" << user;
+
+        if(!db.open())
+        {
+            qDebug() << "failed to open database" << db.lastError();
+            return false;
+        }
+    }
+    else
+    {
+        db = QSqlDatabase::database(connectionName);
+    }
+
+    return setupDB();
+}
+
+bool IDBMysql::initDB()
+{
+    QSqlQuery query(db);
+
+    if(query.exec( "CREATE TABLE versioninfo ( version TEXT, type TEXT )"))
+    {
+        query.prepare( "INSERT INTO versioninfo (version, type) VALUES(:version, 'QMapShack')");
+        query.bindValue(":version", DB_VERSION);
+        QUERY_EXEC(return false);
+    }
+
+    QUERY_RUN( "CREATE TABLE folders ("
+               "id             INTEGER PRIMARY KEY AUTO_INCREMENT,"
+               "type           INTEGER NOT NULL,"
+               "keyqms         TEXT,"
+               "date           DATETIME DEFAULT CURRENT_TIMESTAMP,"
+               "name           TEXT NOT NULL,"
+               "comment        TEXT,"
+               "locked         BOOLEAN DEFAULT FALSE,"
+               "data           LONGBLOB"
+               ")", return false);
+
+    QUERY_RUN( "CREATE TABLE items ("
+               "id             INTEGER PRIMARY KEY AUTO_INCREMENT,"
+               "type           INTEGER,"
+               "keyqms         VARCHAR(64) NOT NULL,"
+               "date           DATETIME DEFAULT CURRENT_TIMESTAMP,"
+               "icon           BLOB NOT NULL,"
+               "name           TEXT NOT NULL,"
+               "comment        TEXT,"
+               "data           LONGBLOB NOT NULL,"
+               "hash           TEXT NOT NULL,"
+               "last_user      TEXT DEFAULT NULL,"
+               "last_change    DATETIME DEFAULT NOW() ON UPDATE NOW(),"
+               "trash          DATETIME DEFAULT NULL,"
+               "UNIQUE KEY (keyqms)"
+               ")", return false);
+
+    QUERY_RUN("CREATE TRIGGER items_insert_last_user "
+              "BEFORE INSERT ON items "
+              "FOR EACH ROW SET NEW.last_user = USER();"
+              , return false);
+
+    QUERY_RUN("CREATE TRIGGER items_update_last_user "
+              "BEFORE UPDATE ON items "
+              "FOR EACH ROW SET NEW.last_user = USER();"
+              , return false);
+
+    query.prepare("INSERT INTO folders (type, name, comment) VALUES (2, :name, '')");
+    query.bindValue(":name", db.connectionName());
+    QUERY_EXEC(return false);
+
+    QUERY_RUN( "CREATE TABLE folder2folder ("
+               "id             INTEGER PRIMARY KEY AUTO_INCREMENT,"
+               "parent         INTEGER NOT NULL,"
+               "child          INTEGER NOT NULL,"
+               "FOREIGN KEY(parent) REFERENCES folders(id),"
+               "FOREIGN KEY(child) REFERENCES folders(id)"
+               ")", return false);
+
+    QUERY_RUN( "CREATE TABLE folder2item ("
+               "id             INTEGER PRIMARY KEY AUTO_INCREMENT,"
+               "parent         INTEGER NOT NULL,"
+               "child          INTEGER NOT NULL,"
+               "FOREIGN KEY(parent) REFERENCES folders(id),"
+               "FOREIGN KEY(child) REFERENCES items(id)"
+               ")", return false);
+
+    QUERY_RUN("CREATE TRIGGER folder2item_insert "
+              "BEFORE INSERT ON folder2item "
+              "FOR EACH ROW UPDATE items SET trash=NULL "
+              "WHERE id=NEW.child;"
+              , return false);
+
+    QUERY_RUN("CREATE TRIGGER folder2item_delete "
+              "AFTER DELETE ON folder2item "
+              "FOR EACH ROW UPDATE items SET trash=CURRENT_TIMESTAMP "
+              "WHERE id=OLD.child AND OLD.child NOT IN(SELECT child FROM folder2item);"
+              , return false);
+
+    return true;
+}
+
+bool IDBMysql::migrateDB(int version)
+{
+    QSqlQuery query(db);
+
+    return false;
+
+    query.prepare( "UPDATE versioninfo set version=:version");
+    query.bindValue(":version", DB_VERSION);
+    QUERY_EXEC(return false);
+    return true;
+}
+
diff --git a/src/units/CCoordFormatSetup.h b/src/gis/db/IDBMysql.h
similarity index 66%
copy from src/units/CCoordFormatSetup.h
copy to src/gis/db/IDBMysql.h
index 3e37468..55a1f3c 100644
--- a/src/units/CCoordFormatSetup.h
+++ b/src/gis/db/IDBMysql.h
@@ -16,22 +16,24 @@
 
 **********************************************************************************************/
 
-#ifndef CCOORDFORMATSETUP_H
-#define CCOORDFORMATSETUP_H
+#ifndef IDBMYSQL_H
+#define IDBMYSQL_H
 
-#include "ui_ICoordFormatSetup.h"
-#include <QDialog>
+#include "gis/db/IDB.h"
 
-class CCoordFormatSetup : public QDialog, private Ui::ICoordFormatSetup
+class IDBMysql : public IDB
 {
-    Q_OBJECT
+    Q_DECLARE_TR_FUNCTIONS(IDBMysql)
 public:
-    CCoordFormatSetup(QWidget * parent);
-    virtual ~CCoordFormatSetup();
-
-public slots:
-    void accept();
+    IDBMysql();
+    virtual ~IDBMysql() = default;
+
+protected:
+    using IDB::setupDB;
+    bool setupDB(const QString &server, const QString &port, const QString &user, const QString &passwd, bool noPasswd, const QString &name, const QString &connectionName);
+    bool initDB() override;
+    bool migrateDB(int version) override;
 };
 
-#endif //CCOORDFORMATSETUP_H
+#endif //IDBMYSQL_H
 
diff --git a/src/gis/db/IDBSqlite.cpp b/src/gis/db/IDBSqlite.cpp
new file mode 100644
index 0000000..544d07b
--- /dev/null
+++ b/src/gis/db/IDBSqlite.cpp
@@ -0,0 +1,352 @@
+/**********************************************************************************************
+    Copyright (C) 2014-2015 Oliver Eichler oliver.eichler at gmx.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "CMainWindow.h"
+#include "gis/db/IDBSqlite.h"
+#include "gis/db/macros.h"
+#include "gis/ovl/CGisItemOvlArea.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/wpt/CGisItemWpt.h"
+#include "helpers/CProgressDialog.h"
+
+#include <QtSql>
+#include <QtWidgets>
+
+IDBSqlite::IDBSqlite()
+{
+}
+
+
+bool IDBSqlite::setupDB(const QString& filename, const QString& connectionName)
+{
+    // this is important!
+    IDB::setup(connectionName);
+
+    if(!QSqlDatabase::contains(connectionName))
+    {
+        db = QSqlDatabase::addDatabase("QSQLITE", connectionName);
+        db.setDatabaseName(filename);
+        if(!db.open())
+        {
+            qDebug() << "failed to open database" << db.lastError();
+        }
+    }
+    else
+    {
+        db = QSqlDatabase::database(connectionName);
+    }
+
+    QSqlQuery query(db);
+
+    QUERY_RUN("PRAGMA locking_mode=NORMAL",    return false)
+    QUERY_RUN("PRAGMA temp_store=MEMORY",      return false)
+    QUERY_RUN("PRAGMA default_cache_size=50",  return false)
+    QUERY_RUN("PRAGMA page_size=8192",         return false)
+    QUERY_RUN("PRAGMA synchronous=off",        return false)
+
+    // When migrating the database these tables are used.
+    // Due to caching they can't be dropped right after the
+    // migration. That is why we look for them on startup.
+    // And delete them as a second chance.
+    if(query.exec("select * from tmp_folders"))
+    {
+        QUERY_RUN("DROP TABLE tmp_folders;", NO_CMD)
+    }
+    if(query.exec("select * from tmp_items"))
+    {
+        QUERY_RUN("DROP TABLE tmp_items;", NO_CMD)
+    }
+
+    return setupDB();
+}
+
+bool IDBSqlite::initDB()
+{
+    QSqlQuery query(db);
+
+    QUERY_RUN("BEGIN TRANSACTION;", return false);
+    try
+    {
+        if(query.exec( "CREATE TABLE versioninfo ( version TEXT, type TEXT )"))
+        {
+            query.prepare( "INSERT INTO versioninfo (version, type) VALUES(:version, 'QMapShack')");
+            query.bindValue(":version", DB_VERSION);
+            QUERY_EXEC(throw -1);
+        }
+
+        QUERY_RUN("CREATE TABLE folders ("
+                  "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
+                  "type           INTEGER NOT NULL,"
+                  "keyqms         TEXT,"
+                  "date           DATETIME DEFAULT CURRENT_TIMESTAMP,"
+                  "name           TEXT NOT NULL,"
+                  "comment        TEXT,"
+                  "locked         BOOLEAN DEFAULT FALSE,"
+                  "data           BLOB"
+                  ")", throw -1)
+
+        QUERY_RUN("CREATE TABLE items ("
+                  "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
+                  "type           INTEGER,"
+                  "keyqms         TEXT NOT NULL UNIQUE,"
+                  "date           DATETIME DEFAULT CURRENT_TIMESTAMP,"
+                  "icon           BLOB NOT NULL,"
+                  "name           TEXT NOT NULL,"
+                  "comment        TEXT,"
+                  "data           BLOB NOT NULL,"
+                  "hash           TEXT NOT NULL,"
+                  "last_user      TEXT DEFAULT 'QMapShack',"
+                  "last_change    DATETIME DEFAULT CURRENT_TIMESTAMP,"
+                  "trash          DATETIME DEFAULT NULL"
+                  ")", throw -1)
+
+        QUERY_RUN("CREATE TRIGGER items_update_last_change "
+                  "AFTER UPDATE ON items BEGIN "
+                  "UPDATE items SET last_change=CURRENT_TIMESTAMP WHERE id=NEW.id; "
+                  "END;", throw -1)
+
+
+        query.prepare("INSERT INTO folders (type, name, comment) VALUES (2, :name, '')");
+        query.bindValue(":name", db.connectionName());
+        QUERY_EXEC(return false);
+
+        QUERY_RUN("CREATE TABLE folder2folder ("
+                  "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
+                  "parent         INTEGER NOT NULL,"
+                  "child          INTEGER NOT NULL,"
+                  "FOREIGN KEY(parent) REFERENCES folders(id),"
+                  "FOREIGN KEY(child) REFERENCES folders(id)"
+                  ")", throw -1)
+
+        QUERY_RUN("CREATE TABLE folder2item ("
+                  "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
+                  "parent         INTEGER NOT NULL,"
+                  "child          INTEGER NOT NULL,"
+                  "FOREIGN KEY(parent) REFERENCES folders(id),"
+                  "FOREIGN KEY(child) REFERENCES items(id)"
+                  ")", return false)
+
+        QUERY_RUN("CREATE TRIGGER folder2item_insert "
+                  "BEFORE INSERT ON folder2item BEGIN "
+                  "UPDATE items SET trash=NULL "
+                  "WHERE id=NEW.child; "
+                  "END;", throw -1);
+
+        QUERY_RUN("CREATE TRIGGER folder2item_delete "
+                  "AFTER DELETE ON folder2item BEGIN "
+                  "UPDATE items SET trash=CURRENT_TIMESTAMP "
+                  "WHERE id=OLD.child AND OLD.child NOT IN(SELECT child FROM folder2item); "
+                  "END;", throw -1);
+
+        QUERY_RUN("END TRANSACTION;", throw -1);
+    }
+    catch(int i)
+    {
+        if(i == -1)
+        {
+            QUERY_RUN("ROLLBACK;", return false);
+            return false;
+        }
+    }
+
+
+    return true;
+}
+
+bool IDBSqlite::migrateDB(int version)
+{
+    QSqlQuery query(db);
+
+    QUERY_RUN("BEGIN TRANSACTION;", return false);
+    try
+    {
+        if(version < 2)
+        {
+            if(!migrateDB1to2())
+            {
+                throw -1;
+            }
+        }
+
+        if(version < 3)
+        {
+            if(!migrateDB2to3())
+            {
+                throw -1;
+            }
+        }
+
+        if(version < 4)
+        {
+            if(!migrateDB3to4())
+            {
+                throw -1;
+            }
+        }
+
+        QUERY_RUN("END TRANSACTION;", throw -1);
+    }
+    catch(int i)
+    {
+        if(i == -1)
+        {
+            QUERY_RUN("ROLLBACK;", return false);
+            return false;
+        }
+    }
+
+    query.prepare( "UPDATE versioninfo set version=:version");
+    query.bindValue(":version", DB_VERSION);
+    QUERY_EXEC(return false);
+    return true;
+}
+
+bool IDBSqlite::migrateDB1to2()
+{
+    QSqlQuery query(db);
+
+    QUERY_RUN("ALTER TABLE folders RENAME TO tmp_folders;", return false)
+
+    QUERY_RUN("CREATE TABLE folders ("
+              "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
+              "type           INTEGER NOT NULL,"
+              "keyqms         TEXT,"
+              "date           DATETIME DEFAULT CURRENT_TIMESTAMP,"
+              "name           TEXT NOT NULL,"
+              "comment        TEXT,"
+              "locked         BOOLEAN DEFAULT FALSE,"
+              "data           BLOB"
+              ");", return false);
+
+    QUERY_RUN("INSERT INTO folders(id,type,keyqms,date,name,comment,locked,data) SELECT * FROM tmp_folders;", return false);
+
+    QUERY_RUN("ALTER TABLE items RENAME TO tmp_items;", return false);
+    QUERY_RUN("CREATE TABLE items ("
+              "id             INTEGER PRIMARY KEY AUTOINCREMENT,"
+              "type           INTEGER,"
+              "keyqms         TEXT NOT NULL,"
+              "date           DATETIME DEFAULT CURRENT_TIMESTAMP,"
+              "icon           BLOB NOT NULL,"
+              "name           TEXT NOT NULL,"
+              "comment        TEXT,"
+              "data           BLOB NOT NULL"
+              ");", return false);
+    QUERY_RUN("INSERT INTO items(id,type,keyqms,date,icon,name,comment,data) SELECT * FROM tmp_items;", return false);
+
+
+    return true;
+}
+
+bool IDBSqlite::migrateDB2to3()
+{
+    QSqlQuery query(db);
+
+    QUERY_RUN("ALTER TABLE items ADD COLUMN hash TEXT NOT NULL DEFAULT '-'",            return false);
+    QUERY_RUN("ALTER TABLE items ADD COLUMN last_user TEXT NOT NULL DEFAULT 'QMapShack'", return false);
+    QUERY_RUN("ALTER TABLE items ADD COLUMN last_change DATETIME NOT NULL DEFAULT '-'", return false);
+
+    QUERY_RUN("CREATE TRIGGER items_update_last_change "
+              "AFTER UPDATE ON items BEGIN "
+              "UPDATE items SET last_change=datetime(CURRENT_TIMESTAMP, 'localtime') WHERE id=NEW.id; "
+              "END;", return false);
+
+    QUERY_RUN("SELECT Count(*) FROM items", return false);
+    query.next();
+    quint32 N = query.value(0).toUInt();
+
+    QUERY_RUN("SELECT id, type FROM items WHERE hash='-'", return false);
+
+    PROGRESS_SETUP("Migrate all GIS items.", 0, N, CMainWindow::self().getBestWidgetForParent());
+    progress.enableCancel(false);
+    quint32 cnt = 0;
+    while(query.next())
+    {
+        PROGRESS(cnt++,;
+                 );
+
+        quint64 idItem      = query.value(0).toULongLong();
+        quint32 typeItem    = query.value(1).toUInt();
+
+        IGisItem *item = nullptr;
+
+        // load item from database for a compare
+        switch(typeItem)
+        {
+        case IGisItem::eTypeWpt:
+            item = new CGisItemWpt(idItem, db, 0);
+            break;
+
+        case IGisItem::eTypeTrk:
+            item = new CGisItemTrk(idItem, db, 0);
+            break;
+
+        case IGisItem::eTypeRte:
+            item = new CGisItemRte(idItem, db, 0);
+            break;
+
+        case IGisItem::eTypeOvl:
+            item = new CGisItemOvlArea(idItem, db, 0);
+            break;
+
+        default:
+            ;
+        }
+
+        if(nullptr == item)
+        {
+            continue;
+        }
+
+        QSqlQuery query2(db);
+        query2.prepare("UPDATE items SET hash=:hash, last_user='QMapShack' WHERE id=:id");
+        query2.bindValue(":hash", item->getHash());
+        query2.bindValue(":id", idItem);
+        if(!query2.exec())
+        {
+            qWarning() << query2.lastQuery();
+            qWarning() << query2.lastError();
+        }
+
+        delete item;
+    }
+
+    return true;
+}
+
+bool IDBSqlite::migrateDB3to4()
+{
+    QSqlQuery query(db);
+
+    QUERY_RUN("ALTER TABLE items ADD COLUMN trash DATETIME DEFAULT NULL", return false);
+
+    QUERY_RUN("CREATE TRIGGER folder2item_insert "
+              "BEFORE INSERT ON folder2item BEGIN "
+              "UPDATE items SET trash=NULL "
+              "WHERE id=NEW.child; "
+              "END;", return false);
+
+    QUERY_RUN("CREATE TRIGGER folder2item_delete "
+              "AFTER DELETE ON folder2item BEGIN "
+              "UPDATE items SET trash=CURRENT_TIMESTAMP "
+              "WHERE id=OLD.child AND OLD.child NOT IN(SELECT child FROM folder2item); "
+              "END;", return false);
+
+    return true;
+}
+
diff --git a/src/gis/db/IDB.h b/src/gis/db/IDBSqlite.h
similarity index 70%
copy from src/gis/db/IDB.h
copy to src/gis/db/IDBSqlite.h
index 8c0e487..cafb189 100644
--- a/src/gis/db/IDB.h
+++ b/src/gis/db/IDBSqlite.h
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+    Copyright (C) 2014-2015 Oliver Eichler oliver.eichler at gmx.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -16,27 +16,26 @@
 
 **********************************************************************************************/
 
-#ifndef IDB_H
-#define IDB_H
+#ifndef IDBSQLITE_H
+#define IDBSQLITE_H
 
-#include <QMap>
-#include <QSqlDatabase>
+#include "gis/db/IDB.h"
 
-class IDB
+class IDBSqlite : public IDB
 {
 public:
-    IDB();
-    virtual ~IDB();
+    IDBSqlite();
+    virtual ~IDBSqlite() = default;
 
 protected:
+    using IDB::setupDB;
     bool setupDB(const QString &filename, const QString &connectionName);
-    bool initDB();
-    bool migrateDB(int version);
-
-    QSqlDatabase db;
-
-    static QMap<QString,int> references;
+    bool initDB() override;
+    bool migrateDB(int version) override;
+    bool migrateDB1to2();
+    bool migrateDB2to3();
+    bool migrateDB3to4();
 };
 
-#endif //IDB_H
+#endif //IDBSQLITE_H
 
diff --git a/src/gis/db/ISelectSaveAction.ui b/src/gis/db/ISelectSaveAction.ui
index 391583f..6108e06 100644
--- a/src/gis/db/ISelectSaveAction.ui
+++ b/src/gis/db/ISelectSaveAction.ui
@@ -7,42 +7,63 @@
     <x>0</x>
     <y>0</y>
     <width>471</width>
-    <height>253</height>
+    <height>340</height>
    </rect>
   </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
   <property name="windowTitle">
    <string>Copy item...</string>
   </property>
   <layout class="QFormLayout" name="formLayout">
    <property name="fieldGrowthPolicy">
-    <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
+    <enum>QFormLayout::ExpandingFieldsGrow</enum>
    </property>
    <item row="0" column="1">
     <widget class="QPushButton" name="pushSave">
-     <property name="text">
-      <string>Replace existing item</string>
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
      </property>
-    </widget>
-   </item>
-   <item row="1" column="1">
-    <widget class="QLabel" name="label">
      <property name="text">
-      <string>Replace with:</string>
+      <string>Replace existing item</string>
      </property>
     </widget>
    </item>
-   <item row="2" column="0">
-    <widget class="QLabel" name="labelIcon1">
+   <item row="5" column="1">
+    <widget class="QLabel" name="labelInfo1">
      <property name="text">
       <string>TextLabel</string>
      </property>
      <property name="alignment">
       <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
      </property>
+     <property name="wordWrap">
+      <bool>true</bool>
+     </property>
     </widget>
    </item>
-   <item row="2" column="1">
-    <widget class="QLabel" name="labelInfo1">
+   <item row="8" column="1">
+    <widget class="QPushButton" name="pushSkip">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text">
+      <string>Do not replace item</string>
+     </property>
+    </widget>
+   </item>
+   <item row="12" column="1">
+    <widget class="QLabel" name="labelInfo2">
      <property name="text">
       <string>TextLabel</string>
      </property>
@@ -54,29 +75,57 @@
      </property>
     </widget>
    </item>
-   <item row="3" column="0" colspan="2">
-    <widget class="Line" name="line">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
+   <item row="14" column="1">
+    <widget class="QPushButton" name="pushClone">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text">
+      <string>Add a clone</string>
      </property>
     </widget>
    </item>
-   <item row="4" column="1">
-    <widget class="QPushButton" name="pushSkip">
+   <item row="15" column="1">
+    <widget class="QLabel" name="label_3">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
      <property name="text">
-      <string>Do not replace item</string>
+      <string>The clone's name will be appended with '_Clone'</string>
+     </property>
+     <property name="wordWrap">
+      <bool>true</bool>
      </property>
     </widget>
    </item>
-   <item row="5" column="1">
+   <item row="19" column="1">
+    <widget class="QCheckBox" name="checkAllOtherToo">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text">
+      <string>And for all other items, too.</string>
+     </property>
+    </widget>
+   </item>
+   <item row="11" column="1">
     <widget class="QLabel" name="label_2">
      <property name="text">
       <string>Use item:</string>
      </property>
     </widget>
    </item>
-   <item row="6" column="0">
-    <widget class="QLabel" name="labelIcon2">
+   <item row="5" column="0">
+    <widget class="QLabel" name="labelIcon1">
      <property name="text">
       <string>TextLabel</string>
      </property>
@@ -85,30 +134,41 @@
      </property>
     </widget>
    </item>
-   <item row="6" column="1">
-    <widget class="QLabel" name="labelInfo2">
+   <item row="12" column="0">
+    <widget class="QLabel" name="labelIcon2">
      <property name="text">
       <string>TextLabel</string>
      </property>
      <property name="alignment">
       <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
      </property>
-     <property name="wordWrap">
-      <bool>true</bool>
-     </property>
     </widget>
    </item>
    <item row="7" column="0" colspan="2">
+    <widget class="Line" name="line">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="13" column="0" colspan="2">
     <widget class="Line" name="line_2">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
      </property>
     </widget>
    </item>
-   <item row="8" column="1">
-    <widget class="QCheckBox" name="checkAllOtherToo">
+   <item row="18" column="0" colspan="2">
+    <widget class="Line" name="line_3">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item row="4" column="1">
+    <widget class="QLabel" name="label">
      <property name="text">
-      <string>And for all other items, too.</string>
+      <string>Replace with:</string>
      </property>
     </widget>
    </item>
diff --git a/src/gis/db/ISetupDatabase.ui b/src/gis/db/ISetupDatabase.ui
index c62af11..04ff0c2 100644
--- a/src/gis/db/ISetupDatabase.ui
+++ b/src/gis/db/ISetupDatabase.ui
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>476</width>
-    <height>112</height>
+    <width>500</width>
+    <height>412</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -19,53 +19,267 @@
      <item row="0" column="1">
       <widget class="QLineEdit" name="lineName"/>
      </item>
-     <item row="1" column="0">
-      <widget class="QLabel" name="label_3">
+     <item row="0" column="0">
+      <widget class="QLabel" name="label_2">
        <property name="text">
-        <string>File</string>
+        <string>Name</string>
        </property>
       </widget>
      </item>
      <item row="1" column="1">
-      <widget class="QLabel" name="labelFilename">
-       <property name="text">
-        <string>-</string>
+      <widget class="Line" name="line">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
        </property>
       </widget>
      </item>
-     <item row="0" column="0">
-      <widget class="QLabel" name="label_2">
-       <property name="text">
-        <string>Name</string>
+     <item row="3" column="1">
+      <widget class="Line" name="line_2">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
        </property>
       </widget>
      </item>
-     <item row="1" column="2">
-      <widget class="QToolButton" name="toolNewDB">
-       <property name="toolTip">
-        <string>Add new database.</string>
+     <item row="2" column="1">
+      <widget class="QFrame" name="frameSqlite">
+       <property name="frameShape">
+        <enum>QFrame::NoFrame</enum>
        </property>
-       <property name="text">
-        <string>...</string>
+       <property name="frameShadow">
+        <enum>QFrame::Plain</enum>
+       </property>
+       <layout class="QHBoxLayout" name="horizontalLayout_2">
+        <item>
+         <widget class="QLabel" name="label_5">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="text">
+           <string>File:</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QLabel" name="labelFilename">
+          <property name="text">
+           <string>-</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="toolNewDB">
+          <property name="toolTip">
+           <string>Add new database.</string>
+          </property>
+          <property name="text">
+           <string>...</string>
+          </property>
+          <property name="icon">
+           <iconset resource="../../resources.qrc">
+            <normaloff>:/icons/32x32/Add.png</normaloff>:/icons/32x32/Add.png</iconset>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QToolButton" name="toolAddDB">
+          <property name="toolTip">
+           <string>Open existing database.</string>
+          </property>
+          <property name="text">
+           <string>...</string>
+          </property>
+          <property name="icon">
+           <iconset resource="../../resources.qrc">
+            <normaloff>:/icons/32x32/PathBlue.png</normaloff>:/icons/32x32/PathBlue.png</iconset>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
+     <item row="4" column="0">
+      <widget class="QFrame" name="frame">
+       <property name="frameShape">
+        <enum>QFrame::NoFrame</enum>
        </property>
-       <property name="icon">
-        <iconset resource="../../resources.qrc">
-         <normaloff>:/icons/32x32/Add.png</normaloff>:/icons/32x32/Add.png</iconset>
+       <property name="frameShadow">
+        <enum>QFrame::Plain</enum>
        </property>
+       <layout class="QVBoxLayout" name="verticalLayout_2">
+        <item>
+         <widget class="QRadioButton" name="radioMysql">
+          <property name="text">
+           <string>MySQL</string>
+          </property>
+          <property name="autoExclusive">
+           <bool>true</bool>
+          </property>
+          <attribute name="buttonGroup">
+           <string notr="true">buttonGroup</string>
+          </attribute>
+         </widget>
+        </item>
+        <item>
+         <spacer name="verticalSpacer_2">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
       </widget>
      </item>
-     <item row="1" column="3">
-      <widget class="QToolButton" name="toolAddDB">
-       <property name="toolTip">
-        <string>Open existing database.</string>
+     <item row="2" column="0">
+      <widget class="QFrame" name="frame_2">
+       <property name="frameShape">
+        <enum>QFrame::NoFrame</enum>
        </property>
-       <property name="text">
-        <string>...</string>
+       <property name="frameShadow">
+        <enum>QFrame::Plain</enum>
+       </property>
+       <layout class="QVBoxLayout" name="verticalLayout_3">
+        <item>
+         <widget class="QRadioButton" name="radioSqlite">
+          <property name="text">
+           <string>SQLite</string>
+          </property>
+          <property name="checked">
+           <bool>true</bool>
+          </property>
+          <property name="autoExclusive">
+           <bool>true</bool>
+          </property>
+          <attribute name="buttonGroup">
+           <string notr="true">buttonGroup</string>
+          </attribute>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
+     <item row="4" column="1">
+      <widget class="QFrame" name="frameMysql">
+       <property name="frameShape">
+        <enum>QFrame::NoFrame</enum>
        </property>
-       <property name="icon">
-        <iconset resource="../../resources.qrc">
-         <normaloff>:/icons/32x32/PathBlue.png</normaloff>:/icons/32x32/PathBlue.png</iconset>
+       <property name="frameShadow">
+        <enum>QFrame::Plain</enum>
        </property>
+       <layout class="QFormLayout" name="formLayout">
+        <item row="0" column="0">
+         <widget class="QLabel" name="label">
+          <property name="text">
+           <string>Server</string>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="1">
+         <layout class="QHBoxLayout" name="horizontalLayout">
+          <item>
+           <widget class="QLineEdit" name="lineServer"/>
+          </item>
+          <item>
+           <widget class="QLabel" name="label_7">
+            <property name="text">
+             <string>Port</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLineEdit" name="linePort">
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="inputMask">
+             <string>00000</string>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item row="1" column="0">
+         <widget class="QLabel" name="label_3">
+          <property name="text">
+           <string>User</string>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="1">
+         <widget class="QLineEdit" name="lineUser"/>
+        </item>
+        <item row="2" column="0">
+         <widget class="QLabel" name="label_4">
+          <property name="text">
+           <string>Password</string>
+          </property>
+         </widget>
+        </item>
+        <item row="2" column="1">
+         <widget class="QLineEdit" name="linePasswd">
+          <property name="echoMode">
+           <enum>QLineEdit::Password</enum>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="1">
+         <widget class="QCheckBox" name="checkMySQLNoPasswd">
+          <property name="text">
+           <string>Do not use a password.</string>
+          </property>
+         </widget>
+        </item>
+        <item row="4" column="1">
+         <widget class="QLabel" name="label_6">
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="text">
+           <string><p align="justify"><span style=" font-weight:600;">Caution!</span> It is recommended to leave the password blank, as QMapShack will store it as plain text. If you don't give a password you will be asked for it on each startup.</p></string>
+          </property>
+          <property name="wordWrap">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="6" column="1">
+         <spacer name="verticalSpacer">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>20</width>
+            <height>40</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item row="5" column="1">
+         <widget class="QLabel" name="label_8">
+          <property name="text">
+           <string><b>Port:</b> Leave the port field empty to use the default port.</string>
+          </property>
+          <property name="wordWrap">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+       </layout>
       </widget>
      </item>
     </layout>
@@ -119,4 +333,7 @@
    </hints>
   </connection>
  </connections>
+ <buttongroups>
+  <buttongroup name="buttonGroup"/>
+ </buttongroups>
 </ui>
diff --git a/src/gis/db/ISetupWorkspace.ui b/src/gis/db/ISetupWorkspace.ui
index ad01854..c335d70 100644
--- a/src/gis/db/ISetupWorkspace.ui
+++ b/src/gis/db/ISetupWorkspace.ui
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>421</width>
-    <height>88</height>
+    <width>624</width>
+    <height>107</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -49,6 +49,24 @@
     </layout>
    </item>
    <item>
+    <layout class="QHBoxLayout" name="horizontalLayout_2">
+     <item>
+      <widget class="QCheckBox" name="checkDbUpdate">
+       <property name="text">
+        <string>listen for database changes from other instances of QMapShack. On port</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLineEdit" name="linePort">
+       <property name="inputMask">
+        <string>00000</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
     <widget class="QDialogButtonBox" name="buttonBox">
      <property name="orientation">
       <enum>Qt::Horizontal</enum>
diff --git a/src/gis/db/macros.h b/src/gis/db/macros.h
index 500bdb4..0e068a6 100644
--- a/src/gis/db/macros.h
+++ b/src/gis/db/macros.h
@@ -19,16 +19,25 @@
 #ifndef MACROS_H
 #define MACROS_H
 
-#define DB_VERSION 1
+#define DB_VERSION 4
+
+#define NO_CMD ((void)0)
 
 #define QUERY_EXEC(cmd) \
     if(!query.exec()) \
     { \
-        qDebug() << query.lastQuery(); \
-        qDebug() << query.lastError(); \
+        qWarning() << "Execution of SQL-Statement `" << query.lastQuery() << "` failed:"; \
+        qWarning() << query.lastError(); \
         cmd; \
-    } \
+    }
 
+#define QUERY_RUN(stmt, cmd) \
+    if(!query.exec(stmt)) \
+    { \
+        qWarning() << "Execution of SQL-Statement `" << query.lastQuery() << "` failed:"; \
+        qWarning() << query.lastError(); \
+        cmd; \
+    }
 
 #endif //MACROS_H
 
diff --git a/src/gis/fit/CFitProject.cpp b/src/gis/fit/CFitProject.cpp
new file mode 100644
index 0000000..d488859
--- /dev/null
+++ b/src/gis/fit/CFitProject.cpp
@@ -0,0 +1,126 @@
+/**********************************************************************************************
+    Copyright (C) 2015 Ivo Kronenberg
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "CMainWindow.h"
+#include "gis/CGisListWks.h"
+#include "gis/fit/CFitProject.h"
+#include "gis/fit/CFitStream.h"
+#include "gis/fit/defs/fit_enums.h"
+#include "gis/fit/defs/fit_fields.h"
+#include "gis/gpx/CGpxProject.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/wpt/CGisItemWpt.h"
+
+#include <QtWidgets>
+
+CFitProject::CFitProject(const QString &filename, CGisListWks *parent)
+    : IGisProject(eTypeFit, filename, parent)
+{
+    setIcon(CGisListWks::eColumnIcon,QIcon("://icons/32x32/FitProject.png"));
+    blockUpdateItems(true);
+    try
+    {
+        loadFit(filename);
+    }
+    catch(QString &errormsg)
+    {
+        QMessageBox::critical(CMainWindow::getBestWidgetForParent(),
+                              tr("Failed to load file %1...").arg(filename), errormsg, QMessageBox::Abort);
+        valid = false;
+    }
+    blockUpdateItems(false);
+}
+
+CFitProject::CFitProject(const QString &filename, IDevice *parent)
+    : IGisProject(eTypeFit, filename, parent)
+{
+    setIcon(CGisListWks::eColumnIcon,QIcon("://icons/32x32/FitProject.png"));
+    blockUpdateItems(true);
+    try
+    {
+        loadFit(filename);
+    }
+    catch(QString &errormsg)
+    {
+        QMessageBox::critical(CMainWindow::getBestWidgetForParent(),
+                              tr("Failed to load file %1...").arg(filename), errormsg, QMessageBox::Abort);
+        valid = false;
+    }
+    blockUpdateItems(false);
+}
+
+void CFitProject::loadFit(const QString & filename)
+{
+    // create file instance
+    QFile file(filename);
+    qDebug() << "reading FIT file" << filename;
+
+    // if the file does not exist, the filename is assumed to be a name for a new project
+    if(!file.exists())
+    {
+        IGisProject::filename.clear();
+        setupName(filename);
+        setToolTip(CGisListWks::eColumnName, getInfo());
+        valid = true;
+        return;
+    }
+
+    if(!file.open(QIODevice::ReadOnly))
+    {
+        throw tr("Failed to open FIT file %1.").arg(filename);
+    }
+
+    CFitStream in(file);
+    try
+    {
+        in.decodeFile();
+    }
+    catch(QString& errormsg)
+    {
+        file.close();
+        throw errormsg;
+    }
+    file.close();
+
+    const CFitMessage& mesg = in.firstMesgOf(eMesgNumFileId);
+    if(mesg.getFieldValue(eFileIdType).toUInt() == eFileActivity || mesg.getFieldValue(eFileIdType).toUInt() == eFileCourse)
+    {
+        new CGisItemTrk(in, this);
+    }
+    // fit does not have routes
+    // new CGisItemRte(in, this);
+
+    in.reset();
+    while(in.nextMesgOf(eMesgNumCoursePoint).isValid())
+    {
+        new CGisItemWpt(in, this);
+    }
+    // ql:area is not directly available in FIT (could be calculated)
+
+    markAsSaved();
+
+    setupName(QFileInfo(filename).baseName().replace("_", " "));
+    setToolTip(CGisListWks::eColumnName, getInfo());
+    valid = true;
+}
+
+CFitProject::~CFitProject()
+{
+}
+
diff --git a/src/gis/gpx/CGpxProject.h b/src/gis/fit/CFitProject.h
similarity index 58%
copy from src/gis/gpx/CGpxProject.h
copy to src/gis/fit/CFitProject.h
index 9646e0e..f492164 100644
--- a/src/gis/gpx/CGpxProject.h
+++ b/src/gis/fit/CFitProject.h
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+    Copyright (C) 2015 Ivo Kronenberg
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -16,34 +16,41 @@
 
 **********************************************************************************************/
 
-#ifndef CGPXPROJECT_H
-#define CGPXPROJECT_H
+#ifndef CFITPROJECT_H
+#define CFITPROJECT_H
 
 #include "gis/prj/IGisProject.h"
 
-#include <QDateTime>
-#include <QDomElement>
-#include <QUrl>
+#include <QtCore>
 
-class CGisListWks;
-class CGisDraw;
 
-class CGpxProject : public IGisProject
+class CFitProject final : public IGisProject
 {
 public:
-    CGpxProject(const QString &filename, CGisListWks * parent);
-    CGpxProject(const QString &filename, IDevice * parent);
-    CGpxProject(const QString &filename, const IGisProject * project, IDevice * parent);
-    virtual ~CGpxProject();
+    CFitProject(const QString& filename, CGisListWks * parent);
+    CFitProject(const QString& filename, IDevice * parent);
+    virtual ~CFitProject();
 
-    bool save();
-    bool saveAs();
 
-    static bool saveAs(const QString& fn, IGisProject& project);
+    const QString getFileDialogFilter() const override
+    {
+        return IGisProject::filedialogFilterFIT;
+    }
+
+    const QString getFileExtension() const override
+    {
+        return "fit";
+    }
+
+    bool canSave() const override
+    {
+        return false;
+    }
+
 
 private:
-    void loadGpx(const QString& filename);
+    void loadFit(const QString & filename);
 };
 
-#endif //CGPXPROJECT_H
+#endif //CFITPROJECT_H
 
diff --git a/src/gis/fit/CFitStream.cpp b/src/gis/fit/CFitStream.cpp
new file mode 100644
index 0000000..c0823b6
--- /dev/null
+++ b/src/gis/fit/CFitStream.cpp
@@ -0,0 +1,91 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/fit/CFitStream.h"
+#include "gis/fit/defs/fit_const.h"
+
+void CFitStream::decodeFile()
+{
+    decode.decode(file);
+}
+
+void CFitStream::reset()
+{
+    readPos = 0;
+}
+
+
+const CFitMessage& CFitStream::nextMesg()
+{
+    return decode.getMessages().at(readPos++);
+}
+
+
+const CFitMessage& CFitStream::lastMesg()
+{
+    int pos = readPos-1;
+    if(pos < 0)
+    {
+        pos = 0;
+    }
+    return decode.getMessages().at(pos);
+}
+
+
+bool CFitStream::hasMoreMesg()
+{
+    return readPos < decode.getMessages().size();
+}
+
+const CFitMessage& CFitStream::nextMesgOf(quint16 mesgNum)
+{
+    while(hasMoreMesg())
+    {
+        const CFitMessage& mesg = nextMesg();
+        if (mesg.getGlobalMesgNr() == mesgNum)
+        {
+            return mesg;
+        }
+    }
+
+    static CFitMessage dummyMessage {};
+    return dummyMessage;
+}
+
+
+const CFitMessage& CFitStream::firstMesgOf(quint16 mesgNum)
+{
+    reset();
+    const CFitMessage& mesg = nextMesgOf(mesgNum);
+    reset();
+    return mesg;
+}
+
+int CFitStream::countMesgOf(quint16 mesgNr)
+{
+    reset();
+    int c = 0;
+    while(nextMesgOf(mesgNr).getGlobalMesgNr() != fitGlobalMesgNrInvalid)
+    {
+        c++;
+    }
+    reset();
+    return c;
+}
+
+
diff --git a/src/gis/fit/CFitStream.h b/src/gis/fit/CFitStream.h
new file mode 100644
index 0000000..c98344a
--- /dev/null
+++ b/src/gis/fit/CFitStream.h
@@ -0,0 +1,86 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CFITSTREAM_H
+#define CFITSTREAM_H
+
+#include "gis/fit/decoder/CFitDecoder.h"
+
+#include <QtCore>
+
+class CFitMessage;
+
+/*
+   Encapsulates the access to the FIT messages. Looping over the read FIT messages can be done using the
+   methods nextMesg() and hasMoreMesg() (Iterator pattern).
+ */
+class CFitStream final
+{
+public:
+    CFitStream(QFile& dev) : file(dev) { }
+
+    /**
+       decodes fit file provided in constructor
+       throws: QString in case of a decoding failure
+     */
+    void decodeFile();
+
+    /**
+       sets the stream at the beginning (first position).
+     */
+    void reset();
+    /**
+       Get the next FIT message
+       throws: fit::RuntimeException
+     */
+    const CFitMessage& nextMesg();
+
+    /**
+       return: the last read message again
+     */
+    const CFitMessage& lastMesg();
+
+    /**
+       return: true if there a further FIT message is available
+     */
+    bool hasMoreMesg();
+
+    /**
+       return: the next message of the given message type (xx_MESG_NUM) beginning reading at the current position
+     */
+    const CFitMessage& nextMesgOf(quint16 mesgNum);
+
+    /**
+       return: gets the first message of the given type (xx_MESG_NUM) beginning reading at start of stream.
+       Sets the strema to the beginning again.
+     */
+    const CFitMessage& firstMesgOf(quint16 mesgNum);
+
+    int countMesgOf(quint16 mesgNr);
+
+
+    QString getFileName() { return file.fileName(); }
+
+private:
+    QFile& file;
+    CFitDecoder decode;
+    int readPos = 0;
+};
+
+#endif //CFITSTREAM_H
+
diff --git a/src/gis/fit/decoder/CFitByteDataTransformer.cpp b/src/gis/fit/decoder/CFitByteDataTransformer.cpp
new file mode 100644
index 0000000..df3613a
--- /dev/null
+++ b/src/gis/fit/decoder/CFitByteDataTransformer.cpp
@@ -0,0 +1,172 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/fit/decoder/CFitByteDataTransformer.h"
+#include "gis/fit/decoder/CFitDefinitionMessage.h"
+#include "gis/fit/defs/CFitBaseType.h"
+#include "gis/fit/defs/fit_const.h"
+
+unsigned int CFitByteDataTransformer::getUIntValue(const CFitBaseType& baseType, quint8* rawData)
+{
+    switch(baseType.nr())
+    {
+    case eBaseTypeNrUint8:
+    case eBaseTypeNrUint8z:
+    case eBaseTypeNrEnum:
+        return getUint8(rawData);
+
+    case eBaseTypeNrUint16:
+    case eBaseTypeNrUint16z:
+        return getUint16(rawData);
+
+    case eBaseTypeNrUint32:
+    case eBaseTypeNrUint32z:
+        return getUint32(rawData);
+
+    default:
+        return 0;
+    }
+}
+
+int CFitByteDataTransformer::getSIntValue(const CFitBaseType& baseType, quint8 *rawData)
+{
+    switch(baseType.nr())
+    {
+    case eBaseTypeNrSint8:
+        return getSint8(rawData);
+
+    case eBaseTypeNrSint16:
+        return getSint16(rawData);
+
+    case eBaseTypeNrSint32:
+        return getSint32(rawData);
+
+    default:
+        return 0;
+    }
+}
+
+qreal CFitByteDataTransformer::getFloatValue(const CFitBaseType& baseType, quint8* rawData)
+{
+    switch(baseType.nr())
+    {
+    case eBaseTypeNrFloat32:
+        return getFloat32(rawData);
+
+    case eBaseTypeNrFloat64:
+        return getFloat64(rawData);
+
+    default:
+        return 0;
+    }
+}
+
+quint8 CFitByteDataTransformer::getUint8(quint8* rawData)
+{
+    return (quint8) rawData[0];
+}
+
+quint16 CFitByteDataTransformer::getUint16(quint8* rawData)
+{
+    return ((quint16)rawData[1] << 8) | (quint16)rawData[0];
+}
+
+quint32 CFitByteDataTransformer::getUint32(quint8* rawData)
+{
+    return ((quint32)rawData[3] << 24) | ((quint32)rawData[2] << 16) | ((quint32)rawData[1] << 8) | (quint32)rawData[0];
+}
+
+qint8 CFitByteDataTransformer::getSint8(quint8* rawData)
+{
+    return (qint8) rawData[0];
+}
+
+qint16 CFitByteDataTransformer::getSint16(quint8* rawData)
+{
+    return ((qint16)rawData[1] << 8) | (qint16)rawData[0];
+}
+
+qint32 CFitByteDataTransformer::getSint32(quint8* rawData)
+{
+    return ((qint32)rawData[3] << 24) | ((qint32)rawData[2] << 16) | ((qint32)rawData[1] << 8) | (qint32)rawData[0];
+}
+
+qreal CFitByteDataTransformer::getFloat32(quint8* rawData)
+{
+    qint32 fValue = (qint32) (((qint32)rawData[3] << 24) | ((qint32)rawData[2] << 16) | ((qint32)rawData[1] << 8) | rawData[0]);
+    // comment: qreal is a double type (on allmost all systems). Here we need to go through a 32 bit flaoting type.
+    float tmp;
+    memcpy(&tmp, &fValue, sizeof(tmp));
+    qreal value = tmp;
+    return value;
+}
+
+qreal CFitByteDataTransformer::getFloat64(quint8* rawData)
+{
+    unsigned long long dValue = ((unsigned long long) rawData[7] << 56) | ((unsigned long long) rawData[6] << 48)
+                                | ((unsigned long long) rawData[5] << 40) | ((unsigned long long) rawData[4] << 32)
+                                | ((unsigned long long) rawData[3] << 24) | ((unsigned long long) rawData[2] << 16)
+                                | ((unsigned long long) rawData[1] << 8) | rawData[0];
+    // comment: qreal is a double type (on allmost all systems). Here we need to go through a 64 bit flaoting type.
+    double tmp;
+    memcpy(&tmp, &dValue, sizeof(tmp));
+    qreal value = tmp;
+    return value;
+}
+
+QString CFitByteDataTransformer::getString(quint8* rawData, quint8 length)
+{
+    // find the 0 termination
+    quint8 i = 0;
+    while(rawData[i] != 0 )
+    {
+        i++;
+        // no 0 termination found, but length exceded
+        if(i > length)
+        {
+            break;
+        }
+    }
+
+    return QString::fromUtf8((const char*)rawData, i);
+}
+
+QByteArray CFitByteDataTransformer::getBytes(quint8* rawData, quint8 length)
+{
+    return QByteArray((const char*)rawData, length);
+}
+
+void CFitByteDataTransformer::swapFieldData(const CFitFieldDefinition& fieldDef, quint8* fieldData)
+{
+    if (fieldDef.getEndianAbilityFlag() && (fieldDef.parent().getArchitectureBit() != eFitArchEndianLittle))
+    {
+        // Swap the bytes for each element.
+        int typeSize = fieldDef.getBaseType().size();
+        int elements = fieldDef.getSize() / typeSize;
+
+        for (int element = 0; element < elements; element++)
+        {
+            for (int i = 0; i < (typeSize / 2); i++)
+            {
+                quint8 tmp = (quint8)fieldData[element * typeSize + i];
+                fieldData[element * typeSize + i] = fieldData[element * typeSize + typeSize - i - 1];
+                fieldData[element * typeSize + typeSize - i - 1] = tmp;
+            }
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/gis/fit/decoder/CFitByteDataTransformer.h b/src/gis/fit/decoder/CFitByteDataTransformer.h
new file mode 100644
index 0000000..dddf84d
--- /dev/null
+++ b/src/gis/fit/decoder/CFitByteDataTransformer.h
@@ -0,0 +1,52 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CFITBYTEDATATRANSFORMER_H
+#define CFITBYTEDATATRANSFORMER_H
+
+#include <QtCore>
+
+class CFitBaseType;
+class CFitFieldDefinition;
+
+class CFitByteDataTransformer
+{
+public:
+    CFitByteDataTransformer() = delete;
+    static unsigned int getUIntValue(const CFitBaseType& baseType, quint8* rawData);
+    static int getSIntValue(const CFitBaseType &baseType, quint8 *rawData);
+    static qreal getFloatValue(const CFitBaseType& baseType, quint8* rawData);
+    /*
+     * param rawData: the fit utf-8 string, 0 terminated.
+     */
+    static QString getString(quint8* rawData, quint8 length);
+    static QByteArray getBytes(quint8* rawData, quint8 length);
+    static void swapFieldData(const CFitFieldDefinition& fieldDef, quint8* fieldData);
+
+private:
+    static quint8 getUint8(quint8* rawData);
+    static quint16 getUint16(quint8* rawData);
+    static quint32 getUint32(quint8* rawData);
+    static qint8 getSint8(quint8* rawData);
+    static qint16 getSint16(quint8* rawData);
+    static qint32 getSint32(quint8* rawData);
+    static qreal getFloat32(quint8* rawData);
+    static qreal getFloat64(quint8* rawData);
+};
+
+#endif //CFITBYTEDATATRANSFORMER_H
diff --git a/src/gis/fit/decoder/CFitCrcState.cpp b/src/gis/fit/decoder/CFitCrcState.cpp
new file mode 100644
index 0000000..131353f
--- /dev/null
+++ b/src/gis/fit/decoder/CFitCrcState.cpp
@@ -0,0 +1,39 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/fit/decoder/CFitCrcState.h"
+
+void CFitCrcState::reset()
+{
+}
+
+decode_state_e CFitCrcState::process(quint8 &dataByte)
+{
+    if (bytesLeftToRead() == 0)
+    {
+        // last CRC byte.
+        if (getCrc() != 0)
+        {
+            throw tr("FIT decoding error : invalid CRC.");
+        }
+        return eDecoderStateEnd;
+    }
+    // 2nd crc byte left
+    return eDecoderStateFileCrc;
+}
+
diff --git a/src/gis/fit/decoder/CFitCrcState.h b/src/gis/fit/decoder/CFitCrcState.h
new file mode 100644
index 0000000..98bead3
--- /dev/null
+++ b/src/gis/fit/decoder/CFitCrcState.h
@@ -0,0 +1,34 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CFITCRCSTATE_H
+#define CFITCRCSTATE_H
+
+#include "gis/fit/decoder/IFitDecoderState.h"
+
+class CFitCrcState final : public IFitDecoderState
+{
+public:
+    CFitCrcState(shared_state_data_t &data) : IFitDecoderState(data, eDecoderStateFileCrc) { reset(); }
+    virtual ~CFitCrcState() {}
+
+    void reset() override;
+    decode_state_e process(quint8 &dataByte) override;
+};
+
+#endif //CFITCRCSTATE_H
diff --git a/src/gis/fit/decoder/CFitDecoder.cpp b/src/gis/fit/decoder/CFitDecoder.cpp
new file mode 100644
index 0000000..2d41d5a
--- /dev/null
+++ b/src/gis/fit/decoder/CFitDecoder.cpp
@@ -0,0 +1,122 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/fit/decoder/CFitCrcState.h"
+#include "gis/fit/decoder/CFitDecoder.h"
+#include "gis/fit/decoder/CFitFieldDataState.h"
+#include "gis/fit/decoder/CFitFieldDefinitionState.h"
+#include "gis/fit/decoder/CFitHeaderState.h"
+#include "gis/fit/decoder/CFitRecordContentState.h"
+#include "gis/fit/decoder/CFitRecordHeaderState.h"
+#include "gis/fit/defs/fit_const.h"
+
+CFitDecoder::CFitDecoder()
+{
+    stateMap[eDecoderStateFileHeader] = new CFitHeaderState(data);
+    stateMap[eDecoderStateRecord] = new CFitRecordHeaderState(data);
+    stateMap[eDecoderStateRecordContent] = new CFitRecordContentState(data);
+    stateMap[eDecoderStateFieldDef] = new CFitFieldDefinitionState(data);
+    stateMap[eDecoderStateFieldData] = new CFitFieldDataState(data);
+    stateMap[eDecoderStateFileCrc] = new CFitCrcState(data);
+}
+
+CFitDecoder::~CFitDecoder()
+{
+    qDeleteAll(stateMap);
+    stateMap.clear();
+
+    data.messages.clear();
+}
+
+void CFitDecoder::resetSharedData()
+{
+    data.defintions = QMap<quint8, CFitDefinitionMessage>();
+    data.defintionHistory = QList<CFitDefinitionMessage>();
+    data.messages = QList<CFitMessage>();
+    data.lastDefintion = nullptr;
+    data.lastMessage = nullptr;
+    data.timestamp = 0;
+    data.lastTimeOffset = 0;
+    data.fileBytesRead = 0;
+    data.fileLength = 0;
+    data.crc = 0;
+}
+
+void printDefintions(const QList<CFitDefinitionMessage>& defs)
+{
+    for(int i = 0; i < defs.size(); i++)
+    {
+        for(QString& s: defs[i].messageInfo())
+        {
+            qDebug() << s;
+        }
+    }
+}
+
+void printMessages(const QList<CFitMessage>& messages)
+{
+    for(int i = 0; i < messages.size(); i++)
+    {
+        for(QString& s: messages[i].messageInfo())
+        {
+            qDebug() << s;
+        }
+    }
+}
+
+void CFitDecoder::printDebugInfo()
+{
+    FITDEBUG(1, printDefintions(data.defintionHistory))
+    FITDEBUG(1, printMessages(data.messages))
+}
+void CFitDecoder::decode(QFile &file)
+{
+    resetSharedData();
+
+    file.seek(0);
+
+    quint8 dataByte;
+    decode_state_e state = eDecoderStateFileHeader;
+    while (!file.atEnd())
+    {
+        file.getChar((char *) &dataByte);
+        try
+        {
+            state = stateMap[state]->processByte(dataByte);
+            if (state == eDecoderStateEnd)
+            {
+                // end of file, everything ok
+                printDebugInfo();
+                return;
+            }
+        }
+        catch(QString& errormsg)
+        {
+            printDebugInfo();
+            throw errormsg;
+        }
+    }
+    // unexpected end of file
+    printDebugInfo();
+    throw tr("FIT decoding error: unexpected end of file %1.").arg(file.fileName());
+}
+
+const QList<CFitMessage>& CFitDecoder::getMessages() const
+{
+    return data.messages;
+}
diff --git a/src/gis/fit/decoder/CFitDecoder.h b/src/gis/fit/decoder/CFitDecoder.h
new file mode 100644
index 0000000..2dc22f4
--- /dev/null
+++ b/src/gis/fit/decoder/CFitDecoder.h
@@ -0,0 +1,51 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CFITDECODER_H
+#define CFITDECODER_H
+
+#include "gis/fit/decoder/IFitDecoderState.h"
+
+#include <QtCore>
+
+class CFitMessage;
+
+class CFitDecoder final
+{
+    Q_DECLARE_TR_FUNCTIONS(CFitDecoder)
+public:
+    CFitDecoder();
+    ~CFitDecoder();
+
+    void decode(QFile& file);
+    const QList<CFitMessage>& getMessages() const;
+
+private:
+    void resetSharedData();
+    void printDebugInfo();
+
+    // map containing all states for the decoder. Needs to be pointer because decoder state is abstract class
+    QMap<decode_state_e, IFitDecoderState *> stateMap;
+
+    // shared data passed along the decoder state instances.
+    IFitDecoderState::shared_state_data_t data;
+};
+
+
+
+#endif // CFITDECODER_H
diff --git a/src/gis/fit/decoder/CFitDefinitionMessage.cpp b/src/gis/fit/decoder/CFitDefinitionMessage.cpp
new file mode 100644
index 0000000..5c36960
--- /dev/null
+++ b/src/gis/fit/decoder/CFitDefinitionMessage.cpp
@@ -0,0 +1,153 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/fit/decoder/CFitDefinitionMessage.h"
+#include "gis/fit/defs/CFitProfile.h"
+#include "gis/fit/defs/CFitProfileLookup.h"
+#include "gis/fit/defs/fit_const.h"
+
+static const quint8 fitArchitecureEndianMask = 0x01;
+
+
+CFitDefinitionMessage::CFitDefinitionMessage()
+    : CFitDefinitionMessage(fitLocalMesgNrInvalid)
+{
+}
+
+CFitDefinitionMessage::CFitDefinitionMessage(const CFitDefinitionMessage& copy)
+    : globalMesgNr(copy.globalMesgNr), architecture(copy.architecture), nrOfFields(copy.nrOfFields),
+    localMesgNr(copy.localMesgNr), fields(copy.fields), messageProfile(CFitProfileLookup::getProfile(globalMesgNr))
+{
+    for(CFitFieldDefinition& field : fields)
+    {
+        field.setParent(this);
+    }
+}
+
+CFitDefinitionMessage::CFitDefinitionMessage(quint8 localMesgNr)
+    : globalMesgNr(fitGlobalMesgNrInvalid), architecture(0), nrOfFields(0), localMesgNr(localMesgNr), fields(),
+    messageProfile(CFitProfileLookup::getProfile(fitGlobalMesgNrInvalid))
+{
+}
+
+
+void CFitDefinitionMessage::setArchiteture(quint8 arch)
+{
+    architecture = arch;
+}
+
+void CFitDefinitionMessage::setGlobalMesgNr(quint16 globalMesgNr)
+{
+    this->globalMesgNr = globalMesgNr;
+    messageProfile = CFitProfileLookup::getProfile(globalMesgNr);
+}
+
+void CFitDefinitionMessage::setNrOfFields(quint8 nrOfFields)
+{
+    this->nrOfFields = nrOfFields;
+}
+
+quint16 CFitDefinitionMessage::getGlobalMesgNr() const
+{
+    return globalMesgNr;
+}
+
+quint8 CFitDefinitionMessage::getLocalMesgNr() const
+{
+    return localMesgNr;
+}
+
+quint8 CFitDefinitionMessage::getArchitectureBit() const
+{
+    return architecture & fitArchitecureEndianMask;
+}
+quint8 CFitDefinitionMessage::getNrOfFields() const
+{
+    return nrOfFields;
+}
+
+void CFitDefinitionMessage::addField(CFitFieldDefinition fieldDef)
+{
+    fields.append(fieldDef);
+}
+
+const QList<CFitFieldDefinition>&CFitDefinitionMessage::getFields() const
+{
+    return fields;
+}
+
+bool CFitDefinitionMessage::hasField(const quint8 fieldNum) const
+{
+    for (int i=0; i< fields.size(); i++)
+    {
+        if (fieldNum == fields[i].getDefNr())
+        {
+            return true;
+        }
+    }
+    return false;
+}
+
+const CFitFieldDefinition& CFitDefinitionMessage::getField(const quint8 fieldNum) const
+{
+    for (int i=0; i< fields.size(); i++)
+    {
+        if (fieldNum == fields[i].getDefNr())
+        {
+            return fields[i];
+        }
+    }
+    // dummy field for unknown field nr.
+    static CFitFieldDefinition dummyDefinitionField {};
+
+    return dummyDefinitionField;
+}
+
+
+const CFitFieldDefinition& CFitDefinitionMessage::getFieldByIndex(const quint16 index) const
+{
+    if (index < fields.size())
+    {
+        return fields[index];
+    }
+    // dummy field for unknown field nr.
+    static CFitFieldDefinition dummyDefinitionField {};
+
+    return dummyDefinitionField;
+}
+
+
+QStringList CFitDefinitionMessage::messageInfo() const
+{
+    QStringList list;
+    list << QString("Definition %1 (%2) local nr %3, arch %4, # fields %5")
+        .arg(profile().getName())
+        .arg(getGlobalMesgNr())
+        .arg(getLocalMesgNr())
+        .arg(getArchitectureBit())
+        .arg(getNrOfFields());
+
+    for(const CFitFieldDefinition& field: fields)
+    {
+        list << field.fieldInfo();
+    }
+    return list;
+}
+
+
+
diff --git a/src/gis/fit/decoder/CFitDefinitionMessage.h b/src/gis/fit/decoder/CFitDefinitionMessage.h
new file mode 100644
index 0000000..8711a47
--- /dev/null
+++ b/src/gis/fit/decoder/CFitDefinitionMessage.h
@@ -0,0 +1,67 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CFITMESSAGEDEFINTION_H
+#define CFITMESSAGEDEFINTION_H
+
+#include "gis/fit/decoder/CFitFieldDefinition.h"
+
+#include <QtCore>
+
+class CFitBaseType;
+class CFitProfile;
+
+class CFitDefinitionMessage final
+{
+public:
+    CFitDefinitionMessage(quint8 localMesgNr);
+
+    CFitDefinitionMessage();
+    CFitDefinitionMessage(const CFitDefinitionMessage& copy);
+
+    void setArchiteture(quint8 arch);
+    void setGlobalMesgNr(quint16 globalMesgNr);
+    void setNrOfFields(quint8 nrOfFields);
+
+    quint16 getGlobalMesgNr() const;
+    quint8 getArchitectureBit() const;
+    quint8 getNrOfFields() const;
+    quint8 getLocalMesgNr() const;
+
+    const CFitProfile& profile() const { return *messageProfile; }
+
+    const QList<CFitFieldDefinition>& getFields() const;
+    void addField(CFitFieldDefinition field);
+    bool hasField(const quint8 fieldNum) const;
+    const CFitFieldDefinition& getField(const quint8 fieldNum) const;
+    const CFitFieldDefinition& getFieldByIndex(const quint16 index) const;
+
+    QStringList messageInfo() const;
+
+
+private:
+    quint16 globalMesgNr;
+    quint8 architecture;
+    quint8 nrOfFields;
+    quint8 localMesgNr;
+    QList<CFitFieldDefinition> fields;
+    const CFitProfile* messageProfile;
+};
+
+
+#endif // CFITMESSAGEDEFINTION_H
diff --git a/src/gis/fit/decoder/CFitField.cpp b/src/gis/fit/decoder/CFitField.cpp
new file mode 100644
index 0000000..bf46e2a
--- /dev/null
+++ b/src/gis/fit/decoder/CFitField.cpp
@@ -0,0 +1,97 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/fit/decoder/CFitDefinitionMessage.h"
+#include "gis/fit/decoder/CFitField.h"
+#include "gis/fit/defs/CFitBaseType.h"
+#include "gis/fit/defs/CFitFieldProfile.h"
+#include "gis/fit/defs/CFitProfileLookup.h"
+#include "gis/fit/defs/fit_const.h"
+
+CFitField::CFitField(const CFitFieldDefinition& fieldDefinition, const CFitFieldProfile* profile, QVariant value, bool valid)
+    :  fieldProfile(profile), globalMesgNr(fieldDefinition.parent().getGlobalMesgNr()),
+    fieldDefNr(fieldDefinition.getDefNr()), baseType(&fieldDefinition.getBaseType()), valid(valid), value(value), rawValue(value)
+{
+    applyScaleAndOffset();
+}
+
+CFitField::CFitField(quint16 globalMesgNr, quint8 fieldDefNr, const CFitFieldProfile* profile, QVariant value, bool valid)
+    : fieldProfile(profile), globalMesgNr(globalMesgNr), fieldDefNr(fieldDefNr),
+    baseType(&profile->getBaseType()), valid(valid), value(value), rawValue(value)
+{
+    applyScaleAndOffset();
+}
+
+CFitField::CFitField(const CFitField & copy)
+    : fieldProfile(copy.fieldProfile), globalMesgNr(copy.globalMesgNr), fieldDefNr(copy.fieldDefNr),
+    baseType(copy.baseType), valid(copy.valid), value(copy.value), rawValue(copy.rawValue)
+{
+}
+
+CFitField::CFitField()
+    : fieldProfile(CFitProfileLookup::getFieldForProfile(fitGlobalMesgNrInvalid, fitFieldDefNrInvalid)),
+    globalMesgNr(fitGlobalMesgNrInvalid), fieldDefNr(fitFieldDefNrInvalid), baseType(&fitInvalidType), valid(false), value(), rawValue()
+{
+}
+
+void CFitField::applyScaleAndOffset()
+{
+    if(fieldProfile->hasScaleAndOffset())
+    {
+        // scale and offset is only for int / sint types
+        if(baseType->isUnsignedInt())
+        {
+            value = QVariant(rawValue.toUInt()/ profile().getScale() - profile().getOffset());
+        }
+        if(baseType->isSignedInt())
+        {
+            value = QVariant(rawValue.toInt()/ profile().getScale() - profile().getOffset());
+        }
+    }
+    else
+    {
+        value = rawValue;
+    }
+}
+
+void CFitField::setProfile(const CFitFieldProfile* profile)
+{
+    fieldProfile = profile;
+    applyScaleAndOffset();
+}
+
+QString CFitField::fieldInfo() const
+{
+    QString str = QString("%1 %2 (%3): %4 %5 %6 %7")
+                  .arg(profile().getTyp())
+                  .arg(profile().getName())
+                  .arg(getFieldDefNr())
+                  .arg(value.toString())
+                  .arg(profile().getUnits())
+                  .arg(getBaseType().name())
+                  .arg(valid ? "" : "<invalid>");
+
+    if(getBaseType().isNumber())
+    {
+        str += QString(" (%1/%2-%3)")
+               .arg(rawValue.toString())
+               .arg(profile().getScale())
+               .arg( profile().getOffset());
+    }
+    return str;
+}
diff --git a/src/gis/fit/decoder/CFitField.h b/src/gis/fit/decoder/CFitField.h
new file mode 100644
index 0000000..231fbcc
--- /dev/null
+++ b/src/gis/fit/decoder/CFitField.h
@@ -0,0 +1,62 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CFITFIELD_H
+#define CFITFIELD_H
+
+#include <QtCore>
+
+class CFitFieldDefinition;
+class CFitFieldProfile;
+class CFitBaseType;
+
+class CFitField final
+{
+public:
+    CFitField(const CFitFieldDefinition& fieldDefinition, const CFitFieldProfile* profile, QVariant value, bool valid);
+    CFitField(quint16 globalMesgNr, quint8 fieldDefNr, const CFitFieldProfile* profile, QVariant value, bool valid);
+    CFitField(const CFitField & copy);
+    CFitField();
+    virtual ~CFitField() { /* nothing to do here, profile and base type are global and not to delete */ }
+
+    void setProfile(const CFitFieldProfile* profile);
+    QString fieldInfo() const;
+
+    const CFitBaseType& getBaseType() const { return *baseType; }
+    quint16 getGlobalMesgNr() const { return globalMesgNr; }
+    quint8 getFieldDefNr() const { return fieldDefNr; }
+    const CFitFieldProfile& profile() const { return *fieldProfile; }
+
+    bool isValidValue() const { return valid; }
+    const QVariant& getValue() const {  return value; }
+
+
+private:
+    void applyScaleAndOffset();
+
+    const CFitFieldProfile* fieldProfile;
+    quint16 globalMesgNr;
+    quint8 fieldDefNr;
+    const CFitBaseType* baseType;
+    bool valid;
+    QVariant value;
+    QVariant rawValue;
+};
+
+
+#endif // CFITFIELD_H
diff --git a/src/gis/fit/decoder/CFitFieldBuilder.cpp b/src/gis/fit/decoder/CFitFieldBuilder.cpp
new file mode 100644
index 0000000..48da911
--- /dev/null
+++ b/src/gis/fit/decoder/CFitFieldBuilder.cpp
@@ -0,0 +1,145 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/fit/decoder/CFitByteDataTransformer.h"
+#include "gis/fit/decoder/CFitField.h"
+#include "gis/fit/decoder/CFitFieldBuilder.h"
+#include "gis/fit/decoder/CFitFieldDefinition.h"
+#include "gis/fit/decoder/CFitMessage.h"
+#include "gis/fit/defs/CFitBaseType.h"
+#include "gis/fit/defs/CFitFieldProfile.h"
+#include "gis/fit/defs/CFitProfileLookup.h"
+
+void CFitFieldBuilder::evaluateSubfieldsAndExpandComponents(CFitMessage& mesg)
+{
+    for (const CFitField & field : mesg.getFields())
+    {
+        CFitFieldBuilder::evaluateFieldProfile(mesg, field);
+    }
+    for (const CFitField & field : mesg.getFields())
+    {
+        CFitFieldBuilder::expandComponents(mesg, field);
+    }
+}
+
+CFitField CFitFieldBuilder::buildField(const CFitFieldDefinition &def, quint8 *fieldData, const CFitMessage& message)
+{
+    CFitByteDataTransformer::swapFieldData(def, fieldData);
+    const CFitBaseType& baseType = def.getBaseType();
+    const CFitFieldProfile* fieldProfile = CFitProfileLookup::getFieldForProfile(message.getGlobalMesgNr(), def.getDefNr());
+
+    QVariant value;
+    if (baseType.isSignedInt())
+    {
+        value = QVariant(CFitByteDataTransformer::getSIntValue(baseType, fieldData));
+    }
+    else if (baseType.isUnsignedInt())
+    {
+        value = QVariant(CFitByteDataTransformer::getUIntValue(baseType, fieldData));
+    }
+    else if (baseType.isFloat())
+    {
+        value = QVariant(CFitByteDataTransformer::getFloatValue(baseType, fieldData));
+    }
+    else if (baseType.isString())
+    {
+        value = QVariant(CFitByteDataTransformer::getString(fieldData, def.getSize()));
+    }
+    else if (baseType.isByte())
+    {
+        value = QVariant(CFitByteDataTransformer::getBytes(fieldData, def.getSize()));
+    }
+    else
+    {
+        // should not be possible
+        throw tr("FIT decoding error: unknown base type %1.").arg(baseType.nr());
+    }
+    bool valid = isValueValid(def, fieldData);
+    return CFitField(def, fieldProfile, value, valid);
+}
+
+
+bool CFitFieldBuilder::isValueValid(const CFitFieldDefinition &def, quint8 *fieldData)
+{
+    const CFitBaseType &baseType = def.getBaseType();
+    const quint8 *invalidBytes = baseType.invalidValueBytes();
+    quint8 invalidCount = 0;
+
+    if(!baseType.isSizeUndefined() && def.getSize() != baseType.size())
+    {
+        return false;
+    }
+    for (quint8 i = 0; i < def.getSize(); i++)
+    {
+        quint8 b = baseType.isSizeUndefined() ? invalidBytes[0] : invalidBytes[i];
+        if (fieldData[i] == b)
+        {
+            invalidCount++;
+        }
+    }
+    return invalidCount < def.getSize();
+}
+
+void CFitFieldBuilder::evaluateFieldProfile(CFitMessage& mesg,  const CFitField & field)
+{
+    const CFitFieldProfile& fieldProfile = field.profile();
+    // case subfield
+    if (fieldProfile.hasSubfields())
+    {
+        for (const CFitSubfieldProfile* subfieldProfile : fieldProfile.getSubfields())
+        {
+            // the referenced field is for all subfields the same
+            for (const CFitField & referencedField : mesg.getFields())
+            {
+                if (referencedField.getFieldDefNr() == subfieldProfile->getReferencedFieldDefNr() &&
+                    referencedField.getValue().toUInt() == subfieldProfile->getReferencedFieldValue())
+                {
+                    // the value of the referenced field matches with the field profile reference-value
+                    mesg.updateFieldProfile(field.getFieldDefNr(), subfieldProfile);
+                }
+            }
+        }
+    }
+}
+
+void CFitFieldBuilder::expandComponents(CFitMessage& mesg, const CFitField & field)
+{
+    // TODO accumulated fields are not implemented (no need so far)
+    const CFitFieldProfile& fieldProfile = field.profile();
+    // case component
+    if (fieldProfile.hasComponents())
+    {
+        int offset = 0;
+        for (const CFitComponentfieldProfile* compProfile : fieldProfile.getComponents())
+        {
+            if (field.getBaseType().isSignedInt())
+            {
+                qint32 value = (field.getValue().toInt() >> offset) & compProfile->getBitmask();
+                CFitField compField = CFitField(field.getGlobalMesgNr(), compProfile->getFieldDefNum(), compProfile, QVariant(value), true);
+                mesg.addField(compField);
+            }
+            else
+            {
+                quint32 value = (field.getValue().toUInt() >> offset) & compProfile->getBitmask();
+                CFitField compField = CFitField(field.getGlobalMesgNr(), compProfile->getFieldDefNum(), compProfile, QVariant(value), true);
+                mesg.addField(compField);
+            }
+            offset += compProfile->getBits();
+        }
+    }
+}
diff --git a/src/gis/fit/decoder/CFitFieldBuilder.h b/src/gis/fit/decoder/CFitFieldBuilder.h
new file mode 100644
index 0000000..bafa299
--- /dev/null
+++ b/src/gis/fit/decoder/CFitFieldBuilder.h
@@ -0,0 +1,42 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CFITFIELDBUILDER_H
+#define CFITFIELDBUILDER_H
+
+#include <QtCore>
+
+class CFitField;
+class CFitMessage;
+class CFitFieldDefinition;
+
+class CFitFieldBuilder
+{
+    Q_DECLARE_TR_FUNCTIONS(CFitFieldBuilder)
+public:
+    CFitFieldBuilder() = delete;
+    static void evaluateSubfieldsAndExpandComponents(CFitMessage& mesg);
+    static CFitField buildField(const CFitFieldDefinition& def, quint8* fieldData, const CFitMessage& message);
+
+private:
+    static bool isValueValid(const CFitFieldDefinition &def, quint8 *fieldData);
+    static void evaluateFieldProfile(CFitMessage& mesg, const CFitField & field);
+    static void expandComponents(CFitMessage& mesg, const CFitField & field);
+};
+
+#endif //CFITFIELDBUILDER_H
diff --git a/src/gis/fit/decoder/CFitFieldDataState.cpp b/src/gis/fit/decoder/CFitFieldDataState.cpp
new file mode 100644
index 0000000..405c872
--- /dev/null
+++ b/src/gis/fit/decoder/CFitFieldDataState.cpp
@@ -0,0 +1,72 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/fit/decoder/CFitFieldBuilder.h"
+#include "gis/fit/decoder/CFitFieldDataState.h"
+#include "gis/fit/defs/fit_const.h"
+#include "gis/fit/defs/fit_fields.h"
+
+void CFitFieldDataState::reset()
+{
+    fieldDataIndex = 0;
+    fieldIndex = 0;
+}
+
+
+decode_state_e CFitFieldDataState::process(quint8 &dataByte)
+{
+    CFitMessage& mesg = *latestMessage();
+    const CFitFieldDefinition& fieldDef = defintion(mesg.getLocalMesgNr())->getFieldByIndex(fieldIndex);
+
+    // add the read byte to the data array
+    fieldData[fieldDataIndex++] = dataByte;
+
+    if (fieldDataIndex >= fieldDef.getSize())
+    {
+        // all bytes are read for current field
+
+        // new field with data
+        CFitField f = CFitFieldBuilder::buildField(fieldDef, fieldData, mesg);
+        mesg.addField(f);
+
+        // The special case time record.
+        // timestamp has always the same value for all enums. it does not matter againts which we're comparing.
+        if (fieldDef.getDefNr() == eRecordTimestamp)
+        {
+            setTimestamp(f.getValue().toUInt());
+        }
+
+        // new field follows, reset
+        fieldDataIndex = 0;
+        fieldIndex++;
+    }
+
+    if (fieldIndex >= defintion(mesg.getLocalMesgNr())->getNrOfFields())
+    {
+        // Now that the entire message is decoded we may evaluate subfields and expand components
+        CFitFieldBuilder::evaluateSubfieldsAndExpandComponents(mesg);
+
+        reset();
+        FITDEBUG(2, qDebug() << mesg.messageInfo())
+        // after all fields read, go to next record header
+        return eDecoderStateRecord;
+    }
+
+    // there are more fields to read for the current message
+    return eDecoderStateFieldData;
+}
diff --git a/src/gis/fit/decoder/CFitFieldDataState.h b/src/gis/fit/decoder/CFitFieldDataState.h
new file mode 100644
index 0000000..a429496
--- /dev/null
+++ b/src/gis/fit/decoder/CFitFieldDataState.h
@@ -0,0 +1,41 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CFITFIELDDATASTATE_H
+#define CFITFIELDDATASTATE_H
+
+#include "gis/fit/decoder/IFitDecoderState.h"
+
+static const int fitMaxFieldSize =255;
+
+class CFitFieldDataState final : public IFitDecoderState
+{
+public:
+    CFitFieldDataState(shared_state_data_t &data) : IFitDecoderState(data, eDecoderStateFieldData) { reset(); }
+    virtual ~CFitFieldDataState() {}
+    void reset() override;
+    decode_state_e process(quint8 &dataByte) override;
+
+private:
+    quint8 fieldIndex;
+    quint8 fieldDataIndex;
+    quint8 fieldData[fitMaxFieldSize];
+};
+
+
+#endif // CFITFIELDDATASTATE_H
diff --git a/src/gis/fit/decoder/CFitFieldDefinition.cpp b/src/gis/fit/decoder/CFitFieldDefinition.cpp
new file mode 100644
index 0000000..41a2595
--- /dev/null
+++ b/src/gis/fit/decoder/CFitFieldDefinition.cpp
@@ -0,0 +1,77 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/fit/decoder/CFitFieldDefinition.h"
+
+#include "gis/fit/decoder/CFitDefinitionMessage.h"
+#include "gis/fit/defs/CFitBaseType.h"
+#include "gis/fit/defs/CFitFieldProfile.h"
+#include "gis/fit/defs/CFitProfileLookup.h"
+#include "gis/fit/defs/fit_const.h"
+
+static const quint8 fitEndianFlagMask = 0x80;
+
+
+CFitFieldDefinition::CFitFieldDefinition(CFitDefinitionMessage* parent, quint8 defNr, quint8 size, quint8 type)
+    : defNr(defNr), size(size), type(type), baseType(CFitBaseTypeMap::get(type)), parentDefintion(parent)
+{
+    fieldProfile = CFitProfileLookup::getFieldForProfile(parentDefintion ? parentDefintion->getGlobalMesgNr() : fitGlobalMesgNrInvalid, defNr);
+}
+
+CFitFieldDefinition::CFitFieldDefinition()
+    : CFitFieldDefinition(nullptr, fitLocalMesgNrInvalid, 0, eBaseTypeNrInvalid)
+{
+}
+
+QString CFitFieldDefinition::fieldInfo() const
+{
+    QString fstr = QString("%1 %2 (%3): %4, type %5, size %6, endian %7")
+                   .arg(profile().hasSubfields() ? "dynamic" : profile().hasComponents() ? "component" : "field")
+                   .arg(profile().getName())
+                   .arg(getDefNr())
+                   .arg(getBaseType().name())
+                   .arg(getType())
+                   .arg(getSize())
+                   .arg(getEndianAbilityFlag());
+    return fstr;
+}
+
+quint8 CFitFieldDefinition::getDefNr() const
+{
+    return defNr;
+}
+
+quint8 CFitFieldDefinition::getSize() const
+{
+    return size;
+}
+
+quint8 CFitFieldDefinition::getType() const
+{
+    return type;
+}
+
+bool CFitFieldDefinition::getEndianAbilityFlag() const
+{
+    return (type & fitEndianFlagMask) != 0;
+}
+
+const CFitBaseType& CFitFieldDefinition::getBaseType() const
+{
+    return *baseType;
+}
\ No newline at end of file
diff --git a/src/gis/fit/decoder/CFitFieldDefinition.h b/src/gis/fit/decoder/CFitFieldDefinition.h
new file mode 100644
index 0000000..3b9f3f3
--- /dev/null
+++ b/src/gis/fit/decoder/CFitFieldDefinition.h
@@ -0,0 +1,56 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CFITFIELDDEFINITION_H
+#define CFITFIELDDEFINITION_H
+
+#include <QtCore>
+
+class CFitDefinitionMessage;
+class CFitBaseType;
+class CFitFieldProfile;
+
+class CFitFieldDefinition final
+{
+public:
+    CFitFieldDefinition(CFitDefinitionMessage* parent, quint8 defNr, quint8 size, quint8 type);
+    CFitFieldDefinition();
+
+    QString fieldInfo() const;
+
+    quint8 getDefNr() const;
+    quint8 getSize() const;
+    quint8 getType() const;
+    const CFitBaseType& getBaseType() const;
+    bool getEndianAbilityFlag() const;
+
+    const CFitDefinitionMessage& parent() const { return *parentDefintion; }
+    const CFitFieldProfile& profile() const { return *fieldProfile; }
+
+    void setParent(CFitDefinitionMessage* parent) { parentDefintion = parent; }
+
+private:
+    quint8 defNr;
+    quint8 size;
+    quint8 type;
+    CFitBaseType* baseType;
+    const CFitDefinitionMessage* parentDefintion;
+    const CFitFieldProfile* fieldProfile;
+};
+
+#endif // CFITFIELDDEFINITION_H
diff --git a/src/gis/fit/decoder/CFitFieldDefinitionState.cpp b/src/gis/fit/decoder/CFitFieldDefinitionState.cpp
new file mode 100644
index 0000000..501f31a
--- /dev/null
+++ b/src/gis/fit/decoder/CFitFieldDefinitionState.cpp
@@ -0,0 +1,70 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/fit/decoder/CFitFieldDefinitionState.h"
+#include "gis/fit/defs/fit_const.h"
+
+/**
+ * byte
+ * 0: field definition number
+ * 1: size in bytes of field data
+ * 2: base type
+ *
+ */
+
+void CFitFieldDefinitionState::reset()
+{
+    offset = 0;
+}
+
+decode_state_e CFitFieldDefinitionState::process(quint8 &dataByte)
+{
+    switch (offset++)
+    {
+    case 0:
+        // field definition number
+        defNr = dataByte;
+        break;
+
+    case 1:
+        // field data size
+        size = dataByte;
+        break;
+
+    case 2:
+        // field base type
+        type = dataByte;
+        // get the previously (in RecordHeaderState) added definition message
+        CFitDefinitionMessage* def = latestDefinition();
+        // add the new field definition
+        def->addField(CFitFieldDefinition(def, defNr, size, type));
+        reset();
+        if (def->getFields().size() >= def->getNrOfFields())
+        {
+            FITDEBUG(2, qDebug() << latestDefinition()->messageInfo())
+            endDefintion();
+            return eDecoderStateRecord;
+        }
+        else
+        {
+            return eDecoderStateFieldDef;
+        }
+    }
+
+    return eDecoderStateFieldDef;
+}
diff --git a/src/gis/fit/decoder/CFitFieldDefinitionState.h b/src/gis/fit/decoder/CFitFieldDefinitionState.h
new file mode 100644
index 0000000..f052cf7
--- /dev/null
+++ b/src/gis/fit/decoder/CFitFieldDefinitionState.h
@@ -0,0 +1,41 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CFITFIELDDEFINITIONSTATE_H
+#define CFITFIELDDEFINITIONSTATE_H
+
+#include "gis/fit/decoder/IFitDecoderState.h"
+
+class CFitFieldDefinitionState final : public IFitDecoderState
+{
+public:
+    CFitFieldDefinitionState(shared_state_data_t &data) : IFitDecoderState(data, eDecoderStateFieldDef) { reset(); }
+    virtual ~CFitFieldDefinitionState() {}
+
+    void reset() override;
+    decode_state_e process(quint8 &dataByte) override;
+
+private:
+    quint8 offset;
+
+    quint8 defNr;
+    quint8 type;
+    quint8 size;
+};
+
+#endif //CFITFIELDDEFINITIONSTATE_H
diff --git a/src/gis/fit/decoder/CFitHeaderState.cpp b/src/gis/fit/decoder/CFitHeaderState.cpp
new file mode 100644
index 0000000..f4e3613
--- /dev/null
+++ b/src/gis/fit/decoder/CFitHeaderState.cpp
@@ -0,0 +1,130 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/fit/decoder/CFitHeaderState.h"
+
+
+/**
+ * byte
+ * 0: the header size wihtout crc (12 for the current version)
+ * 1: protocol version
+ * 2: profil version LSB
+ * 3: profil version MSB
+ * 4: data size LSB
+ * 5: data size
+ * 6: data size
+ * 7: data size
+ * 8: "."
+ * 9: "F"
+ * 10: "I"
+ * 11: "T"
+ * 12: CRC LSB
+ * 13: CRC MSB
+ */
+
+static const quint8 fitProtocolVersionMajor =1;
+
+static const quint8 fitProtocolMajerVersionShift = 4;
+static const quint8 fitProtocolMajorVersionMask = 0x0F << fitProtocolMajerVersionShift;
+
+void CFitHeaderState::reset()
+{
+    setFileLength(3); // Header byte + CRC.
+    offset = 0;
+
+    setTimestamp(0);
+    resetFileBytesRead();
+}
+
+decode_state_e CFitHeaderState::process(quint8 &dataByte)
+{
+    bool invalid = false;
+    switch (offset++)
+    {
+    case 0:
+        // header length
+        headerLength = dataByte;
+        setFileLength(headerLength + 2);
+        break;
+
+    case 1:
+        // protocol version
+        if ((dataByte & fitProtocolMajorVersionMask) >
+            (fitProtocolVersionMajor << fitProtocolMajerVersionShift))
+        {
+            throw tr("FIT decoding error: protocol %1 version not supported.").arg(dataByte & fitProtocolMajorVersionMask);
+        }
+        break;
+
+    case 4:
+        // data size
+        dataSize = (quint32) (dataByte & 0xFF);
+        break;
+
+    case 5:
+        // data size
+        dataSize |= (quint32) (dataByte & 0xFF) << 8;
+        break;
+
+    case 6:
+        // data size
+        dataSize |= (quint32) (dataByte & 0xFF) << 16;
+        break;
+
+    case 7:
+        // data size
+        dataSize |= (quint32) (dataByte & 0xFF) << 24;
+        setFileLength(dataSize + headerLength + 2);     // include crc
+        break;
+
+    case 8:
+        // "."
+        invalid = (dataByte != '.');
+        break;
+
+    case 9:
+        // "F"
+        invalid = (dataByte != 'F');
+        break;
+
+    case 10:
+        // "I"
+        invalid = (dataByte != 'I');
+        break;
+
+    case 11:
+        // "T"
+        invalid = (dataByte != 'T');
+        break;
+
+    default:
+        break;
+    }
+
+    if (invalid)
+    {
+        throw tr("FIT decoding error: file header signature mismatch. File is not FIT.");
+    }
+
+    if (offset == headerLength)
+    {
+        // end of header
+        return eDecoderStateRecord;
+    }
+    return eDecoderStateFileHeader;
+}
\ No newline at end of file
diff --git a/src/gis/fit/decoder/CFitHeaderState.h b/src/gis/fit/decoder/CFitHeaderState.h
new file mode 100644
index 0000000..fb00090
--- /dev/null
+++ b/src/gis/fit/decoder/CFitHeaderState.h
@@ -0,0 +1,39 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CFITHEADERSTATE_H
+#define CFITHEADERSTATE_H
+
+#include "gis/fit/decoder/IFitDecoderState.h"
+
+class CFitHeaderState final : public IFitDecoderState
+{
+public:
+    CFitHeaderState(shared_state_data_t &data) : IFitDecoderState(data, eDecoderStateFileHeader) { reset(); }
+    virtual ~CFitHeaderState() {}
+
+    void reset() override;
+    decode_state_e process(quint8 &dataByte) override;
+
+private:
+    quint8 offset;
+    quint8 headerLength;
+    quint32 dataSize;
+};
+
+#endif //CFITHEADERSTATE_H
diff --git a/src/gis/fit/decoder/CFitMessage.cpp b/src/gis/fit/decoder/CFitMessage.cpp
new file mode 100644
index 0000000..7886319
--- /dev/null
+++ b/src/gis/fit/decoder/CFitMessage.cpp
@@ -0,0 +1,94 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/fit/decoder/CFitDefinitionMessage.h"
+#include "gis/fit/decoder/CFitMessage.h"
+#include "gis/fit/defs/CFitProfile.h"
+#include "gis/fit/defs/CFitProfileLookup.h"
+#include "gis/fit/defs/fit_const.h"
+
+CFitMessage::CFitMessage(const CFitDefinitionMessage& def)
+    : fields(), globalMesgNr(def.getGlobalMesgNr()), localMesgNr(def.getLocalMesgNr()),
+    messageProfile(CFitProfileLookup::getProfile(globalMesgNr))
+{
+}
+
+CFitMessage::CFitMessage()
+    : fields(), globalMesgNr(fitGlobalMesgNrInvalid), localMesgNr(fitLocalMesgNrInvalid),
+    messageProfile(CFitProfileLookup::getProfile(fitGlobalMesgNrInvalid))
+{
+}
+
+bool CFitMessage::isValid() const
+{
+    return getGlobalMesgNr() != fitGlobalMesgNrInvalid;
+}
+
+void CFitMessage::updateFieldProfile(quint8 fieldDefNr, const CFitFieldProfile* fieldProfile)
+{
+    fields[fieldDefNr].setProfile(fieldProfile);
+}
+
+QStringList CFitMessage::messageInfo() const
+{
+    QStringList list;
+    list << QString("Message %1 (%3) %4 [loc]")
+        .arg(profile().getName())
+        .arg(getGlobalMesgNr())
+        .arg(getLocalMesgNr());
+
+    for(const CFitField &  field: fields)
+    {
+        list << field.fieldInfo();
+    }
+    return list;
+}
+
+quint16 CFitMessage::getGlobalMesgNr() const
+{
+    return globalMesgNr;
+}
+
+quint8 CFitMessage::getLocalMesgNr() const
+{
+    return localMesgNr;
+}
+
+bool CFitMessage::hasField(const quint8 fieldDefNum) const
+{
+    return fields.contains(fieldDefNum);
+}
+
+void CFitMessage::addField(CFitField &  field)
+{
+    if(fields.contains(field.getFieldDefNr()))
+    {
+        qCritical("fit field %d already added to map.", (int) field.getFieldDefNr());
+    }
+    fields.insert(field.getFieldDefNr(), field);
+}
+
+bool CFitMessage::isFieldValueValid(const quint8 fieldDefNum) const
+{
+    return fields[fieldDefNum].isValidValue();
+}
+
+const QVariant& CFitMessage::getFieldValue(const quint8 fieldDefNum) const
+{
+    return fields[fieldDefNum].getValue();
+}
diff --git a/src/gis/fit/decoder/CFitMessage.h b/src/gis/fit/decoder/CFitMessage.h
new file mode 100644
index 0000000..b69bde6
--- /dev/null
+++ b/src/gis/fit/decoder/CFitMessage.h
@@ -0,0 +1,59 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CFITMESSAGE_H
+#define CFITMESSAGE_H
+
+#include "gis/fit/decoder/CFitField.h"
+
+#include <QtCore>
+
+class MesgDefinition;
+class CFitDefinitionMessage;
+class CFitProfile;
+class CFitFieldProfile;
+
+class CFitMessage final
+{
+public:
+    CFitMessage(const CFitDefinitionMessage& def);
+    CFitMessage();
+
+    bool isValid() const;
+    quint16 getGlobalMesgNr() const;
+    quint8 getLocalMesgNr() const;
+
+    bool hasField(const quint8 fieldDefNum) const;
+
+    bool isFieldValueValid(const quint8 fieldDefNum) const;
+    const QVariant& getFieldValue(const quint8 fieldDefNum) const;
+    void addField(CFitField & field);
+
+    const CFitProfile& profile() const { return *messageProfile; }
+    QStringList messageInfo() const;
+    const QList<CFitField> getFields() const { return fields.values(); }
+    void updateFieldProfile(quint8 fieldDefNr, const CFitFieldProfile* fieldProfile);
+
+private:
+    QMap<quint8, CFitField> fields;
+    quint16 globalMesgNr;
+    quint8 localMesgNr;
+    const CFitProfile* messageProfile;
+};
+
+#endif //CFITMESSAGE_H
diff --git a/src/gis/fit/decoder/CFitRecordContentState.cpp b/src/gis/fit/decoder/CFitRecordContentState.cpp
new file mode 100644
index 0000000..a1d0d65
--- /dev/null
+++ b/src/gis/fit/decoder/CFitRecordContentState.cpp
@@ -0,0 +1,92 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/fit/decoder/CFitRecordContentState.h"
+#include "gis/fit/defs/fit_const.h"
+
+
+/**
+ * record content (without field definitions)
+ * 0: reserved
+ * 1: architecture (0 little, 1 big endian)
+ * 2: global message number
+ * 3: global message number
+ * 4: number of fields in the data message
+ */
+void CFitRecordContentState::reset()
+{
+    offset = 0;
+}
+
+decode_state_e CFitRecordContentState::process(quint8 &dataByte)
+{
+    CFitDefinitionMessage* def = latestDefinition();
+    switch (offset++)
+    {
+    case 0:
+        // reserved
+        break;
+
+    case 1:
+        // architecture
+        architecture = dataByte;
+        def->setArchiteture(architecture);
+        break;
+
+    case 2:
+        // global message number
+        globalMesgNr = dataByte;
+        break;
+
+    case 3:
+        // global message number
+        globalMesgNr = globalMesgNr | ((quint16) dataByte << 8);
+
+        if (architecture == eFitArchEndianBig)
+        {
+            globalMesgNr = (globalMesgNr >> 8) | ((globalMesgNr & 0xFF) << 8);
+        }
+        else if (architecture != eFitArchEndianLittle)
+        {
+            throw tr("FIT decoding error: architecture %1 not supported.").arg(architecture);
+        }
+        def->setGlobalMesgNr(globalMesgNr);
+        break;
+
+    case 4:
+        // number of fields
+        nrOfFields = dataByte;
+        def->setNrOfFields(nrOfFields);
+
+        reset();
+        if (nrOfFields == 0)
+        {
+            // no fields, records may follow (either for a data message or defninition message)
+            return eDecoderStateRecord;
+        }
+        // the fields definitions follows
+        return eDecoderStateFieldDef;
+        break;
+
+    default:
+        throw tr("FIT decoding error: invalid offset %1 for state 'record content'").arg(offset);
+    }
+
+    // still more bytes for the record content
+    return eDecoderStateRecordContent;
+}
diff --git a/src/gis/fit/decoder/CFitRecordContentState.h b/src/gis/fit/decoder/CFitRecordContentState.h
new file mode 100644
index 0000000..aad6bc9
--- /dev/null
+++ b/src/gis/fit/decoder/CFitRecordContentState.h
@@ -0,0 +1,41 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CFITRECORDCONTENTSTATE_H
+#define CFITRECORDCONTENTSTATE_H
+
+#include "gis/fit/decoder/IFitDecoderState.h"
+
+class CFitRecordContentState final : public IFitDecoderState
+{
+public:
+    CFitRecordContentState(shared_state_data_t &data) : IFitDecoderState(data, eDecoderStateRecordContent) { reset(); }
+    virtual ~CFitRecordContentState() {}
+
+    void reset() override;
+    decode_state_e process(quint8 &dataByte) override;
+
+private:
+    quint8 offset;
+
+    quint8 architecture;
+    quint32 globalMesgNr;
+    quint8 nrOfFields;
+};
+
+#endif //CFITRECORDCONTENTSTATE_H
diff --git a/src/gis/fit/decoder/CFitRecordHeaderState.cpp b/src/gis/fit/decoder/CFitRecordHeaderState.cpp
new file mode 100644
index 0000000..a318b7a
--- /dev/null
+++ b/src/gis/fit/decoder/CFitRecordHeaderState.cpp
@@ -0,0 +1,98 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/fit/decoder/CFitRecordHeaderState.h"
+#include "gis/fit/defs/CFitBaseType.h"
+#include "gis/fit/defs/fit_fields.h"
+
+/*
+ * normal header
+ * bit: value description
+ * 7: 0 normal Header
+ * 6: 0/1 data message / definition message
+ * 5: - reserved
+ * 4: - reserved
+ * 3: 0/1 local message type (0-15 -> 0000 - 1111)
+ * 2:     local message type
+ * 1:     local message type
+ * 0:     local message type
+ */
+static const quint8 fitRecordHeaderDefBit =  ((quint8) 0x40); // bit 6: 0100 0000
+static const quint8 fitRecordHeaderMesgMask = ((quint8) 0x0F); // bit 0-3: 0000 1111
+
+/*
+ * compressed timestamp header
+ * bit: value description
+ * 7: 1 compressed timestamp header
+ * 6: 0/1 local message type
+ * 5:     local message type
+ * 4: 0/1 time offset (seconds) (0-31 -> 0 0000-1 1111)
+ * 3:     time offset
+ * 2:     time offset
+ * 1:     time offset
+ * 0:     time offset
+ */
+static const quint8 fitRecordHeaderTypeBit =  ((quint8) 0x80); // bit 7: 1000 0000
+static const quint8 fitRecordHeaderTimeMesgMask =  ((quint8) 0x60); // bit 5-6: 0110 0000
+static const quint8 fitRecordHeaderTimeMesgShift = 5;
+
+
+decode_state_e CFitRecordHeaderState::process(quint8 &dataByte)
+{
+    if ((dataByte & fitRecordHeaderTypeBit) != 0)
+    {
+        // this is a compressed timestamp header
+        quint8 localMessageType = (dataByte & fitRecordHeaderTimeMesgMask) >> fitRecordHeaderTimeMesgShift;
+        CFitDefinitionMessage* def = defintion(localMessageType);
+
+        if (!def->hasField(eRecordTimestamp))
+        {
+            // create dummy definition field for timestamp
+            // later on passed timestamp is a uint32, therefore a 4 byte type is created.
+            // remark on enum for timestamp (RecordTimestamp:
+            // the timestamp field has for all message types the same number (253) therefore it does not matter which
+            // enum is taken here.
+            def->addField(CFitFieldDefinition(def, eRecordTimestamp, sizeof(quint32), eBaseTypeNrUint8));
+        }
+        setTimestampOffset(dataByte);
+
+        addMessage(*def);
+        const CFitFieldDefinition& fieldDef = def->getField(eRecordTimestamp);
+        CFitField timeField = CFitField(fieldDef, &fieldDef.profile(), QVariant(getTimestamp()), true);
+        latestMessage()->addField(timeField);
+
+        return eDecoderStateFieldData;
+    }
+    else
+    {
+        quint8 localMessageType = dataByte & fitRecordHeaderMesgMask;
+        if ((dataByte & fitRecordHeaderDefBit) != 0)
+        {
+            // this is a definition message
+            addDefinition(CFitDefinitionMessage(localMessageType));
+            return eDecoderStateRecordContent;
+        }
+        else
+        {
+            // this is a data message
+            addMessage(*defintion(localMessageType));
+            // go to eDecoderStateFieldData
+            return eDecoderStateFieldData;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/gis/fit/decoder/CFitRecordHeaderState.h b/src/gis/fit/decoder/CFitRecordHeaderState.h
new file mode 100644
index 0000000..747a0fb
--- /dev/null
+++ b/src/gis/fit/decoder/CFitRecordHeaderState.h
@@ -0,0 +1,34 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CFITRECORDHEADERSTATE_H
+#define CFITRECORDHEADERSTATE_H
+
+#include "gis/fit/decoder/IFitDecoderState.h"
+
+class CFitRecordHeaderState final : public IFitDecoderState
+{
+public:
+    CFitRecordHeaderState(shared_state_data_t & data) : IFitDecoderState(data, eDecoderStateRecord) { reset(); }
+    virtual ~CFitRecordHeaderState() {}
+
+    decode_state_e process(quint8 &dataByte) override;
+    void reset() override {}
+};
+
+#endif //CFITRECORDHEADERSTATE_H
diff --git a/src/gis/fit/decoder/IFitDecoderState.cpp b/src/gis/fit/decoder/IFitDecoderState.cpp
new file mode 100644
index 0000000..2d3cc97
--- /dev/null
+++ b/src/gis/fit/decoder/IFitDecoderState.cpp
@@ -0,0 +1,139 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/fit/decoder/IFitDecoderState.h"
+
+
+decode_state_e IFitDecoderState::processByte(quint8 &dataByte)
+{
+    incFileBytesRead();
+    buildCrc(dataByte);
+    decode_state_e state = process(dataByte);
+    if (bytesLeftToRead() == 2)
+    {
+        if (state != eDecoderStateRecord)
+        {
+            // we come from a wrong state...
+            throw tr("FIT decoding error: Decoder not in correct state %1 after last data byte in file.").arg(state);
+        }
+        // end of file, 2 bytes left, this is the crc
+        return eDecoderStateFileCrc;
+    }
+    return state;
+}
+
+
+void IFitDecoderState::buildCrc(quint8 byte)
+{
+    static const quint16 crc_table[16] =
+    {
+        0x0000, 0xCC01, 0xD801, 0x1400, 0xF001, 0x3C00, 0x2800, 0xE401,
+        0xA001, 0x6C00, 0x7800, 0xB401, 0x5000, 0x9C01, 0x8801, 0x4400
+    };
+    quint16 tmp;
+    quint16 crc = data.crc;
+    // compute checksum of lower four bits of byte
+    tmp = crc_table[crc & 0xF];
+    crc = (crc >> 4) & 0x0FFF;
+    crc = crc ^ tmp ^ crc_table[byte & 0xF];
+    // now compute checksum of upper four bits of byte
+    tmp = crc_table[crc & 0xF];
+    crc = (crc >> 4) & 0x0FFF;
+    crc = crc ^ tmp ^ crc_table[(byte >> 4) & 0xF];
+    data.crc = crc;
+}
+
+
+quint16 IFitDecoderState::getCrc()
+{
+    return data.crc;
+}
+
+CFitMessage*IFitDecoderState::latestMessage()
+{
+    return data.lastMessage;
+}
+
+CFitDefinitionMessage*IFitDecoderState::latestDefinition()
+{
+    return data.lastDefintion;
+}
+
+
+static const quint8 fitRecordHeaderTimeOffsetMask = 0x1F; // bit 0-4: 0001 1111
+
+void IFitDecoderState::setTimestamp(quint32 fullTimestamp)
+{
+    data.timestamp = fullTimestamp;
+    data.lastTimeOffset = (quint8) (data.timestamp & fitRecordHeaderTimeOffsetMask);
+}
+
+void IFitDecoderState::setTimestampOffset(quint32 offsetTimestamp)
+{
+    quint8 timeOffset = offsetTimestamp & fitRecordHeaderTimeOffsetMask;
+    data.timestamp += (timeOffset - data.lastTimeOffset) & fitRecordHeaderTimeOffsetMask;
+    data.lastTimeOffset = timeOffset;
+}
+
+quint32 IFitDecoderState::getTimestamp()
+{
+    return data.timestamp;
+}
+
+void IFitDecoderState::addMessage(const CFitDefinitionMessage& definition)
+{
+    data.messages.append(CFitMessage(definition));
+    data.lastMessage = &data.messages.last();
+}
+
+void IFitDecoderState::addDefinition(CFitDefinitionMessage definition)
+{
+    data.defintions[definition.getLocalMesgNr()] = definition;
+    data.lastDefintion = &data.defintions[definition.getLocalMesgNr()];
+}
+
+void IFitDecoderState::endDefintion()
+{
+    data.defintionHistory.append(*data.lastDefintion);
+}
+
+CFitDefinitionMessage*IFitDecoderState::defintion(quint32 localMessageType)
+{
+    return &(data.defintions[localMessageType]);
+}
+
+void IFitDecoderState::setFileLength(quint32 fileLength)
+{
+    data.fileLength = fileLength;
+}
+
+quint32 IFitDecoderState::bytesLeftToRead()
+{
+    return data.fileLength - data.fileBytesRead;
+}
+
+
+void IFitDecoderState::resetFileBytesRead()
+{
+    data.fileBytesRead = 0;
+}
+
+void IFitDecoderState::incFileBytesRead()
+{
+    data.fileBytesRead++;
+}
diff --git a/src/gis/fit/decoder/IFitDecoderState.h b/src/gis/fit/decoder/IFitDecoderState.h
new file mode 100644
index 0000000..0d1fa58
--- /dev/null
+++ b/src/gis/fit/decoder/IFitDecoderState.h
@@ -0,0 +1,90 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CFITSTATE_H
+#define CFITSTATE_H
+
+#include "gis/fit/decoder/CFitDefinitionMessage.h"
+#include "gis/fit/decoder/CFitMessage.h"
+
+#include <QtCore>
+
+
+typedef enum
+{
+    eDecoderStateFileHeader,
+    eDecoderStateRecord,
+    eDecoderStateRecordContent,
+    eDecoderStateFieldDef,
+    eDecoderStateFieldData,
+    eDecoderStateFileCrc,
+    eDecoderStateEnd
+} decode_state_e;
+
+class IFitDecoderState
+{
+    Q_DECLARE_TR_FUNCTIONS(IFitDecoderState)
+public:
+    struct shared_state_data_t
+    {
+        quint16 crc;
+        quint32 fileLength;
+        quint32 fileBytesRead;
+        quint8 lastTimeOffset;
+        quint32 timestamp;
+        CFitDefinitionMessage* lastDefintion;
+        CFitMessage* lastMessage;
+        QMap<quint8, CFitDefinitionMessage> defintions;
+        QList<CFitDefinitionMessage> defintionHistory;
+        QList<CFitMessage> messages;
+    };
+
+    IFitDecoderState(shared_state_data_t &data, decode_state_e stateClass) : data(data) { }
+    virtual ~IFitDecoderState() {}
+
+    virtual void reset() = 0;
+    decode_state_e processByte(quint8 &dataByte);
+
+protected:
+    virtual decode_state_e process(quint8 &dataByte) = 0;
+
+    CFitMessage* latestMessage();
+    void addMessage(const CFitDefinitionMessage& definition);
+
+    void setFileLength(quint32 fileLength);
+    void resetFileBytesRead();
+    void incFileBytesRead();
+    quint32 bytesLeftToRead();
+
+    CFitDefinitionMessage* latestDefinition();
+    CFitDefinitionMessage* defintion(quint32 localMessageType);
+    void addDefinition(CFitDefinitionMessage definition);
+    void endDefintion();
+
+    void setTimestamp(quint32 fullTimestamp);
+    void setTimestampOffset(quint32 offsetTimestamp);
+    quint32 getTimestamp();
+    quint16 getCrc();
+
+private:
+    void buildCrc(quint8 byte);
+
+    shared_state_data_t &data;
+};
+
+#endif // CFITSTATE_H
diff --git a/src/gis/fit/defs/CFitBaseType.cpp b/src/gis/fit/defs/CFitBaseType.cpp
new file mode 100644
index 0000000..3ce8d17
--- /dev/null
+++ b/src/gis/fit/defs/CFitBaseType.cpp
@@ -0,0 +1,135 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/fit/defs/CFitBaseType.h"
+
+CFitBaseType::CFitBaseType() : CFitBaseType(eBaseTypeNrInvalid, "invalid", 0,
+{
+    0
+})
+{
+}
+
+CFitBaseType::CFitBaseType(fit_base_type_nr_e baseTypeNr, QString name, quint8 size, std::initializer_list<quint8> invalid)
+    : typeSize(size), baseTypeNr(baseTypeNr), namestr(name)
+{
+    quint8 i = 0;
+    for(quint8 bit : invalid)
+    {
+        invalidBytes[i++] = bit;
+    }
+}
+
+quint8 CFitBaseType::size() const
+{
+    return typeSize;
+}
+bool CFitBaseType::isSizeUndefined() const
+{
+    return typeSize == 0;
+}
+
+fit_base_type_nr_e CFitBaseType::nr() const
+{
+    return baseTypeNr;
+}
+
+const quint8* CFitBaseType::invalidValueBytes() const
+{
+    return invalidBytes;
+}
+
+bool CFitBaseType::isInteger() const
+{
+    return isSignedInt() || isUnsignedInt();
+}
+
+bool CFitBaseType::isSignedInt() const
+{
+    return baseTypeNr == eBaseTypeNrSint8 || baseTypeNr == eBaseTypeNrSint16 || baseTypeNr == eBaseTypeNrSint32;
+}
+
+bool CFitBaseType::isUnsignedInt() const
+{
+    return baseTypeNr == eBaseTypeNrUint8 || baseTypeNr == eBaseTypeNrUint8z
+           || baseTypeNr == eBaseTypeNrUint16 || baseTypeNr == eBaseTypeNrUint16z
+           || baseTypeNr == eBaseTypeNrUint32 || baseTypeNr == eBaseTypeNrUint32z
+           || baseTypeNr == eBaseTypeNrEnum;
+}
+
+bool CFitBaseType::isFloat() const
+{
+    return baseTypeNr == eBaseTypeNrFloat32 || baseTypeNr == eBaseTypeNrFloat64;
+}
+
+bool CFitBaseType::isNumber() const
+{
+    return isInteger() ||isFloat();
+}
+
+
+bool CFitBaseType::isString() const
+{
+    return baseTypeNr == eBaseTypeNrString;
+}
+
+bool CFitBaseType::isByte() const
+{
+    return baseTypeNr == eBaseTypeNrByte;
+}
+
+QString CFitBaseType::name() const
+{
+    return namestr;
+}
+
+
+void CFitBaseTypeMap::initialize(QMap<quint8, CFitBaseType>& baseTypesMap)
+{
+    baseTypesMap.insert(fitEnumType.nr(), fitEnumType);
+    baseTypesMap.insert(fitSint8Type.nr(), fitSint8Type);
+    baseTypesMap.insert(fitUint8Type.nr(), fitUint8Type);
+    baseTypesMap.insert(fitSint16Type.nr(), fitSint16Type);
+    baseTypesMap.insert(fitUint16Type.nr(), fitUint16Type);
+    baseTypesMap.insert(fitSint32Type.nr(), fitSint32Type);
+    baseTypesMap.insert(fitUint32Type.nr(), fitUint32Type);
+    baseTypesMap.insert(fitStringType.nr(), fitStringType);
+    baseTypesMap.insert(fitFloat32Type.nr(), fitFloat32Type);
+    baseTypesMap.insert(fitFloat64Type.nr(), fitFloat64Type);
+    baseTypesMap.insert(fitUint8zType.nr(), fitUint8zType);
+    baseTypesMap.insert(fitUint16zType.nr(), fitUint16zType);
+    baseTypesMap.insert(fitUint32zType.nr(), fitUint32zType);
+    baseTypesMap.insert(fitByteType.nr(), fitByteType);
+}
+
+CFitBaseType* CFitBaseTypeMap::get(quint8 nr)
+{
+    static bool initialized = false;
+    static QMap<quint8, CFitBaseType> baseTypes;
+    if(!initialized)
+    {
+        initialize(baseTypes);
+        initialized = true;
+    }
+
+    if (baseTypes.contains(nr & fitBaseTypeNumMask))
+    {
+        return &baseTypes[nr & fitBaseTypeNumMask];
+    }
+    return &baseTypes[eBaseTypeNrInvalid];
+}
diff --git a/src/gis/fit/defs/CFitBaseType.h b/src/gis/fit/defs/CFitBaseType.h
new file mode 100644
index 0000000..c5e9650
--- /dev/null
+++ b/src/gis/fit/defs/CFitBaseType.h
@@ -0,0 +1,103 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CFITBASETYPE_H
+#define CFITBASETYPE_H
+
+#include <QtCore>
+
+typedef enum
+{
+    eBaseTypeNrEnum = 0,
+    eBaseTypeNrSint8 = 1,
+    eBaseTypeNrUint8 = 2,
+    eBaseTypeNrSint16 = 3,
+    eBaseTypeNrUint16 = 4,
+    eBaseTypeNrSint32 = 5,
+    eBaseTypeNrUint32 = 6,
+    eBaseTypeNrString = 7,
+    eBaseTypeNrFloat32 = 8,
+    eBaseTypeNrFloat64 = 9,
+    eBaseTypeNrUint8z = 10,
+    eBaseTypeNrUint16z = 11,
+    eBaseTypeNrUint32z = 12,
+    eBaseTypeNrByte = 13,
+    eBaseTypeNrInvalid = 0xff
+} fit_base_type_nr_e;
+
+class CFitBaseType final
+{
+public:
+    CFitBaseType();
+    CFitBaseType(fit_base_type_nr_e baseTypeNr, QString name, quint8 size, std::initializer_list<quint8> invalid);
+
+    quint8 size() const;
+    fit_base_type_nr_e nr() const;
+    const quint8* invalidValueBytes() const;
+    bool isSizeUndefined() const;
+    bool isInteger() const;
+    bool isSignedInt() const;
+    bool isUnsignedInt() const;
+    bool isFloat() const;
+    bool isNumber() const;
+    bool isString() const;
+    bool isByte() const;
+    QString name() const;
+
+private:
+    // fixed size to 8, which is enough for float64
+    quint8 invalidBytes[8];
+    quint8 typeSize;
+    fit_base_type_nr_e baseTypeNr;
+    QString namestr;
+};
+
+static const CFitBaseType fitEnumType = CFitBaseType(eBaseTypeNrEnum, "Enum", sizeof(quint8), {0xFF});
+static const CFitBaseType fitSint8Type = CFitBaseType(eBaseTypeNrSint8, "Sint8", sizeof(qint8), {0x7F});
+static const CFitBaseType fitUint8Type = CFitBaseType(eBaseTypeNrUint8, "Uint8", sizeof(quint8), {0xFF});
+static const CFitBaseType fitSint16Type = CFitBaseType(eBaseTypeNrSint16, "Sint16", sizeof(qint16), {0x7F, 0xFF});
+static const CFitBaseType fitUint16Type = CFitBaseType(eBaseTypeNrUint16, "Uint16", sizeof(quint16), {0xFF, 0xFF});
+static const CFitBaseType fitSint32Type = CFitBaseType(eBaseTypeNrSint32, "Sint32", sizeof(qint32), {0x7F, 0xFF, 0xFF, 0xFF});
+static const CFitBaseType fitUint32Type = CFitBaseType(eBaseTypeNrUint32, "Uint32", sizeof(quint32), {0xFF, 0xFF, 0xFF, 0xFF});
+static const CFitBaseType fitStringType = CFitBaseType(eBaseTypeNrString, "String", 0, {0x00}); // Field is invalid if all bytes are invalid.
+static const CFitBaseType fitFloat32Type = CFitBaseType(eBaseTypeNrFloat32, "Float32", sizeof(float), {0xFF, 0xFF, 0xFF, 0xFF});
+static const CFitBaseType fitFloat64Type = CFitBaseType(eBaseTypeNrFloat64, "Float64", sizeof(double), {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF});
+
+static const CFitBaseType fitUint8zType = CFitBaseType(eBaseTypeNrUint8z, "Uint8z", sizeof(quint8), {0x00});
+static const CFitBaseType fitUint16zType = CFitBaseType(eBaseTypeNrUint16z, "Uint16z", sizeof(quint16), {0x00, 0x00});
+static const CFitBaseType fitUint32zType = CFitBaseType(eBaseTypeNrUint32z, "Uint32z", sizeof(quint32), {0x00, 0x00, 0x00, 0x00});
+static const CFitBaseType fitByteType = CFitBaseType(eBaseTypeNrByte, "Byte", 0, {0xFF}); // Field is invalid if all bytes are invalid.
+
+static const CFitBaseType fitInvalidType = CFitBaseType(eBaseTypeNrInvalid, "Invalid", 0, {0});
+
+
+class CFitBaseTypeMap
+{
+public:
+    static const quint8 fitBaseTypeNumMask =0x1F; // 0000 0000 0001 1111
+
+    /**
+     * param nr: either the "real" base type number (0 -13) or the masked base type byte.
+     */
+    static CFitBaseType* get(quint8 nr);
+private:
+    static void initialize(QMap<quint8, CFitBaseType>& baseTypesMap);
+};
+
+
+#endif //CFITBASETYPE_H
diff --git a/src/gis/fit/defs/CFitFieldProfile.cpp b/src/gis/fit/defs/CFitFieldProfile.cpp
new file mode 100644
index 0000000..0d2da02
--- /dev/null
+++ b/src/gis/fit/defs/CFitFieldProfile.cpp
@@ -0,0 +1,189 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/fit/defs/CFitBaseType.h"
+#include "gis/fit/defs/CFitFieldProfile.h"
+#include "gis/fit/defs/CFitProfile.h"
+#include "gis/fit/defs/fit_const.h"
+
+CFitFieldProfile::CFitFieldProfile(CFitProfile* parent, QString name, const CFitBaseType& baseType, quint8 fieldDefNr, qreal scale, quint16 offset, QString units)
+    : name(name), fieldDefNr(fieldDefNr), scale(scale), offset(offset), units(units),
+    baseType(&baseType), profile(parent), subfields(), components()
+{
+}
+
+CFitFieldProfile::CFitFieldProfile() : CFitFieldProfile(nullptr, "unknown", fitInvalidType, fitFieldDefNrInvalid, 0, 0, "")
+{
+}
+
+CFitFieldProfile::CFitFieldProfile(const CFitFieldProfile& copy)
+    : name(copy.name), fieldDefNr(copy.fieldDefNr), scale(copy.scale), offset(copy.offset), units(copy.units),
+    baseType(copy.baseType), profile(copy.profile), subfields(copy.subfields), components(copy.components)
+{
+}
+
+CFitFieldProfile::~CFitFieldProfile()
+{
+    qDeleteAll(subfields);
+    qDeleteAll(components);
+}
+
+void CFitFieldProfile::addSubfield(CFitSubfieldProfile* subfield)
+{
+    subfields.append(subfield);
+}
+
+void CFitFieldProfile::addComponent(CFitComponentfieldProfile* component)
+{
+    components.append(component);
+}
+
+void CFitFieldProfile::addComponent(int subfieldIndex, CFitComponentfieldProfile* field)
+{
+    subfields[subfieldIndex]->addComponent(field);
+}
+
+bool CFitFieldProfile::hasSubfields() const
+{
+    return subfields.size() > 0;
+}
+
+bool CFitFieldProfile::hasComponents() const
+{
+    return components.size() > 0;
+}
+
+QString CFitFieldProfile::getName() const
+{
+    return name;
+}
+
+quint8 CFitFieldProfile::getFieldDefNum() const
+{
+    return fieldDefNr;
+}
+
+qreal CFitFieldProfile::getScale() const
+{
+    if (scale == 0)
+    {
+        return 1;
+    }
+    return scale;
+}
+
+quint16 CFitFieldProfile::getOffset() const
+{
+    return offset;
+}
+
+bool CFitFieldProfile::hasScaleAndOffset() const
+{
+    return scale != 0 || offset != 0;
+}
+
+QString CFitFieldProfile::getUnits() const
+{
+    return units;
+}
+
+const CFitBaseType& CFitFieldProfile::getBaseType() const
+{
+    return *baseType;
+}
+
+const CFitProfile* CFitFieldProfile::getProfile() const
+{
+    return profile;
+}
+
+const QList<CFitSubfieldProfile*> CFitFieldProfile::getSubfields() const
+{
+    return subfields;
+}
+
+QList<CFitComponentfieldProfile*> CFitFieldProfile::getComponents() const
+{
+    return components;
+}
+
+
+CFitSubfieldProfile::CFitSubfieldProfile(CFitProfile* parent, QString name, const CFitBaseType& baseType, quint8 fieldDefNr, qreal scale, quint16
+                                         offset, QString units, quint8 subRefFieldDefNr, quint8 subRefFieldValue)
+    : CFitFieldProfile(parent, name, baseType, fieldDefNr, scale, offset, units),
+    refFieldDefNr(subRefFieldDefNr), refFieldValue(subRefFieldValue)
+{
+}
+
+CFitSubfieldProfile::CFitSubfieldProfile(const CFitSubfieldProfile& copy)
+    : CFitFieldProfile(copy), refFieldDefNr(copy.refFieldDefNr), refFieldValue(copy.refFieldValue)
+{
+}
+
+quint8 CFitSubfieldProfile::getReferencedFieldDefNr() const
+{
+    return refFieldDefNr;
+}
+
+quint8 CFitSubfieldProfile::getReferencedFieldValue() const
+{
+    return refFieldValue;
+}
+
+
+CFitComponentfieldProfile::CFitComponentfieldProfile(CFitProfile* parent, QString name, const CFitBaseType& baseType, quint8 fieldDefNr,
+                                                     qreal scale, quint16 offset, QString units, quint8 componentFieldDefNr, quint8 bits)
+    : CFitFieldProfile(parent, name, baseType, fieldDefNr, scale, offset, units), nrOfBits(bits), componentFieldDefNr(componentFieldDefNr)
+{
+}
+
+CFitComponentfieldProfile::CFitComponentfieldProfile(const CFitComponentfieldProfile& copy)
+    : CFitFieldProfile(copy), nrOfBits(copy.nrOfBits), componentFieldDefNr(copy.componentFieldDefNr)
+{
+}
+
+
+QString CFitComponentfieldProfile::getName() const
+{
+    return getProfile()->getField(componentFieldDefNr)->getName();
+}
+
+quint8 CFitComponentfieldProfile::getFieldDefNum() const
+{
+    return getProfile()->getField(componentFieldDefNr)->getFieldDefNum();
+}
+
+const CFitBaseType& CFitComponentfieldProfile::getBaseType() const
+{
+    return getProfile()->getField(componentFieldDefNr)->getBaseType();
+}
+
+quint8 CFitComponentfieldProfile::getBits() const
+{
+    return nrOfBits;
+}
+
+quint32 CFitComponentfieldProfile::getBitmask() const
+{
+    quint32 bitmask = 0;
+    for (int i = 0; i < nrOfBits; i++)
+    {
+        bitmask |= (1 << i);
+    }
+    return bitmask;
+}
\ No newline at end of file
diff --git a/src/gis/fit/defs/CFitFieldProfile.h b/src/gis/fit/defs/CFitFieldProfile.h
new file mode 100644
index 0000000..a8bc373
--- /dev/null
+++ b/src/gis/fit/defs/CFitFieldProfile.h
@@ -0,0 +1,111 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CFITFIELDPROFILE_H
+#define CFITFIELDPROFILE_H
+
+#include <QtCore>
+
+class CFitProfile;
+class CFitSubfieldProfile;
+class CFitComponentfieldProfile;
+class CFitBaseType;
+
+class CFitFieldProfile
+{
+public:
+    CFitFieldProfile();
+    CFitFieldProfile(const CFitFieldProfile& copy);
+    CFitFieldProfile(CFitProfile* parent, QString name, const CFitBaseType& baseType, quint8 fieldDefNr, qreal scale, quint16 offset, QString units);
+    virtual ~CFitFieldProfile();
+
+    void addSubfield(CFitSubfieldProfile* subfield);
+    void addComponent(CFitComponentfieldProfile* component);
+    void addComponent(int subfieldIndex, CFitComponentfieldProfile* field);
+
+    bool hasSubfields() const;
+    bool hasComponents() const;
+
+    virtual QString getName() const;
+    virtual quint8 getFieldDefNum() const;
+    virtual qreal getScale() const;
+    virtual quint16 getOffset() const;
+    virtual bool hasScaleAndOffset() const;
+    virtual QString getUnits() const;
+    virtual const CFitBaseType& getBaseType() const;
+    virtual QString getTyp() const { return "field"; }
+
+    const QList<CFitSubfieldProfile*> getSubfields() const;
+    QList<CFitComponentfieldProfile*> getComponents() const;
+
+    const CFitProfile* getProfile() const;
+private:
+    QString name;
+    quint8 fieldDefNr;
+    qreal scale;
+    quint16 offset;
+    QString units;
+
+    const CFitBaseType* baseType;
+    CFitProfile* profile;
+    QList<CFitSubfieldProfile*> subfields;
+    QList<CFitComponentfieldProfile*> components;
+};
+
+
+class CFitSubfieldProfile final : public CFitFieldProfile
+{
+public:
+    CFitSubfieldProfile(CFitProfile* parent, QString name, const CFitBaseType& baseType, quint8 fieldDefNr, qreal scale, quint16 offset, QString units,
+                        quint8 subRefFieldDefNr, quint8 subRefFieldValue);
+    CFitSubfieldProfile(const CFitSubfieldProfile& copy);
+    CFitSubfieldProfile() : CFitFieldProfile(), refFieldDefNr(0), refFieldValue(0) {}
+    virtual ~CFitSubfieldProfile() {}
+
+    QString getTyp() const override { return "dynamic"; }
+    quint8 getReferencedFieldDefNr() const;
+    quint8 getReferencedFieldValue() const;
+
+private:
+    quint8 refFieldDefNr;
+    quint8 refFieldValue;
+};
+
+class CFitComponentfieldProfile final : public CFitFieldProfile
+{
+public:
+    CFitComponentfieldProfile(CFitProfile* parent, QString name, const CFitBaseType& baseType, quint8 fieldDefNr, qreal scale, quint16 offset, QString units, quint8 componentFieldDefNr, quint8 bits);
+    CFitComponentfieldProfile(const CFitComponentfieldProfile& copy);
+    CFitComponentfieldProfile() : CFitFieldProfile(), nrOfBits(0), componentFieldDefNr(0) {}
+    virtual ~CFitComponentfieldProfile() {}
+
+    QString getName() const override;
+    quint8 getFieldDefNum() const override;
+    const CFitBaseType& getBaseType() const override;
+
+    QString getTyp() const override { return "component"; }
+    quint8 getBits() const;
+    quint32 getBitmask() const;
+
+private:
+
+    quint8 nrOfBits;
+    quint8 componentFieldDefNr;
+};
+
+#endif //CFITFIELDPROFILE_H
diff --git a/src/gis/fit/defs/CFitProfile.cpp b/src/gis/fit/defs/CFitProfile.cpp
new file mode 100644
index 0000000..2d3b52c
--- /dev/null
+++ b/src/gis/fit/defs/CFitProfile.cpp
@@ -0,0 +1,74 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/fit/defs/CFitFieldProfile.h"
+#include "gis/fit/defs/CFitProfile.h"
+#include "gis/fit/defs/fit_const.h"
+
+CFitProfile::CFitProfile(QString name, quint16 globalMesgNr) : name(name), globalMesgNr(globalMesgNr), fields()
+{
+}
+
+CFitProfile::CFitProfile() : CFitProfile("unknown", fitGlobalMesgNrInvalid)
+{
+}
+
+CFitProfile::CFitProfile(const CFitProfile& copy)
+    : name(copy.name), globalMesgNr(copy.globalMesgNr), fields(copy.fields)
+{
+}
+
+CFitProfile::~CFitProfile()
+{
+    qDeleteAll(fields);
+}
+
+
+const CFitFieldProfile* CFitProfile::getField(quint8 fieldDefNr) const
+{
+    if (fields.contains(fieldDefNr))
+    {
+        return fields[fieldDefNr];
+    }
+    static CFitFieldProfile dummyFieldProfile {};
+    return &dummyFieldProfile;
+}
+
+
+void CFitProfile::addField(QString name, const CFitBaseType& baseType, quint8 fieldDefNr, qreal scale, quint16 offset, QString units)
+{
+    CFitFieldProfile* field= new CFitFieldProfile(this, name, baseType, fieldDefNr, scale, offset, units);
+    fields.insert(fieldDefNr, field);
+}
+void CFitProfile::addSubfield(QString name, const CFitBaseType& baseType, quint8 fieldDefNr, qreal
+                              scale, quint16 offset, QString units, quint8 subRefFieldDefNr, quint8 subRefFieldValue)
+{
+    CFitSubfieldProfile* field = new CFitSubfieldProfile(this, name, baseType, fieldDefNr, scale, offset, units, subRefFieldDefNr, subRefFieldValue);
+    fields[fieldDefNr]->addSubfield(field);
+}
+void CFitProfile::addComponent(QString name, const CFitBaseType& baseType, quint8 fieldDefNr, qreal scale, quint16 offset, QString units, quint8 componentFieldDefNr, quint8 bits)
+{
+    CFitComponentfieldProfile* field = new CFitComponentfieldProfile(this, name, baseType, fieldDefNr, scale, offset, units, componentFieldDefNr, bits);
+    fields[fieldDefNr]->addComponent(field);
+}
+void CFitProfile::addComponent(int subfieldIndex, QString name, const CFitBaseType& baseType, quint8 fieldDefNr, qreal scale, quint16 offset, QString units, quint8 componentFieldDefNr, quint8 bits)
+{
+    CFitComponentfieldProfile* field = new  CFitComponentfieldProfile(this, name, baseType, fieldDefNr, scale, offset, units, componentFieldDefNr, bits);
+    fields[fieldDefNr]->addComponent(subfieldIndex, field);
+}
+
diff --git a/src/gis/fit/defs/CFitProfile.h b/src/gis/fit/defs/CFitProfile.h
new file mode 100644
index 0000000..ca728b3
--- /dev/null
+++ b/src/gis/fit/defs/CFitProfile.h
@@ -0,0 +1,53 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CFITPROFILE_H
+#define CFITPROFILE_H
+
+#include <QtCore>
+
+class CFitFieldProfile;
+class CFitBaseType;
+
+class CFitProfile final
+{
+public:
+    CFitProfile();
+    CFitProfile(const CFitProfile& copy);
+    CFitProfile(QString name, quint16 globalMesgNr);
+    virtual ~CFitProfile();
+
+    void addField(QString name, const CFitBaseType& baseType, quint8 fieldDefNr, qreal scale, quint16 offset, QString units);
+    void addSubfield(QString name, const CFitBaseType& baseType, quint8 fieldDefNr, qreal
+                     scale, quint16 offset, QString units, quint8 subRefFieldDefNr, quint8 subRefFieldValue);
+    void addComponent(QString name, const CFitBaseType& baseType, quint8 fieldDefNr, qreal scale, quint16 offset, QString units, quint8 componentFieldDefNr, quint8 bits);
+    void addComponent(int subfieldIndex, QString name, const CFitBaseType& baseType, quint8 fieldDefNr, qreal scale, quint16 offset, QString units, quint8 componentFieldDefNr, quint8 bits);
+
+
+    const CFitFieldProfile* getField(quint8 fieldDefNr) const;
+
+    QString getName() const { return name; }
+    quint16 getGlobalMesgNr() const { return globalMesgNr; }
+
+private:
+    QString name;
+    quint16 globalMesgNr;
+    QMap<quint8, CFitFieldProfile*> fields;
+};
+
+#endif // CFITPROFILE_H
diff --git a/src/gis/fit/defs/CFitProfileLookup.cpp b/src/gis/fit/defs/CFitProfileLookup.cpp
new file mode 100644
index 0000000..ae7180e
--- /dev/null
+++ b/src/gis/fit/defs/CFitProfileLookup.cpp
@@ -0,0 +1,1386 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "CFitProfileLookup.h"
+#include "gis/fit/defs/CFitBaseType.h"
+#include "gis/fit/defs/CFitFieldProfile.h"
+#include "gis/fit/defs/CFitProfile.h"
+#include "gis/fit/defs/fit_const.h"
+#include "gis/fit/defs/fit_enums.h"
+#include "gis/fit/defs/fit_fields.h"
+
+#include <QtWidgets>
+
+// ----------- start generated code -----------
+void initFileId(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("file_id", eMesgNumFileId);
+    f->addField("type", fitEnumType, eFileIdType, 0, 0, "");
+    f->addField("manufacturer", fitEnumType, eFileIdManufacturer, 0, 0, "");
+    f->addField("product", fitUint16Type, eFileIdProduct, 0, 0, "");
+    f->addSubfield("garmin_product", fitEnumType, eFileIdProduct, 0, 0, "", eFileIdManufacturer, eManufacturerGarmin);
+    f->addSubfield("garmin_product", fitEnumType, eFileIdProduct, 0, 0, "", eFileIdManufacturer, eManufacturerDynastream);
+    f->addSubfield("garmin_product", fitEnumType, eFileIdProduct, 0, 0, "", eFileIdManufacturer, eManufacturerDynastreamOem);
+    f->addField("serial_number", fitUint32zType, eFileIdSerialNumber, 0, 0, "");
+    f->addField("time_created", fitEnumType, eFileIdTimeCreated, 0, 0, "");
+    f->addField("number", fitUint16Type, eFileIdNumber, 0, 0, "");
+    f->addField("product_name", fitStringType, eFileIdProductName, 0, 0, "");
+    profiles.insert(eMesgNumFileId, f);
+}
+
+void initFileCreator(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("file_creator", eMesgNumFileCreator);
+    f->addField("software_version", fitUint16Type, eFileCreatorSoftwareVersion, 0, 0, "");
+    f->addField("hardware_version", fitUint8Type, eFileCreatorHardwareVersion, 0, 0, "");
+    profiles.insert(eMesgNumFileCreator, f);
+}
+
+void initTimestampCorrelation(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("timestamp_correlation", eMesgNumTimestampCorrelation);
+    f->addField("timestamp", fitEnumType, eTimestampCorrelationTimestamp, 0, 0, "s");
+    f->addField("fractional_timestamp", fitUint16Type, eTimestampCorrelationFractionalTimestamp, 32768, 0, "s");
+    f->addField("system_timestamp", fitEnumType, eTimestampCorrelationSystemTimestamp, 0, 0, "s");
+    f->addField("fractional_system_timestamp", fitUint16Type, eTimestampCorrelationFractionalSystemTimestamp, 32768, 0, "s");
+    f->addField("local_timestamp", fitEnumType, eTimestampCorrelationLocalTimestamp, 0, 0, "s");
+    f->addField("timestamp_ms", fitUint16Type, eTimestampCorrelationTimestampMs, 0, 0, "ms");
+    f->addField("system_timestamp_ms", fitUint16Type, eTimestampCorrelationSystemTimestampMs, 0, 0, "ms");
+    profiles.insert(eMesgNumTimestampCorrelation, f);
+}
+
+void initSoftware(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("software", eMesgNumSoftware);
+    f->addField("message_index", fitEnumType, eSoftwareMessageIndex, 0, 0, "");
+    f->addField("version", fitUint16Type, eSoftwareVersion, 100, 0, "");
+    f->addField("part_number", fitStringType, eSoftwarePartNumber, 0, 0, "");
+    profiles.insert(eMesgNumSoftware, f);
+}
+
+void initSlaveDevice(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("slave_device", eMesgNumSlaveDevice);
+    f->addField("manufacturer", fitEnumType, eSlaveDeviceManufacturer, 0, 0, "");
+    f->addField("product", fitUint16Type, eSlaveDeviceProduct, 0, 0, "");
+    f->addSubfield("garmin_product", fitEnumType, eSlaveDeviceProduct, 0, 0, "", eSlaveDeviceManufacturer, eManufacturerGarmin);
+    f->addSubfield("garmin_product", fitEnumType, eSlaveDeviceProduct, 0, 0, "", eSlaveDeviceManufacturer, eManufacturerDynastream);
+    f->addSubfield("garmin_product", fitEnumType, eSlaveDeviceProduct, 0, 0, "", eSlaveDeviceManufacturer, eManufacturerDynastreamOem);
+    profiles.insert(eMesgNumSlaveDevice, f);
+}
+
+void initCapabilities(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("capabilities", eMesgNumCapabilities);
+    f->addField("languages", fitUint8zType, eCapabilitiesLanguages, 0, 0, "");
+    f->addField("sports", fitEnumType, eCapabilitiesSports, 0, 0, "");
+    f->addField("workouts_supported", fitEnumType, eCapabilitiesWorkoutsSupported, 0, 0, "");
+    f->addField("connectivity_supported", fitEnumType, eCapabilitiesConnectivitySupported, 0, 0, "");
+    profiles.insert(eMesgNumCapabilities, f);
+}
+
+void initFileCapabilities(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("file_capabilities", eMesgNumFileCapabilities);
+    f->addField("message_index", fitEnumType, eFileCapabilitiesMessageIndex, 0, 0, "");
+    f->addField("type", fitEnumType, eFileCapabilitiesType, 0, 0, "");
+    f->addField("flags", fitEnumType, eFileCapabilitiesFlags, 0, 0, "");
+    f->addField("directory", fitStringType, eFileCapabilitiesDirectory, 0, 0, "");
+    f->addField("max_count", fitUint16Type, eFileCapabilitiesMaxCount, 0, 0, "");
+    f->addField("max_size", fitUint32Type, eFileCapabilitiesMaxSize, 0, 0, "bytes");
+    profiles.insert(eMesgNumFileCapabilities, f);
+}
+
+void initMesgCapabilities(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("mesg_capabilities", eMesgNumMesgCapabilities);
+    f->addField("message_index", fitEnumType, eMesgCapabilitiesMessageIndex, 0, 0, "");
+    f->addField("file", fitEnumType, eMesgCapabilitiesFile, 0, 0, "");
+    f->addField("mesg_num", fitEnumType, eMesgCapabilitiesMesgNum, 0, 0, "");
+    f->addField("count_type", fitEnumType, eMesgCapabilitiesCountType, 0, 0, "");
+    f->addField("count", fitUint16Type, eMesgCapabilitiesCount, 0, 0, "");
+    f->addSubfield("num_per_file", fitUint16Type, eMesgCapabilitiesCount, 0, 0, "", eMesgCapabilitiesCountType, eMesgCountNumPerFile);
+    f->addSubfield("max_per_file", fitUint16Type, eMesgCapabilitiesCount, 0, 0, "", eMesgCapabilitiesCountType, eMesgCountMaxPerFile);
+    f->addSubfield("max_per_file_type", fitUint16Type, eMesgCapabilitiesCount, 0, 0, "", eMesgCapabilitiesCountType, eMesgCountMaxPerFileType);
+    profiles.insert(eMesgNumMesgCapabilities, f);
+}
+
+void initFieldCapabilities(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("field_capabilities", eMesgNumFieldCapabilities);
+    f->addField("message_index", fitEnumType, eFieldCapabilitiesMessageIndex, 0, 0, "");
+    f->addField("file", fitEnumType, eFieldCapabilitiesFile, 0, 0, "");
+    f->addField("mesg_num", fitEnumType, eFieldCapabilitiesMesgNum, 0, 0, "");
+    f->addField("field_num", fitUint8Type, eFieldCapabilitiesFieldNum, 0, 0, "");
+    f->addField("count", fitUint16Type, eFieldCapabilitiesCount, 0, 0, "");
+    profiles.insert(eMesgNumFieldCapabilities, f);
+}
+
+void initDeviceSettings(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("device_settings", eMesgNumDeviceSettings);
+    f->addField("active_time_zone", fitUint8Type, eDeviceSettingsActiveTimeZone, 0, 0, "");
+    f->addField("utc_offset", fitUint32Type, eDeviceSettingsUtcOffset, 0, 0, "");
+    f->addField("time_zone_offset", fitSint8Type, eDeviceSettingsTimeZoneOffset, 4, 0, "hr");
+    profiles.insert(eMesgNumDeviceSettings, f);
+}
+
+void initUserProfile(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("user_profile", eMesgNumUserProfile);
+    f->addField("message_index", fitEnumType, eUserProfileMessageIndex, 0, 0, "");
+    f->addField("friendly_name", fitStringType, eUserProfileFriendlyName, 0, 0, "");
+    f->addField("gender", fitEnumType, eUserProfileGender, 0, 0, "");
+    f->addField("age", fitUint8Type, eUserProfileAge, 0, 0, "years");
+    f->addField("height", fitUint8Type, eUserProfileHeight, 100, 0, "m");
+    f->addField("weight", fitUint16Type, eUserProfileWeight, 10, 0, "kg");
+    f->addField("language", fitEnumType, eUserProfileLanguage, 0, 0, "");
+    f->addField("elev_setting", fitEnumType, eUserProfileElevSetting, 0, 0, "");
+    f->addField("weight_setting", fitEnumType, eUserProfileWeightSetting, 0, 0, "");
+    f->addField("resting_heart_rate", fitUint8Type, eUserProfileRestingHeartRate, 0, 0, "bpm");
+    f->addField("default_max_running_heart_rate", fitUint8Type, eUserProfileDefaultMaxRunningHeartRate, 0, 0, "bpm");
+    f->addField("default_max_biking_heart_rate", fitUint8Type, eUserProfileDefaultMaxBikingHeartRate, 0, 0, "bpm");
+    f->addField("default_max_heart_rate", fitUint8Type, eUserProfileDefaultMaxHeartRate, 0, 0, "bpm");
+    f->addField("hr_setting", fitEnumType, eUserProfileHrSetting, 0, 0, "");
+    f->addField("speed_setting", fitEnumType, eUserProfileSpeedSetting, 0, 0, "");
+    f->addField("dist_setting", fitEnumType, eUserProfileDistSetting, 0, 0, "");
+    f->addField("power_setting", fitEnumType, eUserProfilePowerSetting, 0, 0, "");
+    f->addField("activity_class", fitEnumType, eUserProfileActivityClass, 0, 0, "");
+    f->addField("position_setting", fitEnumType, eUserProfilePositionSetting, 0, 0, "");
+    f->addField("temperature_setting", fitEnumType, eUserProfileTemperatureSetting, 0, 0, "");
+    f->addField("local_id", fitEnumType, eUserProfileLocalId, 0, 0, "");
+    f->addField("global_id", fitByteType, eUserProfileGlobalId, 0, 0, "");
+    f->addField("height_setting", fitEnumType, eUserProfileHeightSetting, 0, 0, "");
+    profiles.insert(eMesgNumUserProfile, f);
+}
+
+void initHrmProfile(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("hrm_profile", eMesgNumHrmProfile);
+    f->addField("message_index", fitEnumType, eHrmProfileMessageIndex, 0, 0, "");
+    f->addField("enabled", fitEnumType, eHrmProfileEnabled, 0, 0, "");
+    f->addField("hrm_ant_id", fitUint16zType, eHrmProfileHrmAntId, 0, 0, "");
+    f->addField("log_hrv", fitEnumType, eHrmProfileLogHrv, 0, 0, "");
+    f->addField("hrm_ant_id_trans_type", fitUint8zType, eHrmProfileHrmAntIdTransType, 0, 0, "");
+    profiles.insert(eMesgNumHrmProfile, f);
+}
+
+void initSdmProfile(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("sdm_profile", eMesgNumSdmProfile);
+    f->addField("message_index", fitEnumType, eSdmProfileMessageIndex, 0, 0, "");
+    f->addField("enabled", fitEnumType, eSdmProfileEnabled, 0, 0, "");
+    f->addField("sdm_ant_id", fitUint16zType, eSdmProfileSdmAntId, 0, 0, "");
+    f->addField("sdm_cal_factor", fitUint16Type, eSdmProfileSdmCalFactor, 10, 0, "%");
+    f->addField("odometer", fitUint32Type, eSdmProfileOdometer, 100, 0, "m");
+    f->addField("speed_source", fitEnumType, eSdmProfileSpeedSource, 0, 0, "");
+    f->addField("sdm_ant_id_trans_type", fitUint8zType, eSdmProfileSdmAntIdTransType, 0, 0, "");
+    f->addField("odometer_rollover", fitUint8Type, eSdmProfileOdometerRollover, 0, 0, "");
+    profiles.insert(eMesgNumSdmProfile, f);
+}
+
+void initBikeProfile(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("bike_profile", eMesgNumBikeProfile);
+    f->addField("message_index", fitEnumType, eBikeProfileMessageIndex, 0, 0, "");
+    f->addField("name", fitStringType, eBikeProfileName, 0, 0, "");
+    f->addField("sport", fitEnumType, eBikeProfileSport, 0, 0, "");
+    f->addField("sub_sport", fitEnumType, eBikeProfileSubSport, 0, 0, "");
+    f->addField("odometer", fitUint32Type, eBikeProfileOdometer, 100, 0, "m");
+    f->addField("bike_spd_ant_id", fitUint16zType, eBikeProfileBikeSpdAntId, 0, 0, "");
+    f->addField("bike_cad_ant_id", fitUint16zType, eBikeProfileBikeCadAntId, 0, 0, "");
+    f->addField("bike_spdcad_ant_id", fitUint16zType, eBikeProfileBikeSpdcadAntId, 0, 0, "");
+    f->addField("bike_power_ant_id", fitUint16zType, eBikeProfileBikePowerAntId, 0, 0, "");
+    f->addField("custom_wheelsize", fitUint16Type, eBikeProfileCustomWheelsize, 1000, 0, "m");
+    f->addField("auto_wheelsize", fitUint16Type, eBikeProfileAutoWheelsize, 1000, 0, "m");
+    f->addField("bike_weight", fitUint16Type, eBikeProfileBikeWeight, 10, 0, "kg");
+    f->addField("power_cal_factor", fitUint16Type, eBikeProfilePowerCalFactor, 10, 0, "%");
+    f->addField("auto_wheel_cal", fitEnumType, eBikeProfileAutoWheelCal, 0, 0, "");
+    f->addField("auto_power_zero", fitEnumType, eBikeProfileAutoPowerZero, 0, 0, "");
+    f->addField("id", fitUint8Type, eBikeProfileId, 0, 0, "");
+    f->addField("spd_enabled", fitEnumType, eBikeProfileSpdEnabled, 0, 0, "");
+    f->addField("cad_enabled", fitEnumType, eBikeProfileCadEnabled, 0, 0, "");
+    f->addField("spdcad_enabled", fitEnumType, eBikeProfileSpdcadEnabled, 0, 0, "");
+    f->addField("power_enabled", fitEnumType, eBikeProfilePowerEnabled, 0, 0, "");
+    f->addField("crank_length", fitUint8Type, eBikeProfileCrankLength, 2, -110, "mm");
+    f->addField("enabled", fitEnumType, eBikeProfileEnabled, 0, 0, "");
+    f->addField("bike_spd_ant_id_trans_type", fitUint8zType, eBikeProfileBikeSpdAntIdTransType, 0, 0, "");
+    f->addField("bike_cad_ant_id_trans_type", fitUint8zType, eBikeProfileBikeCadAntIdTransType, 0, 0, "");
+    f->addField("bike_spdcad_ant_id_trans_type", fitUint8zType, eBikeProfileBikeSpdcadAntIdTransType, 0, 0, "");
+    f->addField("bike_power_ant_id_trans_type", fitUint8zType, eBikeProfileBikePowerAntIdTransType, 0, 0, "");
+    f->addField("odometer_rollover", fitUint8Type, eBikeProfileOdometerRollover, 0, 0, "");
+    f->addField("front_gear_num", fitUint8zType, eBikeProfileFrontGearNum, 0, 0, "");
+    f->addField("front_gear", fitUint8zType, eBikeProfileFrontGear, 0, 0, "");
+    f->addField("rear_gear_num", fitUint8zType, eBikeProfileRearGearNum, 0, 0, "");
+    f->addField("rear_gear", fitUint8zType, eBikeProfileRearGear, 0, 0, "");
+    f->addField("shimano_di2_enabled", fitEnumType, eBikeProfileShimanoDi2Enabled, 0, 0, "");
+    profiles.insert(eMesgNumBikeProfile, f);
+}
+
+void initZonesTarget(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("zones_target", eMesgNumZonesTarget);
+    f->addField("max_heart_rate", fitUint8Type, eZonesTargetMaxHeartRate, 0, 0, "");
+    f->addField("threshold_heart_rate", fitUint8Type, eZonesTargetThresholdHeartRate, 0, 0, "");
+    f->addField("functional_threshold_power", fitUint16Type, eZonesTargetFunctionalThresholdPower, 0, 0, "");
+    f->addField("hr_calc_type", fitEnumType, eZonesTargetHrCalcType, 0, 0, "");
+    f->addField("pwr_calc_type", fitEnumType, eZonesTargetPwrCalcType, 0, 0, "");
+    profiles.insert(eMesgNumZonesTarget, f);
+}
+
+void initSport(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("sport", eMesgNumSport);
+    f->addField("sport", fitEnumType, eSportSport, 0, 0, "");
+    f->addField("sub_sport", fitEnumType, eSportSubSport, 0, 0, "");
+    f->addField("name", fitStringType, eSportName, 0, 0, "");
+    profiles.insert(eMesgNumSport, f);
+}
+
+void initHrZone(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("hr_zone", eMesgNumHrZone);
+    f->addField("message_index", fitEnumType, eHrZoneMessageIndex, 0, 0, "");
+    f->addField("high_bpm", fitUint8Type, eHrZoneHighBpm, 0, 0, "bpm");
+    f->addField("name", fitStringType, eHrZoneName, 0, 0, "");
+    profiles.insert(eMesgNumHrZone, f);
+}
+
+void initSpeedZone(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("speed_zone", eMesgNumSpeedZone);
+    f->addField("message_index", fitEnumType, eSpeedZoneMessageIndex, 0, 0, "");
+    f->addField("high_value", fitUint16Type, eSpeedZoneHighValue, 1000, 0, "m/s");
+    f->addField("name", fitStringType, eSpeedZoneName, 0, 0, "");
+    profiles.insert(eMesgNumSpeedZone, f);
+}
+
+void initCadenceZone(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("cadence_zone", eMesgNumCadenceZone);
+    f->addField("message_index", fitEnumType, eCadenceZoneMessageIndex, 0, 0, "");
+    f->addField("high_value", fitUint8Type, eCadenceZoneHighValue, 0, 0, "rpm");
+    f->addField("name", fitStringType, eCadenceZoneName, 0, 0, "");
+    profiles.insert(eMesgNumCadenceZone, f);
+}
+
+void initPowerZone(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("power_zone", eMesgNumPowerZone);
+    f->addField("message_index", fitEnumType, ePowerZoneMessageIndex, 0, 0, "");
+    f->addField("high_value", fitUint16Type, ePowerZoneHighValue, 0, 0, "watts");
+    f->addField("name", fitStringType, ePowerZoneName, 0, 0, "");
+    profiles.insert(eMesgNumPowerZone, f);
+}
+
+void initMetZone(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("met_zone", eMesgNumMetZone);
+    f->addField("message_index", fitEnumType, eMetZoneMessageIndex, 0, 0, "");
+    f->addField("high_bpm", fitUint8Type, eMetZoneHighBpm, 0, 0, "");
+    f->addField("calories", fitUint16Type, eMetZoneCalories, 10, 0, "kcal / min");
+    f->addField("fat_calories", fitUint8Type, eMetZoneFatCalories, 10, 0, "kcal / min");
+    profiles.insert(eMesgNumMetZone, f);
+}
+
+void initGoal(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("goal", eMesgNumGoal);
+    f->addField("message_index", fitEnumType, eGoalMessageIndex, 0, 0, "");
+    f->addField("sport", fitEnumType, eGoalSport, 0, 0, "");
+    f->addField("sub_sport", fitEnumType, eGoalSubSport, 0, 0, "");
+    f->addField("start_date", fitEnumType, eGoalStartDate, 0, 0, "");
+    f->addField("end_date", fitEnumType, eGoalEndDate, 0, 0, "");
+    f->addField("type", fitEnumType, eGoalType, 0, 0, "");
+    f->addField("value", fitUint32Type, eGoalValue, 0, 0, "");
+    f->addField("repeat", fitEnumType, eGoalRepeat, 0, 0, "");
+    f->addField("target_value", fitUint32Type, eGoalTargetValue, 0, 0, "");
+    f->addField("recurrence", fitEnumType, eGoalRecurrence, 0, 0, "");
+    f->addField("recurrence_value", fitUint16Type, eGoalRecurrenceValue, 0, 0, "");
+    f->addField("enabled", fitEnumType, eGoalEnabled, 0, 0, "");
+    profiles.insert(eMesgNumGoal, f);
+}
+
+void initActivity(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("activity", eMesgNumActivity);
+    f->addField("timestamp", fitEnumType, eActivityTimestamp, 0, 0, "");
+    f->addField("total_timer_time", fitUint32Type, eActivityTotalTimerTime, 1000, 0, "s");
+    f->addField("num_sessions", fitUint16Type, eActivityNumSessions, 0, 0, "");
+    f->addField("type", fitEnumType, eActivityType, 0, 0, "");
+    f->addField("event", fitEnumType, eActivityEvent, 0, 0, "");
+    f->addField("event_type", fitEnumType, eActivityEventType, 0, 0, "");
+    f->addField("local_timestamp", fitEnumType, eActivityLocalTimestamp, 0, 0, "");
+    f->addField("event_group", fitUint8Type, eActivityEventGroup, 0, 0, "");
+    profiles.insert(eMesgNumActivity, f);
+}
+
+void initSession(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("session", eMesgNumSession);
+    f->addField("message_index", fitEnumType, eSessionMessageIndex, 0, 0, "");
+    f->addField("timestamp", fitEnumType, eSessionTimestamp, 0, 0, "s");
+    f->addField("event", fitEnumType, eSessionEvent, 0, 0, "");
+    f->addField("event_type", fitEnumType, eSessionEventType, 0, 0, "");
+    f->addField("start_time", fitEnumType, eSessionStartTime, 0, 0, "");
+    f->addField("start_position_lat", fitSint32Type, eSessionStartPositionLat, 0, 0, "semicircles");
+    f->addField("start_position_long", fitSint32Type, eSessionStartPositionLong, 0, 0, "semicircles");
+    f->addField("sport", fitEnumType, eSessionSport, 0, 0, "");
+    f->addField("sub_sport", fitEnumType, eSessionSubSport, 0, 0, "");
+    f->addField("total_elapsed_time", fitUint32Type, eSessionTotalElapsedTime, 1000, 0, "s");
+    f->addField("total_timer_time", fitUint32Type, eSessionTotalTimerTime, 1000, 0, "s");
+    f->addField("total_distance", fitUint32Type, eSessionTotalDistance, 100, 0, "m");
+    f->addField("total_cycles", fitUint32Type, eSessionTotalCycles, 0, 0, "cycles");
+    f->addSubfield("total_strides", fitUint32Type, eSessionTotalCycles, 0, 0, "strides", eSessionSport, eSportRunning);
+    f->addSubfield("total_strides", fitUint32Type, eSessionTotalCycles, 0, 0, "", eSessionSport, eSportWalking);
+    f->addField("total_calories", fitUint16Type, eSessionTotalCalories, 0, 0, "kcal");
+    f->addField("total_fat_calories", fitUint16Type, eSessionTotalFatCalories, 0, 0, "kcal");
+    f->addField("avg_speed", fitUint16Type, eSessionAvgSpeed, 0, 0, "");
+    f->addComponent("avg_speed", fitUint16Type, eSessionAvgSpeed, 1000, 0, "m/s", eSessionEnhancedAvgSpeed, 16);
+    f->addField("max_speed", fitUint16Type, eSessionMaxSpeed, 0, 0, "");
+    f->addComponent("max_speed", fitUint16Type, eSessionMaxSpeed, 1000, 0, "m/s", eSessionEnhancedMaxSpeed, 16);
+    f->addField("avg_heart_rate", fitUint8Type, eSessionAvgHeartRate, 0, 0, "bpm");
+    f->addField("max_heart_rate", fitUint8Type, eSessionMaxHeartRate, 0, 0, "bpm");
+    f->addField("avg_cadence", fitUint8Type, eSessionAvgCadence, 0, 0, "rpm");
+    f->addSubfield("avg_running_cadence", fitUint8Type, eSessionAvgCadence, 0, 0, "strides/min", eSessionSport, eSportRunning);
+    f->addField("max_cadence", fitUint8Type, eSessionMaxCadence, 0, 0, "rpm");
+    f->addSubfield("max_running_cadence", fitUint8Type, eSessionMaxCadence, 0, 0, "strides/min", eSessionSport, eSportRunning);
+    f->addField("avg_power", fitUint16Type, eSessionAvgPower, 0, 0, "watts");
+    f->addField("max_power", fitUint16Type, eSessionMaxPower, 0, 0, "watts");
+    f->addField("total_ascent", fitUint16Type, eSessionTotalAscent, 0, 0, "m");
+    f->addField("total_descent", fitUint16Type, eSessionTotalDescent, 0, 0, "m");
+    f->addField("total_training_effect", fitUint8Type, eSessionTotalTrainingEffect, 10, 0, "");
+    f->addField("first_lap_index", fitUint16Type, eSessionFirstLapIndex, 0, 0, "");
+    f->addField("num_laps", fitUint16Type, eSessionNumLaps, 0, 0, "");
+    f->addField("event_group", fitUint8Type, eSessionEventGroup, 0, 0, "");
+    f->addField("trigger", fitEnumType, eSessionTrigger, 0, 0, "");
+    f->addField("nec_lat", fitSint32Type, eSessionNecLat, 0, 0, "semicircles");
+    f->addField("nec_long", fitSint32Type, eSessionNecLong, 0, 0, "semicircles");
+    f->addField("swc_lat", fitSint32Type, eSessionSwcLat, 0, 0, "semicircles");
+    f->addField("swc_long", fitSint32Type, eSessionSwcLong, 0, 0, "semicircles");
+    f->addField("normalized_power", fitUint16Type, eSessionNormalizedPower, 0, 0, "watts");
+    f->addField("training_stress_score", fitUint16Type, eSessionTrainingStressScore, 10, 0, "tss");
+    f->addField("intensity_factor", fitUint16Type, eSessionIntensityFactor, 1000, 0, "if");
+    f->addField("left_right_balance", fitEnumType, eSessionLeftRightBalance, 0, 0, "");
+    f->addField("avg_stroke_count", fitUint32Type, eSessionAvgStrokeCount, 10, 0, "strokes/lap");
+    f->addField("avg_stroke_distance", fitUint16Type, eSessionAvgStrokeDistance, 100, 0, "m");
+    f->addField("swim_stroke", fitEnumType, eSessionSwimStroke, 0, 0, "swim_stroke");
+    f->addField("pool_length", fitUint16Type, eSessionPoolLength, 100, 0, "m");
+    f->addField("threshold_power", fitUint16Type, eSessionThresholdPower, 0, 0, "watts");
+    f->addField("pool_length_unit", fitEnumType, eSessionPoolLengthUnit, 0, 0, "");
+    f->addField("num_active_lengths", fitUint16Type, eSessionNumActiveLengths, 0, 0, "lengths");
+    f->addField("total_work", fitUint32Type, eSessionTotalWork, 0, 0, "J");
+    f->addField("avg_altitude", fitUint16Type, eSessionAvgAltitude, 0, 0, "");
+    f->addComponent("avg_altitude", fitUint16Type, eSessionAvgAltitude, 5, 500, "m", eSessionEnhancedAvgAltitude, 16);
+    f->addField("max_altitude", fitUint16Type, eSessionMaxAltitude, 0, 0, "");
+    f->addComponent("max_altitude", fitUint16Type, eSessionMaxAltitude, 5, 500, "m", eSessionEnhancedMaxAltitude, 16);
+    f->addField("gps_accuracy", fitUint8Type, eSessionGpsAccuracy, 0, 0, "m");
+    f->addField("avg_grade", fitSint16Type, eSessionAvgGrade, 100, 0, "%");
+    f->addField("avg_pos_grade", fitSint16Type, eSessionAvgPosGrade, 100, 0, "%");
+    f->addField("avg_neg_grade", fitSint16Type, eSessionAvgNegGrade, 100, 0, "%");
+    f->addField("max_pos_grade", fitSint16Type, eSessionMaxPosGrade, 100, 0, "%");
+    f->addField("max_neg_grade", fitSint16Type, eSessionMaxNegGrade, 100, 0, "%");
+    f->addField("avg_temperature", fitSint8Type, eSessionAvgTemperature, 0, 0, "C");
+    f->addField("max_temperature", fitSint8Type, eSessionMaxTemperature, 0, 0, "C");
+    f->addField("total_moving_time", fitUint32Type, eSessionTotalMovingTime, 1000, 0, "s");
+    f->addField("avg_pos_vertical_speed", fitSint16Type, eSessionAvgPosVerticalSpeed, 1000, 0, "m/s");
+    f->addField("avg_neg_vertical_speed", fitSint16Type, eSessionAvgNegVerticalSpeed, 1000, 0, "m/s");
+    f->addField("max_pos_vertical_speed", fitSint16Type, eSessionMaxPosVerticalSpeed, 1000, 0, "m/s");
+    f->addField("max_neg_vertical_speed", fitSint16Type, eSessionMaxNegVerticalSpeed, 1000, 0, "m/s");
+    f->addField("min_heart_rate", fitUint8Type, eSessionMinHeartRate, 0, 0, "bpm");
+    f->addField("time_in_hr_zone", fitUint32Type, eSessionTimeInHrZone, 1000, 0, "s");
+    f->addField("time_in_speed_zone", fitUint32Type, eSessionTimeInSpeedZone, 1000, 0, "s");
+    f->addField("time_in_cadence_zone", fitUint32Type, eSessionTimeInCadenceZone, 1000, 0, "s");
+    f->addField("time_in_power_zone", fitUint32Type, eSessionTimeInPowerZone, 1000, 0, "s");
+    f->addField("avg_lap_time", fitUint32Type, eSessionAvgLapTime, 1000, 0, "s");
+    f->addField("best_lap_index", fitUint16Type, eSessionBestLapIndex, 0, 0, "");
+    f->addField("min_altitude", fitUint16Type, eSessionMinAltitude, 0, 0, "");
+    f->addComponent("min_altitude", fitUint16Type, eSessionMinAltitude, 5, 500, "m", eSessionEnhancedMinAltitude, 16);
+    f->addField("player_score", fitUint16Type, eSessionPlayerScore, 0, 0, "");
+    f->addField("opponent_score", fitUint16Type, eSessionOpponentScore, 0, 0, "");
+    f->addField("opponent_name", fitStringType, eSessionOpponentName, 0, 0, "");
+    f->addField("stroke_count", fitUint16Type, eSessionStrokeCount, 0, 0, "counts");
+    f->addField("zone_count", fitUint16Type, eSessionZoneCount, 0, 0, "counts");
+    f->addField("max_ball_speed", fitUint16Type, eSessionMaxBallSpeed, 100, 0, "m/s");
+    f->addField("avg_ball_speed", fitUint16Type, eSessionAvgBallSpeed, 100, 0, "m/s");
+    f->addField("avg_vertical_oscillation", fitUint16Type, eSessionAvgVerticalOscillation, 10, 0, "mm");
+    f->addField("avg_stance_time_percent", fitUint16Type, eSessionAvgStanceTimePercent, 100, 0, "percent");
+    f->addField("avg_stance_time", fitUint16Type, eSessionAvgStanceTime, 10, 0, "ms");
+    f->addField("avg_fractional_cadence", fitUint8Type, eSessionAvgFractionalCadence, 128, 0, "rpm");
+    f->addField("max_fractional_cadence", fitUint8Type, eSessionMaxFractionalCadence, 128, 0, "rpm");
+    f->addField("total_fractional_cycles", fitUint8Type, eSessionTotalFractionalCycles, 128, 0, "cycles");
+    f->addField("avg_total_hemoglobin_conc", fitUint16Type, eSessionAvgTotalHemoglobinConc, 100, 0, "g/dL");
+    f->addField("min_total_hemoglobin_conc", fitUint16Type, eSessionMinTotalHemoglobinConc, 100, 0, "g/dL");
+    f->addField("max_total_hemoglobin_conc", fitUint16Type, eSessionMaxTotalHemoglobinConc, 100, 0, "g/dL");
+    f->addField("avg_saturated_hemoglobin_percent", fitUint16Type, eSessionAvgSaturatedHemoglobinPercent, 10, 0, "%");
+    f->addField("min_saturated_hemoglobin_percent", fitUint16Type, eSessionMinSaturatedHemoglobinPercent, 10, 0, "%");
+    f->addField("max_saturated_hemoglobin_percent", fitUint16Type, eSessionMaxSaturatedHemoglobinPercent, 10, 0, "%");
+    f->addField("avg_left_torque_effectiveness", fitUint8Type, eSessionAvgLeftTorqueEffectiveness, 2, 0, "percent");
+    f->addField("avg_right_torque_effectiveness", fitUint8Type, eSessionAvgRightTorqueEffectiveness, 2, 0, "percent");
+    f->addField("avg_left_pedal_smoothness", fitUint8Type, eSessionAvgLeftPedalSmoothness, 2, 0, "percent");
+    f->addField("avg_right_pedal_smoothness", fitUint8Type, eSessionAvgRightPedalSmoothness, 2, 0, "percent");
+    f->addField("avg_combined_pedal_smoothness", fitUint8Type, eSessionAvgCombinedPedalSmoothness, 2, 0, "percent");
+    f->addField("sport_index", fitUint8Type, eSessionSportIndex, 0, 0, "");
+    f->addField("time_standing", fitUint32Type, eSessionTimeStanding, 1000, 0, "s");
+    f->addField("stand_count", fitUint16Type, eSessionStandCount, 0, 0, "");
+    f->addField("avg_left_pco", fitSint8Type, eSessionAvgLeftPco, 0, 0, "mm");
+    f->addField("avg_right_pco", fitSint8Type, eSessionAvgRightPco, 0, 0, "mm");
+    f->addField("avg_left_power_phase", fitUint8Type, eSessionAvgLeftPowerPhase, 0.7111111, 0, "degrees");
+    f->addField("avg_left_power_phase_peak", fitUint8Type, eSessionAvgLeftPowerPhasePeak, 0.7111111, 0, "degrees");
+    f->addField("avg_right_power_phase", fitUint8Type, eSessionAvgRightPowerPhase, 0.7111111, 0, "degrees");
+    f->addField("avg_right_power_phase_peak", fitUint8Type, eSessionAvgRightPowerPhasePeak, 0.7111111, 0, "degrees");
+    f->addField("avg_power_position", fitUint16Type, eSessionAvgPowerPosition, 0, 0, "watts");
+    f->addField("max_power_position", fitUint16Type, eSessionMaxPowerPosition, 0, 0, "watts");
+    f->addField("avg_cadence_position", fitUint8Type, eSessionAvgCadencePosition, 0, 0, "rpm");
+    f->addField("max_cadence_position", fitUint8Type, eSessionMaxCadencePosition, 0, 0, "rpm");
+    f->addField("enhanced_avg_speed", fitUint32Type, eSessionEnhancedAvgSpeed, 1000, 0, "m/s");
+    f->addField("enhanced_max_speed", fitUint32Type, eSessionEnhancedMaxSpeed, 1000, 0, "m/s");
+    f->addField("enhanced_avg_altitude", fitUint32Type, eSessionEnhancedAvgAltitude, 5, 500, "m");
+    f->addField("enhanced_min_altitude", fitUint32Type, eSessionEnhancedMinAltitude, 5, 500, "m");
+    f->addField("enhanced_max_altitude", fitUint32Type, eSessionEnhancedMaxAltitude, 5, 500, "m");
+    f->addField("avg_lev_motor_power", fitUint16Type, eSessionAvgLevMotorPower, 0, 0, "watts");
+    f->addField("max_lev_motor_power", fitUint16Type, eSessionMaxLevMotorPower, 0, 0, "watts");
+    f->addField("lev_battery_consumption", fitUint8Type, eSessionLevBatteryConsumption, 2, 0, "percent");
+    profiles.insert(eMesgNumSession, f);
+}
+
+void initLap(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("lap", eMesgNumLap);
+    f->addField("message_index", fitEnumType, eLapMessageIndex, 0, 0, "");
+    f->addField("timestamp", fitEnumType, eLapTimestamp, 0, 0, "s");
+    f->addField("event", fitEnumType, eLapEvent, 0, 0, "");
+    f->addField("event_type", fitEnumType, eLapEventType, 0, 0, "");
+    f->addField("start_time", fitEnumType, eLapStartTime, 0, 0, "");
+    f->addField("start_position_lat", fitSint32Type, eLapStartPositionLat, 0, 0, "semicircles");
+    f->addField("start_position_long", fitSint32Type, eLapStartPositionLong, 0, 0, "semicircles");
+    f->addField("end_position_lat", fitSint32Type, eLapEndPositionLat, 0, 0, "semicircles");
+    f->addField("end_position_long", fitSint32Type, eLapEndPositionLong, 0, 0, "semicircles");
+    f->addField("total_elapsed_time", fitUint32Type, eLapTotalElapsedTime, 1000, 0, "s");
+    f->addField("total_timer_time", fitUint32Type, eLapTotalTimerTime, 1000, 0, "s");
+    f->addField("total_distance", fitUint32Type, eLapTotalDistance, 100, 0, "m");
+    f->addField("total_cycles", fitUint32Type, eLapTotalCycles, 0, 0, "cycles");
+    f->addSubfield("total_strides", fitUint32Type, eLapTotalCycles, 0, 0, "strides", eLapSport, eSportRunning);
+    f->addSubfield("total_strides", fitUint32Type, eLapTotalCycles, 0, 0, "", eLapSport, eSportWalking);
+    f->addField("total_calories", fitUint16Type, eLapTotalCalories, 0, 0, "kcal");
+    f->addField("total_fat_calories", fitUint16Type, eLapTotalFatCalories, 0, 0, "kcal");
+    f->addField("avg_speed", fitUint16Type, eLapAvgSpeed, 0, 0, "");
+    f->addComponent("avg_speed", fitUint16Type, eLapAvgSpeed, 1000, 0, "m/s", eLapEnhancedAvgSpeed, 16);
+    f->addField("max_speed", fitUint16Type, eLapMaxSpeed, 0, 0, "");
+    f->addComponent("max_speed", fitUint16Type, eLapMaxSpeed, 1000, 0, "m/s", eLapEnhancedMaxSpeed, 16);
+    f->addField("avg_heart_rate", fitUint8Type, eLapAvgHeartRate, 0, 0, "bpm");
+    f->addField("max_heart_rate", fitUint8Type, eLapMaxHeartRate, 0, 0, "bpm");
+    f->addField("avg_cadence", fitUint8Type, eLapAvgCadence, 0, 0, "rpm");
+    f->addSubfield("avg_running_cadence", fitUint8Type, eLapAvgCadence, 0, 0, "strides/min", eLapSport, eSportRunning);
+    f->addField("max_cadence", fitUint8Type, eLapMaxCadence, 0, 0, "rpm");
+    f->addSubfield("max_running_cadence", fitUint8Type, eLapMaxCadence, 0, 0, "strides/min", eLapSport, eSportRunning);
+    f->addField("avg_power", fitUint16Type, eLapAvgPower, 0, 0, "watts");
+    f->addField("max_power", fitUint16Type, eLapMaxPower, 0, 0, "watts");
+    f->addField("total_ascent", fitUint16Type, eLapTotalAscent, 0, 0, "m");
+    f->addField("total_descent", fitUint16Type, eLapTotalDescent, 0, 0, "m");
+    f->addField("intensity", fitEnumType, eLapIntensity, 0, 0, "");
+    f->addField("lap_trigger", fitEnumType, eLapLapTrigger, 0, 0, "");
+    f->addField("sport", fitEnumType, eLapSport, 0, 0, "");
+    f->addField("event_group", fitUint8Type, eLapEventGroup, 0, 0, "");
+    f->addField("num_lengths", fitUint16Type, eLapNumLengths, 0, 0, "lengths");
+    f->addField("normalized_power", fitUint16Type, eLapNormalizedPower, 0, 0, "watts");
+    f->addField("left_right_balance", fitEnumType, eLapLeftRightBalance, 0, 0, "");
+    f->addField("first_length_index", fitUint16Type, eLapFirstLengthIndex, 0, 0, "");
+    f->addField("avg_stroke_distance", fitUint16Type, eLapAvgStrokeDistance, 100, 0, "m");
+    f->addField("swim_stroke", fitEnumType, eLapSwimStroke, 0, 0, "");
+    f->addField("sub_sport", fitEnumType, eLapSubSport, 0, 0, "");
+    f->addField("num_active_lengths", fitUint16Type, eLapNumActiveLengths, 0, 0, "lengths");
+    f->addField("total_work", fitUint32Type, eLapTotalWork, 0, 0, "J");
+    f->addField("avg_altitude", fitUint16Type, eLapAvgAltitude, 0, 0, "");
+    f->addComponent("avg_altitude", fitUint16Type, eLapAvgAltitude, 5, 500, "m", eLapEnhancedAvgAltitude, 16);
+    f->addField("max_altitude", fitUint16Type, eLapMaxAltitude, 0, 0, "");
+    f->addComponent("max_altitude", fitUint16Type, eLapMaxAltitude, 5, 500, "m", eLapEnhancedMaxAltitude, 16);
+    f->addField("gps_accuracy", fitUint8Type, eLapGpsAccuracy, 0, 0, "m");
+    f->addField("avg_grade", fitSint16Type, eLapAvgGrade, 100, 0, "%");
+    f->addField("avg_pos_grade", fitSint16Type, eLapAvgPosGrade, 100, 0, "%");
+    f->addField("avg_neg_grade", fitSint16Type, eLapAvgNegGrade, 100, 0, "%");
+    f->addField("max_pos_grade", fitSint16Type, eLapMaxPosGrade, 100, 0, "%");
+    f->addField("max_neg_grade", fitSint16Type, eLapMaxNegGrade, 100, 0, "%");
+    f->addField("avg_temperature", fitSint8Type, eLapAvgTemperature, 0, 0, "C");
+    f->addField("max_temperature", fitSint8Type, eLapMaxTemperature, 0, 0, "C");
+    f->addField("total_moving_time", fitUint32Type, eLapTotalMovingTime, 1000, 0, "s");
+    f->addField("avg_pos_vertical_speed", fitSint16Type, eLapAvgPosVerticalSpeed, 1000, 0, "m/s");
+    f->addField("avg_neg_vertical_speed", fitSint16Type, eLapAvgNegVerticalSpeed, 1000, 0, "m/s");
+    f->addField("max_pos_vertical_speed", fitSint16Type, eLapMaxPosVerticalSpeed, 1000, 0, "m/s");
+    f->addField("max_neg_vertical_speed", fitSint16Type, eLapMaxNegVerticalSpeed, 1000, 0, "m/s");
+    f->addField("time_in_hr_zone", fitUint32Type, eLapTimeInHrZone, 1000, 0, "s");
+    f->addField("time_in_speed_zone", fitUint32Type, eLapTimeInSpeedZone, 1000, 0, "s");
+    f->addField("time_in_cadence_zone", fitUint32Type, eLapTimeInCadenceZone, 1000, 0, "s");
+    f->addField("time_in_power_zone", fitUint32Type, eLapTimeInPowerZone, 1000, 0, "s");
+    f->addField("repetition_num", fitUint16Type, eLapRepetitionNum, 0, 0, "");
+    f->addField("min_altitude", fitUint16Type, eLapMinAltitude, 0, 0, "");
+    f->addComponent("min_altitude", fitUint16Type, eLapMinAltitude, 5, 500, "m", eLapEnhancedMinAltitude, 16);
+    f->addField("min_heart_rate", fitUint8Type, eLapMinHeartRate, 0, 0, "bpm");
+    f->addField("wkt_step_index", fitEnumType, eLapWktStepIndex, 0, 0, "");
+    f->addField("opponent_score", fitUint16Type, eLapOpponentScore, 0, 0, "");
+    f->addField("stroke_count", fitUint16Type, eLapStrokeCount, 0, 0, "counts");
+    f->addField("zone_count", fitUint16Type, eLapZoneCount, 0, 0, "counts");
+    f->addField("avg_vertical_oscillation", fitUint16Type, eLapAvgVerticalOscillation, 10, 0, "mm");
+    f->addField("avg_stance_time_percent", fitUint16Type, eLapAvgStanceTimePercent, 100, 0, "percent");
+    f->addField("avg_stance_time", fitUint16Type, eLapAvgStanceTime, 10, 0, "ms");
+    f->addField("avg_fractional_cadence", fitUint8Type, eLapAvgFractionalCadence, 128, 0, "rpm");
+    f->addField("max_fractional_cadence", fitUint8Type, eLapMaxFractionalCadence, 128, 0, "rpm");
+    f->addField("total_fractional_cycles", fitUint8Type, eLapTotalFractionalCycles, 128, 0, "cycles");
+    f->addField("player_score", fitUint16Type, eLapPlayerScore, 0, 0, "");
+    f->addField("avg_total_hemoglobin_conc", fitUint16Type, eLapAvgTotalHemoglobinConc, 100, 0, "g/dL");
+    f->addField("min_total_hemoglobin_conc", fitUint16Type, eLapMinTotalHemoglobinConc, 100, 0, "g/dL");
+    f->addField("max_total_hemoglobin_conc", fitUint16Type, eLapMaxTotalHemoglobinConc, 100, 0, "g/dL");
+    f->addField("avg_saturated_hemoglobin_percent", fitUint16Type, eLapAvgSaturatedHemoglobinPercent, 10, 0, "%");
+    f->addField("min_saturated_hemoglobin_percent", fitUint16Type, eLapMinSaturatedHemoglobinPercent, 10, 0, "%");
+    f->addField("max_saturated_hemoglobin_percent", fitUint16Type, eLapMaxSaturatedHemoglobinPercent, 10, 0, "%");
+    f->addField("avg_left_torque_effectiveness", fitUint8Type, eLapAvgLeftTorqueEffectiveness, 2, 0, "percent");
+    f->addField("avg_right_torque_effectiveness", fitUint8Type, eLapAvgRightTorqueEffectiveness, 2, 0, "percent");
+    f->addField("avg_left_pedal_smoothness", fitUint8Type, eLapAvgLeftPedalSmoothness, 2, 0, "percent");
+    f->addField("avg_right_pedal_smoothness", fitUint8Type, eLapAvgRightPedalSmoothness, 2, 0, "percent");
+    f->addField("avg_combined_pedal_smoothness", fitUint8Type, eLapAvgCombinedPedalSmoothness, 2, 0, "percent");
+    f->addField("time_standing", fitUint32Type, eLapTimeStanding, 1000, 0, "s");
+    f->addField("stand_count", fitUint16Type, eLapStandCount, 0, 0, "");
+    f->addField("avg_left_pco", fitSint8Type, eLapAvgLeftPco, 0, 0, "mm");
+    f->addField("avg_right_pco", fitSint8Type, eLapAvgRightPco, 0, 0, "mm");
+    f->addField("avg_left_power_phase", fitUint8Type, eLapAvgLeftPowerPhase, 0.7111111, 0, "degrees");
+    f->addField("avg_left_power_phase_peak", fitUint8Type, eLapAvgLeftPowerPhasePeak, 0.7111111, 0, "degrees");
+    f->addField("avg_right_power_phase", fitUint8Type, eLapAvgRightPowerPhase, 0.7111111, 0, "degrees");
+    f->addField("avg_right_power_phase_peak", fitUint8Type, eLapAvgRightPowerPhasePeak, 0.7111111, 0, "degrees");
+    f->addField("avg_power_position", fitUint16Type, eLapAvgPowerPosition, 0, 0, "watts");
+    f->addField("max_power_position", fitUint16Type, eLapMaxPowerPosition, 0, 0, "watts");
+    f->addField("avg_cadence_position", fitUint8Type, eLapAvgCadencePosition, 0, 0, "rpm");
+    f->addField("max_cadence_position", fitUint8Type, eLapMaxCadencePosition, 0, 0, "rpm");
+    f->addField("enhanced_avg_speed", fitUint32Type, eLapEnhancedAvgSpeed, 1000, 0, "m/s");
+    f->addField("enhanced_max_speed", fitUint32Type, eLapEnhancedMaxSpeed, 1000, 0, "m/s");
+    f->addField("enhanced_avg_altitude", fitUint32Type, eLapEnhancedAvgAltitude, 5, 500, "m");
+    f->addField("enhanced_min_altitude", fitUint32Type, eLapEnhancedMinAltitude, 5, 500, "m");
+    f->addField("enhanced_max_altitude", fitUint32Type, eLapEnhancedMaxAltitude, 5, 500, "m");
+    f->addField("avg_lev_motor_power", fitUint16Type, eLapAvgLevMotorPower, 0, 0, "watts");
+    f->addField("max_lev_motor_power", fitUint16Type, eLapMaxLevMotorPower, 0, 0, "watts");
+    f->addField("lev_battery_consumption", fitUint8Type, eLapLevBatteryConsumption, 2, 0, "percent");
+    profiles.insert(eMesgNumLap, f);
+}
+
+void initLength(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("length", eMesgNumLength);
+    f->addField("message_index", fitEnumType, eLengthMessageIndex, 0, 0, "");
+    f->addField("timestamp", fitEnumType, eLengthTimestamp, 0, 0, "");
+    f->addField("event", fitEnumType, eLengthEvent, 0, 0, "");
+    f->addField("event_type", fitEnumType, eLengthEventType, 0, 0, "");
+    f->addField("start_time", fitEnumType, eLengthStartTime, 0, 0, "");
+    f->addField("total_elapsed_time", fitUint32Type, eLengthTotalElapsedTime, 1000, 0, "s");
+    f->addField("total_timer_time", fitUint32Type, eLengthTotalTimerTime, 1000, 0, "s");
+    f->addField("total_strokes", fitUint16Type, eLengthTotalStrokes, 0, 0, "strokes");
+    f->addField("avg_speed", fitUint16Type, eLengthAvgSpeed, 1000, 0, "m/s");
+    f->addField("swim_stroke", fitEnumType, eLengthSwimStroke, 0, 0, "swim_stroke");
+    f->addField("avg_swimming_cadence", fitUint8Type, eLengthAvgSwimmingCadence, 0, 0, "strokes/min");
+    f->addField("event_group", fitUint8Type, eLengthEventGroup, 0, 0, "");
+    f->addField("total_calories", fitUint16Type, eLengthTotalCalories, 0, 0, "kcal");
+    f->addField("length_type", fitEnumType, eLengthLengthType, 0, 0, "");
+    f->addField("player_score", fitUint16Type, eLengthPlayerScore, 0, 0, "");
+    f->addField("opponent_score", fitUint16Type, eLengthOpponentScore, 0, 0, "");
+    f->addField("stroke_count", fitUint16Type, eLengthStrokeCount, 0, 0, "counts");
+    f->addField("zone_count", fitUint16Type, eLengthZoneCount, 0, 0, "counts");
+    profiles.insert(eMesgNumLength, f);
+}
+
+void initRecord(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("record", eMesgNumRecord);
+    f->addField("timestamp", fitEnumType, eRecordTimestamp, 0, 0, "s");
+    f->addField("position_lat", fitSint32Type, eRecordPositionLat, 0, 0, "semicircles");
+    f->addField("position_long", fitSint32Type, eRecordPositionLong, 0, 0, "semicircles");
+    f->addField("altitude", fitUint16Type, eRecordAltitude, 0, 0, "");
+    f->addComponent("altitude", fitUint16Type, eRecordAltitude, 5, 500, "m", eRecordEnhancedAltitude, 16);
+    f->addField("heart_rate", fitUint8Type, eRecordHeartRate, 0, 0, "bpm");
+    f->addField("cadence", fitUint8Type, eRecordCadence, 0, 0, "rpm");
+    f->addField("distance", fitUint32Type, eRecordDistance, 100, 0, "m");
+    f->addField("speed", fitUint16Type, eRecordSpeed, 0, 0, "");
+    f->addComponent("speed", fitUint16Type, eRecordSpeed, 1000, 0, "m/s", eRecordEnhancedSpeed, 16);
+    f->addField("power", fitUint16Type, eRecordPower, 0, 0, "watts");
+    f->addField("compressed_speed_distance", fitByteType, eRecordCompressedSpeedDistance, 0, 0, "");
+    f->addComponent("compressed_speed_distance", fitByteType, eRecordCompressedSpeedDistance, 100, 0, "m/s", eRecordSpeed, 12);
+    f->addComponent("compressed_speed_distance", fitByteType, eRecordCompressedSpeedDistance, 16, 0, "m", eRecordDistance, 12);
+    f->addField("grade", fitSint16Type, eRecordGrade, 100, 0, "%");
+    f->addField("resistance", fitUint8Type, eRecordResistance, 0, 0, "");
+    f->addField("time_from_course", fitSint32Type, eRecordTimeFromCourse, 1000, 0, "s");
+    f->addField("cycle_length", fitUint8Type, eRecordCycleLength, 100, 0, "m");
+    f->addField("temperature", fitSint8Type, eRecordTemperature, 0, 0, "C");
+    f->addField("speed_1s", fitUint8Type, eRecordSpeed1s, 16, 0, "m/s");
+    f->addField("cycles", fitUint8Type, eRecordCycles, 0, 0, "");
+    f->addComponent("cycles", fitUint8Type, eRecordCycles, 0, 0, "cycles", eRecordTotalCycles, 8);
+    f->addField("total_cycles", fitUint32Type, eRecordTotalCycles, 0, 0, "cycles");
+    f->addField("compressed_accumulated_power", fitUint16Type, eRecordCompressedAccumulatedPower, 0, 0, "");
+    f->addComponent("compressed_accumulated_power", fitUint16Type, eRecordCompressedAccumulatedPower, 0, 0, "watts", eRecordAccumulatedPower, 16);
+    f->addField("accumulated_power", fitUint32Type, eRecordAccumulatedPower, 0, 0, "watts");
+    f->addField("left_right_balance", fitEnumType, eRecordLeftRightBalance, 0, 0, "");
+    f->addField("gps_accuracy", fitUint8Type, eRecordGpsAccuracy, 0, 0, "m");
+    f->addField("vertical_speed", fitSint16Type, eRecordVerticalSpeed, 1000, 0, "m/s");
+    f->addField("calories", fitUint16Type, eRecordCalories, 0, 0, "kcal");
+    f->addField("vertical_oscillation", fitUint16Type, eRecordVerticalOscillation, 10, 0, "mm");
+    f->addField("stance_time_percent", fitUint16Type, eRecordStanceTimePercent, 100, 0, "percent");
+    f->addField("stance_time", fitUint16Type, eRecordStanceTime, 10, 0, "ms");
+    f->addField("activity_type", fitEnumType, eRecordActivityType, 0, 0, "");
+    f->addField("left_torque_effectiveness", fitUint8Type, eRecordLeftTorqueEffectiveness, 2, 0, "percent");
+    f->addField("right_torque_effectiveness", fitUint8Type, eRecordRightTorqueEffectiveness, 2, 0, "percent");
+    f->addField("left_pedal_smoothness", fitUint8Type, eRecordLeftPedalSmoothness, 2, 0, "percent");
+    f->addField("right_pedal_smoothness", fitUint8Type, eRecordRightPedalSmoothness, 2, 0, "percent");
+    f->addField("combined_pedal_smoothness", fitUint8Type, eRecordCombinedPedalSmoothness, 2, 0, "percent");
+    f->addField("time128", fitUint8Type, eRecordTime128, 128, 0, "s");
+    f->addField("stroke_type", fitEnumType, eRecordStrokeType, 0, 0, "");
+    f->addField("zone", fitUint8Type, eRecordZone, 0, 0, "");
+    f->addField("ball_speed", fitUint16Type, eRecordBallSpeed, 100, 0, "m/s");
+    f->addField("cadence256", fitUint16Type, eRecordCadence256, 256, 0, "rpm");
+    f->addField("fractional_cadence", fitUint8Type, eRecordFractionalCadence, 128, 0, "rpm");
+    f->addField("total_hemoglobin_conc", fitUint16Type, eRecordTotalHemoglobinConc, 100, 0, "g/dL");
+    f->addField("total_hemoglobin_conc_min", fitUint16Type, eRecordTotalHemoglobinConcMin, 100, 0, "g/dL");
+    f->addField("total_hemoglobin_conc_max", fitUint16Type, eRecordTotalHemoglobinConcMax, 100, 0, "g/dL");
+    f->addField("saturated_hemoglobin_percent", fitUint16Type, eRecordSaturatedHemoglobinPercent, 10, 0, "%");
+    f->addField("saturated_hemoglobin_percent_min", fitUint16Type, eRecordSaturatedHemoglobinPercentMin, 10, 0, "%");
+    f->addField("saturated_hemoglobin_percent_max", fitUint16Type, eRecordSaturatedHemoglobinPercentMax, 10, 0, "%");
+    f->addField("device_index", fitEnumType, eRecordDeviceIndex, 0, 0, "");
+    f->addField("left_pco", fitSint8Type, eRecordLeftPco, 0, 0, "mm");
+    f->addField("right_pco", fitSint8Type, eRecordRightPco, 0, 0, "mm");
+    f->addField("left_power_phase", fitUint8Type, eRecordLeftPowerPhase, 0.7111111, 0, "degrees");
+    f->addField("left_power_phase_peak", fitUint8Type, eRecordLeftPowerPhasePeak, 0.7111111, 0, "degrees");
+    f->addField("right_power_phase", fitUint8Type, eRecordRightPowerPhase, 0.7111111, 0, "degrees");
+    f->addField("right_power_phase_peak", fitUint8Type, eRecordRightPowerPhasePeak, 0.7111111, 0, "degrees");
+    f->addField("enhanced_speed", fitUint32Type, eRecordEnhancedSpeed, 1000, 0, "m/s");
+    f->addField("enhanced_altitude", fitUint32Type, eRecordEnhancedAltitude, 5, 500, "m");
+    f->addField("battery_soc", fitUint8Type, eRecordBatterySoc, 2, 0, "percent");
+    f->addField("motor_power", fitUint16Type, eRecordMotorPower, 0, 0, "watts");
+    profiles.insert(eMesgNumRecord, f);
+}
+
+void initEvent(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("event", eMesgNumEvent);
+    f->addField("timestamp", fitEnumType, eEventTimestamp, 0, 0, "s");
+    f->addField("event", fitEnumType, eEventEvent, 0, 0, "");
+    f->addField("event_type", fitEnumType, eEventEventType, 0, 0, "");
+    f->addField("data16", fitUint16Type, eEventData16, 0, 0, "");
+    f->addComponent("data16", fitUint16Type, eEventData16, 0, 0, "", eEventData, 16);
+    f->addField("data", fitUint32Type, eEventData, 0, 0, "");
+    f->addSubfield("timer_trigger", fitEnumType, eEventData, 0, 0, "", eEventEvent, eEventTimer);
+    f->addSubfield("course_point_index", fitEnumType, eEventData, 0, 0, "", eEventEvent, eEventCoursePoint);
+    f->addSubfield("battery_level", fitUint16Type, eEventData, 1000, 0, "V", eEventEvent, eEventBattery);
+    f->addSubfield("virtual_partner_speed", fitUint16Type, eEventData, 1000, 0, "m/s", eEventEvent, eEventVirtualPartnerPace);
+    f->addSubfield("hr_high_alert", fitUint8Type, eEventData, 0, 0, "bpm", eEventEvent, eEventHrHighAlert);
+    f->addSubfield("hr_low_alert", fitUint8Type, eEventData, 0, 0, "bpm", eEventEvent, eEventHrLowAlert);
+    f->addSubfield("speed_high_alert", fitUint32Type, eEventData, 1000, 0, "m/s", eEventEvent, eEventSpeedHighAlert);
+    f->addSubfield("speed_low_alert", fitUint32Type, eEventData, 1000, 0, "m/s", eEventEvent, eEventSpeedLowAlert);
+    f->addSubfield("cad_high_alert", fitUint16Type, eEventData, 0, 0, "rpm", eEventEvent, eEventCadHighAlert);
+    f->addSubfield("cad_low_alert", fitUint16Type, eEventData, 0, 0, "rpm", eEventEvent, eEventCadLowAlert);
+    f->addSubfield("power_high_alert", fitUint16Type, eEventData, 0, 0, "watts", eEventEvent, eEventPowerHighAlert);
+    f->addSubfield("power_low_alert", fitUint16Type, eEventData, 0, 0, "watts", eEventEvent, eEventPowerLowAlert);
+    f->addSubfield("time_duration_alert", fitUint32Type, eEventData, 1000, 0, "s", eEventEvent, eEventTimeDurationAlert);
+    f->addSubfield("distance_duration_alert", fitUint32Type, eEventData, 100, 0, "m", eEventEvent, eEventDistanceDurationAlert);
+    f->addSubfield("calorie_duration_alert", fitUint32Type, eEventData, 0, 0, "calories", eEventEvent, eEventCalorieDurationAlert);
+    f->addSubfield("fitness_equipment_state", fitEnumType, eEventData, 0, 0, "", eEventEvent, eEventFitnessEquipment);
+    f->addSubfield("sport_point", fitUint32Type, eEventData, 0, 0, "", eEventEvent, eEventSportPoint);
+    f->addComponent(16, "sport_point", fitUint32Type, eEventData, 1, 0, "", eEventScore, 16);
+    f->addComponent(16, "sport_point", fitUint32Type, eEventData, 1, 0, "", eEventOpponentScore, 16);
+    f->addSubfield("gear_change_data", fitUint32Type, eEventData, 0, 0, "", eEventEvent, eEventFrontGearChange);
+    f->addSubfield("gear_change_data", fitUint32Type, eEventData, 0, 0, "", eEventEvent, eEventRearGearChange);
+    f->addComponent(18, "gear_change_data", fitUint32Type, eEventData, 1, 0, "", eEventRearGearNum, 8);
+    f->addComponent(18, "gear_change_data", fitUint32Type, eEventData, 1, 0, "", eEventRearGear, 8);
+    f->addComponent(18, "gear_change_data", fitUint32Type, eEventData, 1, 0, "", eEventFrontGearNum, 8);
+    f->addComponent(18, "gear_change_data", fitUint32Type, eEventData, 1, 0, "", eEventFrontGear, 8);
+    f->addSubfield("rider_position", fitEnumType, eEventData, 0, 0, "", eEventEvent, eEventRiderPositionChange);
+    f->addSubfield("comm_timeout", fitEnumType, eEventData, 0, 0, "", eEventEvent, eEventCommTimeout);
+    f->addField("event_group", fitUint8Type, eEventEventGroup, 0, 0, "");
+    f->addField("score", fitUint16Type, eEventScore, 0, 0, "");
+    f->addField("opponent_score", fitUint16Type, eEventOpponentScore, 0, 0, "");
+    f->addField("front_gear_num", fitUint8zType, eEventFrontGearNum, 0, 0, "");
+    f->addField("front_gear", fitUint8zType, eEventFrontGear, 0, 0, "");
+    f->addField("rear_gear_num", fitUint8zType, eEventRearGearNum, 0, 0, "");
+    f->addField("rear_gear", fitUint8zType, eEventRearGear, 0, 0, "");
+    f->addField("device_index", fitEnumType, eEventDeviceIndex, 0, 0, "");
+    profiles.insert(eMesgNumEvent, f);
+}
+
+void initDeviceInfo(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("device_info", eMesgNumDeviceInfo);
+    f->addField("timestamp", fitEnumType, eDeviceInfoTimestamp, 0, 0, "s");
+    f->addField("device_index", fitEnumType, eDeviceInfoDeviceIndex, 0, 0, "");
+    f->addField("device_type", fitUint8Type, eDeviceInfoDeviceType, 0, 0, "");
+    f->addSubfield("antplus_device_type", fitEnumType, eDeviceInfoDeviceType, 0, 0, "", eDeviceInfoSourceType, eSourceTypeAntplus);
+    f->addSubfield("ant_device_type", fitUint8Type, eDeviceInfoDeviceType, 0, 0, "", eDeviceInfoSourceType, eSourceTypeAnt);
+    f->addField("manufacturer", fitEnumType, eDeviceInfoManufacturer, 0, 0, "");
+    f->addField("serial_number", fitUint32zType, eDeviceInfoSerialNumber, 0, 0, "");
+    f->addField("product", fitUint16Type, eDeviceInfoProduct, 0, 0, "");
+    f->addSubfield("garmin_product", fitEnumType, eDeviceInfoProduct, 0, 0, "", eDeviceInfoManufacturer, eManufacturerGarmin);
+    f->addSubfield("garmin_product", fitEnumType, eDeviceInfoProduct, 0, 0, "", eDeviceInfoManufacturer, eManufacturerDynastream);
+    f->addSubfield("garmin_product", fitEnumType, eDeviceInfoProduct, 0, 0, "", eDeviceInfoManufacturer, eManufacturerDynastreamOem);
+    f->addField("software_version", fitUint16Type, eDeviceInfoSoftwareVersion, 100, 0, "");
+    f->addField("hardware_version", fitUint8Type, eDeviceInfoHardwareVersion, 0, 0, "");
+    f->addField("cum_operating_time", fitUint32Type, eDeviceInfoCumOperatingTime, 0, 0, "s");
+    f->addField("battery_voltage", fitUint16Type, eDeviceInfoBatteryVoltage, 256, 0, "V");
+    f->addField("battery_status", fitEnumType, eDeviceInfoBatteryStatus, 0, 0, "");
+    f->addField("sensor_position", fitEnumType, eDeviceInfoSensorPosition, 0, 0, "");
+    f->addField("descriptor", fitStringType, eDeviceInfoDescriptor, 0, 0, "");
+    f->addField("ant_transmission_type", fitUint8zType, eDeviceInfoAntTransmissionType, 0, 0, "");
+    f->addField("ant_device_number", fitUint16zType, eDeviceInfoAntDeviceNumber, 0, 0, "");
+    f->addField("ant_network", fitEnumType, eDeviceInfoAntNetwork, 0, 0, "");
+    f->addField("source_type", fitEnumType, eDeviceInfoSourceType, 0, 0, "");
+    f->addField("product_name", fitStringType, eDeviceInfoProductName, 0, 0, "");
+    profiles.insert(eMesgNumDeviceInfo, f);
+}
+
+void initTrainingFile(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("training_file", eMesgNumTrainingFile);
+    f->addField("timestamp", fitEnumType, eTrainingFileTimestamp, 0, 0, "");
+    f->addField("type", fitEnumType, eTrainingFileType, 0, 0, "");
+    f->addField("manufacturer", fitEnumType, eTrainingFileManufacturer, 0, 0, "");
+    f->addField("product", fitUint16Type, eTrainingFileProduct, 0, 0, "");
+    f->addSubfield("garmin_product", fitEnumType, eTrainingFileProduct, 0, 0, "", eTrainingFileManufacturer, eManufacturerGarmin);
+    f->addSubfield("garmin_product", fitEnumType, eTrainingFileProduct, 0, 0, "", eTrainingFileManufacturer, eManufacturerDynastream);
+    f->addSubfield("garmin_product", fitEnumType, eTrainingFileProduct, 0, 0, "", eTrainingFileManufacturer, eManufacturerDynastreamOem);
+    f->addField("serial_number", fitUint32zType, eTrainingFileSerialNumber, 0, 0, "");
+    f->addField("time_created", fitEnumType, eTrainingFileTimeCreated, 0, 0, "");
+    profiles.insert(eMesgNumTrainingFile, f);
+}
+
+void initHrv(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("hrv", eMesgNumHrv);
+    f->addField("time", fitUint16Type, eHrvTime, 1000, 0, "s");
+    profiles.insert(eMesgNumHrv, f);
+}
+
+void initCameraEvent(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("camera_event", eMesgNumCameraEvent);
+    f->addField("timestamp", fitEnumType, eCameraEventTimestamp, 0, 0, "s");
+    f->addField("timestamp_ms", fitUint16Type, eCameraEventTimestampMs, 0, 0, "ms");
+    f->addField("camera_event_type", fitEnumType, eCameraEventCameraEventType, 0, 0, "");
+    f->addField("camera_file_uuid", fitStringType, eCameraEventCameraFileUuid, 0, 0, "");
+    f->addField("camera_orientation", fitEnumType, eCameraEventCameraOrientation, 0, 0, "");
+    profiles.insert(eMesgNumCameraEvent, f);
+}
+
+void initGyroscopeData(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("gyroscope_data", eMesgNumGyroscopeData);
+    f->addField("timestamp", fitEnumType, eGyroscopeDataTimestamp, 0, 0, "s");
+    f->addField("timestamp_ms", fitUint16Type, eGyroscopeDataTimestampMs, 0, 0, "ms");
+    f->addField("sample_time_offset", fitUint16Type, eGyroscopeDataSampleTimeOffset, 0, 0, "ms");
+    f->addField("gyro_x", fitUint16Type, eGyroscopeDataGyroX, 0, 0, "counts");
+    f->addField("gyro_y", fitUint16Type, eGyroscopeDataGyroY, 0, 0, "counts");
+    f->addField("gyro_z", fitUint16Type, eGyroscopeDataGyroZ, 0, 0, "counts");
+    f->addField("calibrated_gyro_x", fitFloat32Type, eGyroscopeDataCalibratedGyroX, 0, 0, "deg/s");
+    f->addField("calibrated_gyro_y", fitFloat32Type, eGyroscopeDataCalibratedGyroY, 0, 0, "deg/s");
+    f->addField("calibrated_gyro_z", fitFloat32Type, eGyroscopeDataCalibratedGyroZ, 0, 0, "deg/s");
+    profiles.insert(eMesgNumGyroscopeData, f);
+}
+
+void initAccelerometerData(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("accelerometer_data", eMesgNumAccelerometerData);
+    f->addField("timestamp", fitEnumType, eAccelerometerDataTimestamp, 0, 0, "s");
+    f->addField("timestamp_ms", fitUint16Type, eAccelerometerDataTimestampMs, 0, 0, "ms");
+    f->addField("sample_time_offset", fitUint16Type, eAccelerometerDataSampleTimeOffset, 0, 0, "ms");
+    f->addField("accel_x", fitUint16Type, eAccelerometerDataAccelX, 0, 0, "counts");
+    f->addField("accel_y", fitUint16Type, eAccelerometerDataAccelY, 0, 0, "counts");
+    f->addField("accel_z", fitUint16Type, eAccelerometerDataAccelZ, 0, 0, "counts");
+    f->addField("calibrated_accel_x", fitFloat32Type, eAccelerometerDataCalibratedAccelX, 0, 0, "g");
+    f->addField("calibrated_accel_y", fitFloat32Type, eAccelerometerDataCalibratedAccelY, 0, 0, "g");
+    f->addField("calibrated_accel_z", fitFloat32Type, eAccelerometerDataCalibratedAccelZ, 0, 0, "g");
+    profiles.insert(eMesgNumAccelerometerData, f);
+}
+
+void initThreeDSensorCalibration(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("three_d_sensor_calibration", eMesgNumThreeDSensorCalibration);
+    f->addField("timestamp", fitEnumType, eThreeDSensorCalibrationTimestamp, 0, 0, "s");
+    f->addField("sensor_type", fitEnumType, eThreeDSensorCalibrationSensorType, 0, 0, "");
+    f->addField("calibration_factor", fitUint32Type, eThreeDSensorCalibrationCalibrationFactor, 0, 0, "");
+    f->addSubfield("accel_cal_factor", fitUint32Type, eThreeDSensorCalibrationCalibrationFactor, 0, 0, "g", eThreeDSensorCalibrationSensorType, eSensorTypeAccelerometer);
+    f->addSubfield("gyro_cal_factor", fitUint32Type, eThreeDSensorCalibrationCalibrationFactor, 0, 0, "deg/s", eThreeDSensorCalibrationSensorType, eSensorTypeGyroscope);
+    f->addField("calibration_divisor", fitUint32Type, eThreeDSensorCalibrationCalibrationDivisor, 0, 0, "counts");
+    f->addField("level_shift", fitUint32Type, eThreeDSensorCalibrationLevelShift, 0, 0, "");
+    f->addField("offset_cal", fitSint32Type, eThreeDSensorCalibrationOffsetCal, 0, 0, "");
+    f->addField("orientation_matrix", fitSint32Type, eThreeDSensorCalibrationOrientationMatrix, 65535, 0, "");
+    profiles.insert(eMesgNumThreeDSensorCalibration, f);
+}
+
+void initVideoFrame(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("video_frame", eMesgNumVideoFrame);
+    f->addField("timestamp", fitEnumType, eVideoFrameTimestamp, 0, 0, "s");
+    f->addField("timestamp_ms", fitUint16Type, eVideoFrameTimestampMs, 0, 0, "ms");
+    f->addField("frame_number", fitUint32Type, eVideoFrameFrameNumber, 0, 0, "");
+    profiles.insert(eMesgNumVideoFrame, f);
+}
+
+void initObdiiData(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("obdii_data", eMesgNumObdiiData);
+    f->addField("timestamp", fitEnumType, eObdiiDataTimestamp, 0, 0, "s");
+    f->addField("timestamp_ms", fitUint16Type, eObdiiDataTimestampMs, 0, 0, "ms");
+    f->addField("time_offset", fitUint16Type, eObdiiDataTimeOffset, 0, 0, "ms");
+    f->addField("pid", fitByteType, eObdiiDataPid, 0, 0, "");
+    f->addField("raw_data", fitByteType, eObdiiDataRawData, 0, 0, "");
+    f->addField("pid_data_size", fitUint8Type, eObdiiDataPidDataSize, 0, 0, "");
+    f->addField("system_time", fitUint32Type, eObdiiDataSystemTime, 0, 0, "");
+    f->addField("start_timestamp", fitEnumType, eObdiiDataStartTimestamp, 0, 0, "");
+    f->addField("start_timestamp_ms", fitUint16Type, eObdiiDataStartTimestampMs, 0, 0, "ms");
+    profiles.insert(eMesgNumObdiiData, f);
+}
+
+void initNmeaSentence(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("nmea_sentence", eMesgNumNmeaSentence);
+    f->addField("timestamp", fitEnumType, eNmeaSentenceTimestamp, 0, 0, "s");
+    f->addField("timestamp_ms", fitUint16Type, eNmeaSentenceTimestampMs, 0, 0, "ms");
+    f->addField("sentence", fitStringType, eNmeaSentenceSentence, 0, 0, "");
+    profiles.insert(eMesgNumNmeaSentence, f);
+}
+
+void initAviationAttitude(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("aviation_attitude", eMesgNumAviationAttitude);
+    f->addField("timestamp", fitEnumType, eAviationAttitudeTimestamp, 0, 0, "s");
+    f->addField("timestamp_ms", fitUint16Type, eAviationAttitudeTimestampMs, 0, 0, "ms");
+    f->addField("system_time", fitUint32Type, eAviationAttitudeSystemTime, 0, 0, "ms");
+    f->addField("pitch", fitSint16Type, eAviationAttitudePitch, 10430.38, 0, "radians");
+    f->addField("roll", fitSint16Type, eAviationAttitudeRoll, 10430.38, 0, "radians");
+    f->addField("accel_lateral", fitSint16Type, eAviationAttitudeAccelLateral, 100, 0, "m/s^2");
+    f->addField("accel_normal", fitSint16Type, eAviationAttitudeAccelNormal, 100, 0, "m/s^2");
+    f->addField("turn_rate", fitSint16Type, eAviationAttitudeTurnRate, 1024, 0, "radians/second");
+    f->addField("stage", fitEnumType, eAviationAttitudeStage, 0, 0, "");
+    f->addField("attitude_stage_complete", fitUint8Type, eAviationAttitudeAttitudeStageComplete, 0, 0, "%");
+    f->addField("track", fitUint16Type, eAviationAttitudeTrack, 10430.38, 0, "radians");
+    f->addField("validity", fitEnumType, eAviationAttitudeValidity, 0, 0, "");
+    profiles.insert(eMesgNumAviationAttitude, f);
+}
+
+void initVideo(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("video", eMesgNumVideo);
+    f->addField("url", fitStringType, eVideoUrl, 0, 0, "");
+    f->addField("hosting_provider", fitStringType, eVideoHostingProvider, 0, 0, "");
+    f->addField("duration", fitUint32Type, eVideoDuration, 0, 0, "ms");
+    profiles.insert(eMesgNumVideo, f);
+}
+
+void initVideoTitle(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("video_title", eMesgNumVideoTitle);
+    f->addField("message_index", fitEnumType, eVideoTitleMessageIndex, 0, 0, "");
+    f->addField("message_count", fitUint16Type, eVideoTitleMessageCount, 0, 0, "");
+    f->addField("text", fitStringType, eVideoTitleText, 0, 0, "");
+    profiles.insert(eMesgNumVideoTitle, f);
+}
+
+void initVideoDescription(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("video_description", eMesgNumVideoDescription);
+    f->addField("message_index", fitEnumType, eVideoDescriptionMessageIndex, 0, 0, "");
+    f->addField("message_count", fitUint16Type, eVideoDescriptionMessageCount, 0, 0, "");
+    f->addField("text", fitStringType, eVideoDescriptionText, 0, 0, "");
+    profiles.insert(eMesgNumVideoDescription, f);
+}
+
+void initVideoClip(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("video_clip", eMesgNumVideoClip);
+    f->addField("clip_number", fitUint16Type, eVideoClipClipNumber, 0, 0, "");
+    f->addField("start_timestamp", fitEnumType, eVideoClipStartTimestamp, 0, 0, "");
+    f->addField("start_timestamp_ms", fitUint16Type, eVideoClipStartTimestampMs, 0, 0, "");
+    f->addField("end_timestamp", fitEnumType, eVideoClipEndTimestamp, 0, 0, "");
+    f->addField("end_timestamp_ms", fitUint16Type, eVideoClipEndTimestampMs, 0, 0, "");
+    f->addField("clip_start", fitUint32Type, eVideoClipClipStart, 0, 0, "ms");
+    f->addField("clip_end", fitUint32Type, eVideoClipClipEnd, 0, 0, "ms");
+    profiles.insert(eMesgNumVideoClip, f);
+}
+
+void initCourse(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("course", eMesgNumCourse);
+    f->addField("sport", fitEnumType, eCourseSport, 0, 0, "");
+    f->addField("name", fitStringType, eCourseName, 0, 0, "");
+    f->addField("capabilities", fitEnumType, eCourseCapabilities, 0, 0, "");
+    profiles.insert(eMesgNumCourse, f);
+}
+
+void initCoursePoint(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("course_point", eMesgNumCoursePoint);
+    f->addField("message_index", fitEnumType, eCoursePointMessageIndex, 0, 0, "");
+    f->addField("timestamp", fitEnumType, eCoursePointTimestamp, 0, 0, "");
+    f->addField("position_lat", fitSint32Type, eCoursePointPositionLat, 0, 0, "semicircles");
+    f->addField("position_long", fitSint32Type, eCoursePointPositionLong, 0, 0, "semicircles");
+    f->addField("distance", fitUint32Type, eCoursePointDistance, 100, 0, "m");
+    f->addField("type", fitEnumType, eCoursePointType, 0, 0, "");
+    f->addField("name", fitStringType, eCoursePointName, 0, 0, "");
+    f->addField("favorite", fitEnumType, eCoursePointFavorite, 0, 0, "");
+    profiles.insert(eMesgNumCoursePoint, f);
+}
+
+void initSegmentId(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("segment_id", eMesgNumSegmentId);
+    f->addField("name", fitStringType, eSegmentIdName, 0, 0, "");
+    f->addField("uuid", fitStringType, eSegmentIdUuid, 0, 0, "");
+    f->addField("sport", fitEnumType, eSegmentIdSport, 0, 0, "");
+    f->addField("enabled", fitEnumType, eSegmentIdEnabled, 0, 0, "");
+    f->addField("user_profile_primary_key", fitUint32Type, eSegmentIdUserProfilePrimaryKey, 0, 0, "");
+    f->addField("device_id", fitUint32Type, eSegmentIdDeviceId, 0, 0, "");
+    f->addField("default_race_leader", fitUint8Type, eSegmentIdDefaultRaceLeader, 0, 0, "");
+    f->addField("delete_status", fitEnumType, eSegmentIdDeleteStatus, 0, 0, "");
+    f->addField("selection_type", fitEnumType, eSegmentIdSelectionType, 0, 0, "");
+    profiles.insert(eMesgNumSegmentId, f);
+}
+
+void initSegmentLeaderboardEntry(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("segment_leaderboard_entry", eMesgNumSegmentLeaderboardEntry);
+    f->addField("message_index", fitEnumType, eSegmentLeaderboardEntryMessageIndex, 0, 0, "");
+    f->addField("name", fitStringType, eSegmentLeaderboardEntryName, 0, 0, "");
+    f->addField("type", fitEnumType, eSegmentLeaderboardEntryType, 0, 0, "");
+    f->addField("group_primary_key", fitUint32Type, eSegmentLeaderboardEntryGroupPrimaryKey, 0, 0, "");
+    f->addField("activity_id", fitUint32Type, eSegmentLeaderboardEntryActivityId, 0, 0, "");
+    f->addField("segment_time", fitUint32Type, eSegmentLeaderboardEntrySegmentTime, 1000, 0, "s");
+    f->addField("activity_id_string", fitStringType, eSegmentLeaderboardEntryActivityIdString, 0, 0, "");
+    profiles.insert(eMesgNumSegmentLeaderboardEntry, f);
+}
+
+void initSegmentPoint(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("segment_point", eMesgNumSegmentPoint);
+    f->addField("message_index", fitEnumType, eSegmentPointMessageIndex, 0, 0, "");
+    f->addField("position_lat", fitSint32Type, eSegmentPointPositionLat, 0, 0, "semicircles");
+    f->addField("position_long", fitSint32Type, eSegmentPointPositionLong, 0, 0, "semicircles");
+    f->addField("distance", fitUint32Type, eSegmentPointDistance, 100, 0, "m");
+    f->addField("altitude", fitUint16Type, eSegmentPointAltitude, 5, 500, "m");
+    f->addField("leader_time", fitUint32Type, eSegmentPointLeaderTime, 1000, 0, "s");
+    profiles.insert(eMesgNumSegmentPoint, f);
+}
+
+void initSegmentLap(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("segment_lap", eMesgNumSegmentLap);
+    f->addField("message_index", fitEnumType, eSegmentLapMessageIndex, 0, 0, "");
+    f->addField("timestamp", fitEnumType, eSegmentLapTimestamp, 0, 0, "s");
+    f->addField("event", fitEnumType, eSegmentLapEvent, 0, 0, "");
+    f->addField("event_type", fitEnumType, eSegmentLapEventType, 0, 0, "");
+    f->addField("start_time", fitEnumType, eSegmentLapStartTime, 0, 0, "");
+    f->addField("start_position_lat", fitSint32Type, eSegmentLapStartPositionLat, 0, 0, "semicircles");
+    f->addField("start_position_long", fitSint32Type, eSegmentLapStartPositionLong, 0, 0, "semicircles");
+    f->addField("end_position_lat", fitSint32Type, eSegmentLapEndPositionLat, 0, 0, "semicircles");
+    f->addField("end_position_long", fitSint32Type, eSegmentLapEndPositionLong, 0, 0, "semicircles");
+    f->addField("total_elapsed_time", fitUint32Type, eSegmentLapTotalElapsedTime, 1000, 0, "s");
+    f->addField("total_timer_time", fitUint32Type, eSegmentLapTotalTimerTime, 1000, 0, "s");
+    f->addField("total_distance", fitUint32Type, eSegmentLapTotalDistance, 100, 0, "m");
+    f->addField("total_cycles", fitUint32Type, eSegmentLapTotalCycles, 0, 0, "cycles");
+    f->addSubfield("total_strokes", fitUint32Type, eSegmentLapTotalCycles, 0, 0, "strokes", eSegmentLapSport, eSportCycling);
+    f->addField("total_calories", fitUint16Type, eSegmentLapTotalCalories, 0, 0, "kcal");
+    f->addField("total_fat_calories", fitUint16Type, eSegmentLapTotalFatCalories, 0, 0, "kcal");
+    f->addField("avg_speed", fitUint16Type, eSegmentLapAvgSpeed, 1000, 0, "m/s");
+    f->addField("max_speed", fitUint16Type, eSegmentLapMaxSpeed, 1000, 0, "m/s");
+    f->addField("avg_heart_rate", fitUint8Type, eSegmentLapAvgHeartRate, 0, 0, "bpm");
+    f->addField("max_heart_rate", fitUint8Type, eSegmentLapMaxHeartRate, 0, 0, "bpm");
+    f->addField("avg_cadence", fitUint8Type, eSegmentLapAvgCadence, 0, 0, "rpm");
+    f->addField("max_cadence", fitUint8Type, eSegmentLapMaxCadence, 0, 0, "rpm");
+    f->addField("avg_power", fitUint16Type, eSegmentLapAvgPower, 0, 0, "watts");
+    f->addField("max_power", fitUint16Type, eSegmentLapMaxPower, 0, 0, "watts");
+    f->addField("total_ascent", fitUint16Type, eSegmentLapTotalAscent, 0, 0, "m");
+    f->addField("total_descent", fitUint16Type, eSegmentLapTotalDescent, 0, 0, "m");
+    f->addField("sport", fitEnumType, eSegmentLapSport, 0, 0, "");
+    f->addField("event_group", fitUint8Type, eSegmentLapEventGroup, 0, 0, "");
+    f->addField("nec_lat", fitSint32Type, eSegmentLapNecLat, 0, 0, "semicircles");
+    f->addField("nec_long", fitSint32Type, eSegmentLapNecLong, 0, 0, "semicircles");
+    f->addField("swc_lat", fitSint32Type, eSegmentLapSwcLat, 0, 0, "semicircles");
+    f->addField("swc_long", fitSint32Type, eSegmentLapSwcLong, 0, 0, "semicircles");
+    f->addField("name", fitStringType, eSegmentLapName, 0, 0, "");
+    f->addField("normalized_power", fitUint16Type, eSegmentLapNormalizedPower, 0, 0, "watts");
+    f->addField("left_right_balance", fitEnumType, eSegmentLapLeftRightBalance, 0, 0, "");
+    f->addField("sub_sport", fitEnumType, eSegmentLapSubSport, 0, 0, "");
+    f->addField("total_work", fitUint32Type, eSegmentLapTotalWork, 0, 0, "J");
+    f->addField("avg_altitude", fitUint16Type, eSegmentLapAvgAltitude, 5, 500, "m");
+    f->addField("max_altitude", fitUint16Type, eSegmentLapMaxAltitude, 5, 500, "m");
+    f->addField("gps_accuracy", fitUint8Type, eSegmentLapGpsAccuracy, 0, 0, "m");
+    f->addField("avg_grade", fitSint16Type, eSegmentLapAvgGrade, 100, 0, "%");
+    f->addField("avg_pos_grade", fitSint16Type, eSegmentLapAvgPosGrade, 100, 0, "%");
+    f->addField("avg_neg_grade", fitSint16Type, eSegmentLapAvgNegGrade, 100, 0, "%");
+    f->addField("max_pos_grade", fitSint16Type, eSegmentLapMaxPosGrade, 100, 0, "%");
+    f->addField("max_neg_grade", fitSint16Type, eSegmentLapMaxNegGrade, 100, 0, "%");
+    f->addField("avg_temperature", fitSint8Type, eSegmentLapAvgTemperature, 0, 0, "C");
+    f->addField("max_temperature", fitSint8Type, eSegmentLapMaxTemperature, 0, 0, "C");
+    f->addField("total_moving_time", fitUint32Type, eSegmentLapTotalMovingTime, 1000, 0, "s");
+    f->addField("avg_pos_vertical_speed", fitSint16Type, eSegmentLapAvgPosVerticalSpeed, 1000, 0, "m/s");
+    f->addField("avg_neg_vertical_speed", fitSint16Type, eSegmentLapAvgNegVerticalSpeed, 1000, 0, "m/s");
+    f->addField("max_pos_vertical_speed", fitSint16Type, eSegmentLapMaxPosVerticalSpeed, 1000, 0, "m/s");
+    f->addField("max_neg_vertical_speed", fitSint16Type, eSegmentLapMaxNegVerticalSpeed, 1000, 0, "m/s");
+    f->addField("time_in_hr_zone", fitUint32Type, eSegmentLapTimeInHrZone, 1000, 0, "s");
+    f->addField("time_in_speed_zone", fitUint32Type, eSegmentLapTimeInSpeedZone, 1000, 0, "s");
+    f->addField("time_in_cadence_zone", fitUint32Type, eSegmentLapTimeInCadenceZone, 1000, 0, "s");
+    f->addField("time_in_power_zone", fitUint32Type, eSegmentLapTimeInPowerZone, 1000, 0, "s");
+    f->addField("repetition_num", fitUint16Type, eSegmentLapRepetitionNum, 0, 0, "");
+    f->addField("min_altitude", fitUint16Type, eSegmentLapMinAltitude, 5, 500, "m");
+    f->addField("min_heart_rate", fitUint8Type, eSegmentLapMinHeartRate, 0, 0, "bpm");
+    f->addField("active_time", fitUint32Type, eSegmentLapActiveTime, 1000, 0, "s");
+    f->addField("wkt_step_index", fitEnumType, eSegmentLapWktStepIndex, 0, 0, "");
+    f->addField("sport_event", fitEnumType, eSegmentLapSportEvent, 0, 0, "");
+    f->addField("avg_left_torque_effectiveness", fitUint8Type, eSegmentLapAvgLeftTorqueEffectiveness, 2, 0, "percent");
+    f->addField("avg_right_torque_effectiveness", fitUint8Type, eSegmentLapAvgRightTorqueEffectiveness, 2, 0, "percent");
+    f->addField("avg_left_pedal_smoothness", fitUint8Type, eSegmentLapAvgLeftPedalSmoothness, 2, 0, "percent");
+    f->addField("avg_right_pedal_smoothness", fitUint8Type, eSegmentLapAvgRightPedalSmoothness, 2, 0, "percent");
+    f->addField("avg_combined_pedal_smoothness", fitUint8Type, eSegmentLapAvgCombinedPedalSmoothness, 2, 0, "percent");
+    f->addField("status", fitEnumType, eSegmentLapStatus, 0, 0, "");
+    f->addField("uuid", fitStringType, eSegmentLapUuid, 0, 0, "");
+    f->addField("avg_fractional_cadence", fitUint8Type, eSegmentLapAvgFractionalCadence, 128, 0, "rpm");
+    f->addField("max_fractional_cadence", fitUint8Type, eSegmentLapMaxFractionalCadence, 128, 0, "rpm");
+    f->addField("total_fractional_cycles", fitUint8Type, eSegmentLapTotalFractionalCycles, 128, 0, "cycles");
+    f->addField("front_gear_shift_count", fitUint16Type, eSegmentLapFrontGearShiftCount, 0, 0, "");
+    f->addField("rear_gear_shift_count", fitUint16Type, eSegmentLapRearGearShiftCount, 0, 0, "");
+    f->addField("time_standing", fitUint32Type, eSegmentLapTimeStanding, 1000, 0, "s");
+    f->addField("stand_count", fitUint16Type, eSegmentLapStandCount, 0, 0, "");
+    f->addField("avg_left_pco", fitSint8Type, eSegmentLapAvgLeftPco, 0, 0, "mm");
+    f->addField("avg_right_pco", fitSint8Type, eSegmentLapAvgRightPco, 0, 0, "mm");
+    f->addField("avg_left_power_phase", fitUint8Type, eSegmentLapAvgLeftPowerPhase, 0.7111111, 0, "degrees");
+    f->addField("avg_left_power_phase_peak", fitUint8Type, eSegmentLapAvgLeftPowerPhasePeak, 0.7111111, 0, "degrees");
+    f->addField("avg_right_power_phase", fitUint8Type, eSegmentLapAvgRightPowerPhase, 0.7111111, 0, "degrees");
+    f->addField("avg_right_power_phase_peak", fitUint8Type, eSegmentLapAvgRightPowerPhasePeak, 0.7111111, 0, "degrees");
+    f->addField("avg_power_position", fitUint16Type, eSegmentLapAvgPowerPosition, 0, 0, "watts");
+    f->addField("max_power_position", fitUint16Type, eSegmentLapMaxPowerPosition, 0, 0, "watts");
+    f->addField("avg_cadence_position", fitUint8Type, eSegmentLapAvgCadencePosition, 0, 0, "rpm");
+    f->addField("max_cadence_position", fitUint8Type, eSegmentLapMaxCadencePosition, 0, 0, "rpm");
+    profiles.insert(eMesgNumSegmentLap, f);
+}
+
+void initSegmentFile(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("segment_file", eMesgNumSegmentFile);
+    f->addField("message_index", fitEnumType, eSegmentFileMessageIndex, 0, 0, "");
+    f->addField("file_uuid", fitStringType, eSegmentFileFileUuid, 0, 0, "");
+    f->addField("enabled", fitEnumType, eSegmentFileEnabled, 0, 0, "");
+    f->addField("user_profile_primary_key", fitUint32Type, eSegmentFileUserProfilePrimaryKey, 0, 0, "");
+    f->addField("leader_type", fitEnumType, eSegmentFileLeaderType, 0, 0, "");
+    f->addField("leader_group_primary_key", fitUint32Type, eSegmentFileLeaderGroupPrimaryKey, 0, 0, "");
+    f->addField("leader_activity_id", fitUint32Type, eSegmentFileLeaderActivityId, 0, 0, "");
+    f->addField("leader_activity_id_string", fitStringType, eSegmentFileLeaderActivityIdString, 0, 0, "");
+    profiles.insert(eMesgNumSegmentFile, f);
+}
+
+void initWorkout(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("workout", eMesgNumWorkout);
+    f->addField("sport", fitEnumType, eWorkoutSport, 0, 0, "");
+    f->addField("capabilities", fitEnumType, eWorkoutCapabilities, 0, 0, "");
+    f->addField("num_valid_steps", fitUint16Type, eWorkoutNumValidSteps, 0, 0, "");
+    f->addField("wkt_name", fitStringType, eWorkoutWktName, 0, 0, "");
+    profiles.insert(eMesgNumWorkout, f);
+}
+
+void initWorkoutStep(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("workout_step", eMesgNumWorkoutStep);
+    f->addField("message_index", fitEnumType, eWorkoutStepMessageIndex, 0, 0, "");
+    f->addField("wkt_step_name", fitStringType, eWorkoutStepWktStepName, 0, 0, "");
+    f->addField("duration_type", fitEnumType, eWorkoutStepDurationType, 0, 0, "");
+    f->addField("duration_value", fitUint32Type, eWorkoutStepDurationValue, 0, 0, "");
+    f->addSubfield("duration_time", fitUint32Type, eWorkoutStepDurationValue, 1000, 0, "s", eWorkoutStepDurationType, eWktStepDurationTime);
+    f->addSubfield("duration_time", fitUint32Type, eWorkoutStepDurationValue, 0, 0, "", eWorkoutStepDurationType, eWktStepDurationRepetitionTime);
+    f->addSubfield("duration_distance", fitUint32Type, eWorkoutStepDurationValue, 100, 0, "m", eWorkoutStepDurationType, eWktStepDurationDistance);
+    f->addSubfield("duration_hr", fitEnumType, eWorkoutStepDurationValue, 0, 0, "%", eWorkoutStepDurationType, eWktStepDurationHrLessThan);
+    f->addSubfield("duration_hr", fitEnumType, eWorkoutStepDurationValue, 0, 0, "or", eWorkoutStepDurationType, eWktStepDurationHrGreaterThan);
+    f->addSubfield("duration_calories", fitUint32Type, eWorkoutStepDurationValue, 0, 0, "calories", eWorkoutStepDurationType, eWktStepDurationCalories);
+    f->addSubfield("duration_step", fitUint32Type, eWorkoutStepDurationValue, 0, 0, "", eWorkoutStepDurationType, eWktStepDurationRepeatUntilStepsCmplt);
+    f->addSubfield("duration_step", fitUint32Type, eWorkoutStepDurationValue, 0, 0, "", eWorkoutStepDurationType, eWktStepDurationRepeatUntilTime);
+    f->addSubfield("duration_step", fitUint32Type, eWorkoutStepDurationValue, 0, 0, "", eWorkoutStepDurationType, eWktStepDurationRepeatUntilDistance);
+    f->addSubfield("duration_step", fitUint32Type, eWorkoutStepDurationValue, 0, 0, "", eWorkoutStepDurationType, eWktStepDurationRepeatUntilCalories);
+    f->addSubfield("duration_step", fitUint32Type, eWorkoutStepDurationValue, 0, 0, "", eWorkoutStepDurationType, eWktStepDurationRepeatUntilHrLessThan);
+    f->addSubfield("duration_step", fitUint32Type, eWorkoutStepDurationValue, 0, 0, "", eWorkoutStepDurationType, eWktStepDurationRepeatUntilHrGreaterThan);
+    f->addSubfield("duration_step", fitUint32Type, eWorkoutStepDurationValue, 0, 0, "", eWorkoutStepDurationType, eWktStepDurationRepeatUntilPowerLessThan);
+    f->addSubfield("duration_step", fitUint32Type, eWorkoutStepDurationValue, 0, 0, "", eWorkoutStepDurationType, eWktStepDurationRepeatUntilPowerGreaterThan);
+    f->addSubfield("duration_power", fitEnumType, eWorkoutStepDurationValue, 0, 0, "%", eWorkoutStepDurationType, eWktStepDurationPowerLessThan);
+    f->addSubfield("duration_power", fitEnumType, eWorkoutStepDurationValue, 0, 0, "or", eWorkoutStepDurationType, eWktStepDurationPowerGreaterThan);
+    f->addField("target_type", fitEnumType, eWorkoutStepTargetType, 0, 0, "");
+    f->addField("target_value", fitUint32Type, eWorkoutStepTargetValue, 0, 0, "");
+    f->addSubfield("target_hr_zone", fitUint32Type, eWorkoutStepTargetValue, 0, 0, "", eWorkoutStepTargetType, eWktStepTargetHeartRate);
+    f->addSubfield("target_power_zone", fitUint32Type, eWorkoutStepTargetValue, 0, 0, "", eWorkoutStepTargetType, eWktStepTargetPower);
+    f->addSubfield("repeat_steps", fitUint32Type, eWorkoutStepTargetValue, 0, 0, "", eWorkoutStepDurationType, eWktStepDurationRepeatUntilStepsCmplt);
+    f->addSubfield("repeat_time", fitUint32Type, eWorkoutStepTargetValue, 1000, 0, "s", eWorkoutStepDurationType, eWktStepDurationRepeatUntilTime);
+    f->addSubfield("repeat_distance", fitUint32Type, eWorkoutStepTargetValue, 100, 0, "m", eWorkoutStepDurationType, eWktStepDurationRepeatUntilDistance);
+    f->addSubfield("repeat_calories", fitUint32Type, eWorkoutStepTargetValue, 0, 0, "calories", eWorkoutStepDurationType, eWktStepDurationRepeatUntilCalories);
+    f->addSubfield("repeat_hr", fitEnumType, eWorkoutStepTargetValue, 0, 0, "%", eWorkoutStepDurationType, eWktStepDurationRepeatUntilHrLessThan);
+    f->addSubfield("repeat_hr", fitEnumType, eWorkoutStepTargetValue, 0, 0, "or", eWorkoutStepDurationType, eWktStepDurationRepeatUntilHrGreaterThan);
+    f->addSubfield("repeat_power", fitEnumType, eWorkoutStepTargetValue, 0, 0, "%", eWorkoutStepDurationType, eWktStepDurationRepeatUntilPowerLessThan);
+    f->addSubfield("repeat_power", fitEnumType, eWorkoutStepTargetValue, 0, 0, "or", eWorkoutStepDurationType, eWktStepDurationRepeatUntilPowerGreaterThan);
+    f->addField("custom_target_value_low", fitUint32Type, eWorkoutStepCustomTargetValueLow, 0, 0, "");
+    f->addSubfield("custom_target_speed_low", fitUint32Type, eWorkoutStepCustomTargetValueLow, 1000, 0, "m/s", eWorkoutStepTargetType, eWktStepTargetSpeed);
+    f->addSubfield("custom_target_heart_rate_low", fitEnumType, eWorkoutStepCustomTargetValueLow, 0, 0, "%", eWorkoutStepTargetType, eWktStepTargetHeartRate);
+    f->addSubfield("custom_target_cadence_low", fitUint32Type, eWorkoutStepCustomTargetValueLow, 0, 0, "rpm", eWorkoutStepTargetType, eWktStepTargetCadence);
+    f->addSubfield("custom_target_power_low", fitEnumType, eWorkoutStepCustomTargetValueLow, 0, 0, "%", eWorkoutStepTargetType, eWktStepTargetPower);
+    f->addField("custom_target_value_high", fitUint32Type, eWorkoutStepCustomTargetValueHigh, 0, 0, "");
+    f->addSubfield("custom_target_speed_high", fitUint32Type, eWorkoutStepCustomTargetValueHigh, 1000, 0, "m/s", eWorkoutStepTargetType, eWktStepTargetSpeed);
+    f->addSubfield("custom_target_heart_rate_high", fitEnumType, eWorkoutStepCustomTargetValueHigh, 0, 0, "%", eWorkoutStepTargetType, eWktStepTargetHeartRate);
+    f->addSubfield("custom_target_cadence_high", fitUint32Type, eWorkoutStepCustomTargetValueHigh, 0, 0, "rpm", eWorkoutStepTargetType, eWktStepTargetCadence);
+    f->addSubfield("custom_target_power_high", fitEnumType, eWorkoutStepCustomTargetValueHigh, 0, 0, "%", eWorkoutStepTargetType, eWktStepTargetPower);
+    f->addField("intensity", fitEnumType, eWorkoutStepIntensity, 0, 0, "");
+    profiles.insert(eMesgNumWorkoutStep, f);
+}
+
+void initSchedule(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("schedule", eMesgNumSchedule);
+    f->addField("manufacturer", fitEnumType, eScheduleManufacturer, 0, 0, "");
+    f->addField("product", fitUint16Type, eScheduleProduct, 0, 0, "");
+    f->addSubfield("garmin_product", fitEnumType, eScheduleProduct, 0, 0, "", eScheduleManufacturer, eManufacturerGarmin);
+    f->addSubfield("garmin_product", fitEnumType, eScheduleProduct, 0, 0, "", eScheduleManufacturer, eManufacturerDynastream);
+    f->addSubfield("garmin_product", fitEnumType, eScheduleProduct, 0, 0, "", eScheduleManufacturer, eManufacturerDynastreamOem);
+    f->addField("serial_number", fitUint32zType, eScheduleSerialNumber, 0, 0, "");
+    f->addField("time_created", fitEnumType, eScheduleTimeCreated, 0, 0, "");
+    f->addField("completed", fitEnumType, eScheduleCompleted, 0, 0, "");
+    f->addField("type", fitEnumType, eScheduleType, 0, 0, "");
+    f->addField("scheduled_time", fitEnumType, eScheduleScheduledTime, 0, 0, "");
+    profiles.insert(eMesgNumSchedule, f);
+}
+
+void initTotals(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("totals", eMesgNumTotals);
+    f->addField("message_index", fitEnumType, eTotalsMessageIndex, 0, 0, "");
+    f->addField("timestamp", fitEnumType, eTotalsTimestamp, 0, 0, "s");
+    f->addField("timer_time", fitUint32Type, eTotalsTimerTime, 0, 0, "s");
+    f->addField("distance", fitUint32Type, eTotalsDistance, 0, 0, "m");
+    f->addField("calories", fitUint32Type, eTotalsCalories, 0, 0, "kcal");
+    f->addField("sport", fitEnumType, eTotalsSport, 0, 0, "");
+    f->addField("elapsed_time", fitUint32Type, eTotalsElapsedTime, 0, 0, "s");
+    f->addField("sessions", fitUint16Type, eTotalsSessions, 0, 0, "");
+    f->addField("active_time", fitUint32Type, eTotalsActiveTime, 0, 0, "s");
+    f->addField("sport_index", fitUint8Type, eTotalsSportIndex, 0, 0, "");
+    profiles.insert(eMesgNumTotals, f);
+}
+
+void initWeightScale(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("weight_scale", eMesgNumWeightScale);
+    f->addField("timestamp", fitEnumType, eWeightScaleTimestamp, 0, 0, "s");
+    f->addField("weight", fitEnumType, eWeightScaleWeight, 100, 0, "kg");
+    f->addField("percent_fat", fitUint16Type, eWeightScalePercentFat, 100, 0, "%");
+    f->addField("percent_hydration", fitUint16Type, eWeightScalePercentHydration, 100, 0, "%");
+    f->addField("visceral_fat_mass", fitUint16Type, eWeightScaleVisceralFatMass, 100, 0, "kg");
+    f->addField("bone_mass", fitUint16Type, eWeightScaleBoneMass, 100, 0, "kg");
+    f->addField("muscle_mass", fitUint16Type, eWeightScaleMuscleMass, 100, 0, "kg");
+    f->addField("basal_met", fitUint16Type, eWeightScaleBasalMet, 4, 0, "kcal/day");
+    f->addField("physique_rating", fitUint8Type, eWeightScalePhysiqueRating, 0, 0, "");
+    f->addField("active_met", fitUint16Type, eWeightScaleActiveMet, 4, 0, "kcal/day");
+    f->addField("metabolic_age", fitUint8Type, eWeightScaleMetabolicAge, 0, 0, "years");
+    f->addField("visceral_fat_rating", fitUint8Type, eWeightScaleVisceralFatRating, 0, 0, "");
+    f->addField("user_profile_index", fitEnumType, eWeightScaleUserProfileIndex, 0, 0, "");
+    profiles.insert(eMesgNumWeightScale, f);
+}
+
+void initBloodPressure(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("blood_pressure", eMesgNumBloodPressure);
+    f->addField("timestamp", fitEnumType, eBloodPressureTimestamp, 0, 0, "s");
+    f->addField("systolic_pressure", fitUint16Type, eBloodPressureSystolicPressure, 0, 0, "mmHg");
+    f->addField("diastolic_pressure", fitUint16Type, eBloodPressureDiastolicPressure, 0, 0, "mmHg");
+    f->addField("mean_arterial_pressure", fitUint16Type, eBloodPressureMeanArterialPressure, 0, 0, "mmHg");
+    f->addField("map_3_sample_mean", fitUint16Type, eBloodPressureMap3SampleMean, 0, 0, "mmHg");
+    f->addField("map_morning_values", fitUint16Type, eBloodPressureMapMorningValues, 0, 0, "mmHg");
+    f->addField("map_evening_values", fitUint16Type, eBloodPressureMapEveningValues, 0, 0, "mmHg");
+    f->addField("heart_rate", fitUint8Type, eBloodPressureHeartRate, 0, 0, "bpm");
+    f->addField("heart_rate_type", fitEnumType, eBloodPressureHeartRateType, 0, 0, "");
+    f->addField("status", fitEnumType, eBloodPressureStatus, 0, 0, "");
+    f->addField("user_profile_index", fitEnumType, eBloodPressureUserProfileIndex, 0, 0, "");
+    profiles.insert(eMesgNumBloodPressure, f);
+}
+
+void initMonitoringInfo(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("monitoring_info", eMesgNumMonitoringInfo);
+    f->addField("timestamp", fitEnumType, eMonitoringInfoTimestamp, 0, 0, "s");
+    f->addField("local_timestamp", fitEnumType, eMonitoringInfoLocalTimestamp, 0, 0, "s");
+    f->addField("activity_type", fitEnumType, eMonitoringInfoActivityType, 0, 0, "");
+    f->addField("cycles_to_distance", fitUint16Type, eMonitoringInfoCyclesToDistance, 5000, 0, "m/cycle");
+    f->addField("cycles_to_calories", fitUint16Type, eMonitoringInfoCyclesToCalories, 5000, 0, "kcal/cycle");
+    f->addField("resting_metabolic_rate", fitUint16Type, eMonitoringInfoRestingMetabolicRate, 0, 0, "kcal / day");
+    profiles.insert(eMesgNumMonitoringInfo, f);
+}
+
+void initMonitoring(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("monitoring", eMesgNumMonitoring);
+    f->addField("timestamp", fitEnumType, eMonitoringTimestamp, 0, 0, "s");
+    f->addField("device_index", fitEnumType, eMonitoringDeviceIndex, 0, 0, "");
+    f->addField("calories", fitUint16Type, eMonitoringCalories, 0, 0, "kcal");
+    f->addField("distance", fitUint32Type, eMonitoringDistance, 100, 0, "m");
+    f->addField("cycles", fitUint32Type, eMonitoringCycles, 2, 0, "cycles");
+    f->addSubfield("steps", fitUint32Type, eMonitoringCycles, 1, 0, "steps", eMonitoringActivityType, eActivityTypeWalking);
+    f->addSubfield("steps", fitUint32Type, eMonitoringCycles, 0, 0, "", eMonitoringActivityType, eActivityTypeRunning);
+    f->addSubfield("strokes", fitUint32Type, eMonitoringCycles, 2, 0, "strokes", eMonitoringActivityType, eActivityTypeCycling);
+    f->addSubfield("strokes", fitUint32Type, eMonitoringCycles, 0, 0, "", eMonitoringActivityType, eActivityTypeSwimming);
+    f->addField("active_time", fitUint32Type, eMonitoringActiveTime, 1000, 0, "s");
+    f->addField("activity_type", fitEnumType, eMonitoringActivityType, 0, 0, "");
+    f->addField("activity_subtype", fitEnumType, eMonitoringActivitySubtype, 0, 0, "");
+    f->addField("activity_level", fitEnumType, eMonitoringActivityLevel, 0, 0, "");
+    f->addField("distance_16", fitUint16Type, eMonitoringDistance16, 0, 0, "100 * m");
+    f->addField("cycles_16", fitUint16Type, eMonitoringCycles16, 0, 0, "2 * cycles (steps)");
+    f->addField("active_time_16", fitUint16Type, eMonitoringActiveTime16, 0, 0, "s");
+    f->addField("local_timestamp", fitEnumType, eMonitoringLocalTimestamp, 0, 0, "");
+    f->addField("temperature", fitSint16Type, eMonitoringTemperature, 100, 0, "C");
+    f->addField("temperature_min", fitSint16Type, eMonitoringTemperatureMin, 100, 0, "C");
+    f->addField("temperature_max", fitSint16Type, eMonitoringTemperatureMax, 100, 0, "C");
+    f->addField("activity_time", fitUint16Type, eMonitoringActivityTime, 0, 0, "minutes");
+    f->addField("active_calories", fitUint16Type, eMonitoringActiveCalories, 0, 0, "kcal");
+    f->addField("current_activity_type_intensity", fitByteType, eMonitoringCurrentActivityTypeIntensity, 0, 0, "");
+    f->addComponent("current_activity_type_intensity", fitByteType, eMonitoringCurrentActivityTypeIntensity, 0, 0, "", eMonitoringActivityType, 5);
+    f->addComponent("current_activity_type_intensity", fitByteType, eMonitoringCurrentActivityTypeIntensity, 0, 0, "", eMonitoringIntensity, 3);
+    f->addField("timestamp_min_8", fitUint8Type, eMonitoringTimestampMin8, 0, 0, "min");
+    f->addField("timestamp_16", fitUint16Type, eMonitoringTimestamp16, 0, 0, "s");
+    f->addField("heart_rate", fitUint8Type, eMonitoringHeartRate, 0, 0, "bpm");
+    f->addField("intensity", fitUint8Type, eMonitoringIntensity, 10, 0, "");
+    f->addField("duration_min", fitUint16Type, eMonitoringDurationMin, 0, 0, "min");
+    f->addField("duration", fitUint32Type, eMonitoringDuration, 0, 0, "s");
+    profiles.insert(eMesgNumMonitoring, f);
+}
+
+void initMemoGlob(QMap<quint16, CFitProfile*>& profiles)
+{
+    CFitProfile* f = new CFitProfile("memo_glob", eMesgNumMemoGlob);
+    f->addField("part_index", fitUint32Type, eMemoGlobPartIndex, 0, 0, "");
+    f->addField("memo", fitByteType, eMemoGlobMemo, 0, 0, "");
+    f->addField("message_number", fitUint16Type, eMemoGlobMessageNumber, 0, 0, "");
+    f->addField("message_index", fitEnumType, eMemoGlobMessageIndex, 0, 0, "");
+    profiles.insert(eMesgNumMemoGlob, f);
+}
+
+// ----------- end generated code -----------
+
+
+void initProfiles(QMap<quint16, CFitProfile*>& allProfiles)
+{
+    initFileId(allProfiles);
+    initFileCreator(allProfiles);
+    initTimestampCorrelation(allProfiles);
+    initSoftware(allProfiles);
+    initSlaveDevice(allProfiles);
+    initCapabilities(allProfiles);
+    initFileCapabilities(allProfiles);
+    initMesgCapabilities(allProfiles);
+    initFieldCapabilities(allProfiles);
+    initDeviceSettings(allProfiles);
+    initUserProfile(allProfiles);
+    initHrmProfile(allProfiles);
+    initSdmProfile(allProfiles);
+    initBikeProfile(allProfiles);
+    initZonesTarget(allProfiles);
+    initSport(allProfiles);
+    initHrZone(allProfiles);
+    initSpeedZone(allProfiles);
+    initCadenceZone(allProfiles);
+    initPowerZone(allProfiles);
+    initMetZone(allProfiles);
+    initGoal(allProfiles);
+    initActivity(allProfiles);
+    initSession(allProfiles);
+    initLap(allProfiles);
+    initLength(allProfiles);
+    initRecord(allProfiles);
+    initEvent(allProfiles);
+    initDeviceInfo(allProfiles);
+    initTrainingFile(allProfiles);
+    initHrv(allProfiles);
+    initCameraEvent(allProfiles);
+    initGyroscopeData(allProfiles);
+    initAccelerometerData(allProfiles);
+    initThreeDSensorCalibration(allProfiles);
+    initVideoFrame(allProfiles);
+    initObdiiData(allProfiles);
+    initNmeaSentence(allProfiles);
+    initAviationAttitude(allProfiles);
+    initVideo(allProfiles);
+    initVideoTitle(allProfiles);
+    initVideoDescription(allProfiles);
+    initVideoClip(allProfiles);
+    initCourse(allProfiles);
+    initCoursePoint(allProfiles);
+    initSegmentId(allProfiles);
+    initSegmentLeaderboardEntry(allProfiles);
+    initSegmentPoint(allProfiles);
+    initSegmentLap(allProfiles);
+    initSegmentFile(allProfiles);
+    initWorkout(allProfiles);
+    initWorkoutStep(allProfiles);
+    initSchedule(allProfiles);
+    initTotals(allProfiles);
+    initWeightScale(allProfiles);
+    initBloodPressure(allProfiles);
+    initMonitoringInfo(allProfiles);
+    initMonitoring(allProfiles);
+    initMemoGlob(allProfiles);
+
+    // invalid profile
+    allProfiles.insert(fitGlobalMesgNrInvalid, new CFitProfile());
+}
+
+CFitProfileLookup * fitLookupInstance = nullptr;
+
+CFitProfileLookup::CFitProfileLookup()
+{
+    initProfiles(allProfiles);
+    connect(qApp, &QApplication::aboutToQuit, this, &CFitProfileLookup::slotCleanup);
+}
+
+
+CFitProfileLookup::~CFitProfileLookup()
+{
+    qDeleteAll(allProfiles);
+}
+
+void CFitProfileLookup::slotCleanup()
+{
+    fitLookupInstance = nullptr;
+    delete this;
+}
+
+const CFitProfile*CFitProfileLookup::getProfile(quint16 globalMesgNr)
+{
+    if(fitLookupInstance == nullptr)
+    {
+        fitLookupInstance = new CFitProfileLookup();
+    }
+
+    if (fitLookupInstance->allProfiles.contains(globalMesgNr))
+    {
+        return fitLookupInstance->allProfiles[globalMesgNr];
+    }
+    return fitLookupInstance->allProfiles[fitGlobalMesgNrInvalid];
+}
+
+const CFitFieldProfile*CFitProfileLookup::getFieldForProfile(quint16 globalMesgNr, quint8 fieldDefNr)
+{
+    if(fitLookupInstance == nullptr)
+    {
+        fitLookupInstance = new CFitProfileLookup();
+    }
+
+    if (fitLookupInstance->allProfiles.contains(globalMesgNr))
+    {
+        return fitLookupInstance->allProfiles[globalMesgNr]->getField(fieldDefNr);
+    }
+    return fitLookupInstance->allProfiles[fitGlobalMesgNrInvalid]->getField(fitFieldDefNrInvalid);
+}
\ No newline at end of file
diff --git a/src/gis/fit/defs/CFitProfileLookup.h b/src/gis/fit/defs/CFitProfileLookup.h
new file mode 100644
index 0000000..ab0649b
--- /dev/null
+++ b/src/gis/fit/defs/CFitProfileLookup.h
@@ -0,0 +1,42 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+
+#ifndef CFITPROFILELOOKUP_H
+#define CFITPROFILELOOKUP_H
+
+#include <QtCore>
+
+class CFitProfile;
+class CFitFieldProfile;
+
+class CFitProfileLookup : public QObject
+{
+    Q_OBJECT
+public:
+    static const CFitProfile* getProfile(quint16 globalMesgNr);
+    static const CFitFieldProfile* getFieldForProfile(quint16 globalMesgNr, quint8 fieldDefNr);
+private:
+    CFitProfileLookup();
+    ~CFitProfileLookup();
+    QMap<quint16, CFitProfile*> allProfiles;
+private slots:
+    void slotCleanup();
+};
+
+#endif // CFITPROFILELOOKUP_H
diff --git a/src/gis/fit/defs/HowToFitGenerator.txt b/src/gis/fit/defs/HowToFitGenerator.txt
new file mode 100644
index 0000000..19d651d
--- /dev/null
+++ b/src/gis/fit/defs/HowToFitGenerator.txt
@@ -0,0 +1,31 @@
+How To Generate FIT Master Data
+-------------------------------
+The source code for the fit decoder has several places with the comments:
+
+// ----------- start generated code -----------
+// ----------- end generated code -----------
+
+The code in between these comments is generated. 
+
+The files with generated code are:
+- /src/gis/fit/defs/CFitProfileLookup.cpp   contains the fit profiles (message and field)
+- /src/gis/fit/defs/fit_enums.h             contains the global message numbers plus enumerations for field values
+- /src/gis/fit/defs/fit_fields.h            contains all field def numbers 
+
+
+The input for the generator are two CSV files (beware the line ending must be line ending unix):
+- Profile_Messages.csv
+- Profile_Types.csv
+
+These csv files are the export from the Excel "Profiles.xlsx" within the FIT SDK (Current Version 16.20).
+
+The generator "profiles.sh" is a bash script and needs at least bash version 4.3.
+The generator creates separate files. The code must be placed at the corresponding source code manually 
+(in between the above mentioned comments).
+The generator creates files with the same name as the files mentioned above plus a prefix "gen-" 
+in the same directory as it has been executed:
+- e.g. gen-fit_enums.h is the source for the file fit_enums.h
+
+The generator is not part of the build, so it must be executed manually.
+These files should be deleted after copying the code into the corresponding source files.
+Do not add these generated files to the repository.
diff --git a/src/gis/fit/defs/Profile_Messages.csv b/src/gis/fit/defs/Profile_Messages.csv
new file mode 100644
index 0000000..b726616
--- /dev/null
+++ b/src/gis/fit/defs/Profile_Messages.csv
@@ -0,0 +1,971 @@
+Message Name;Field Def #;Field Name;Field Type;Array;Components;Scale;Offset;Units;Bits;Accumulate;Ref Field Name;Ref Field Value;Comment;Products:;EXAMPLE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;COMMON MESSAGES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+file_id;;;;;;;;;;;;;Must be first message in file.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;type;file;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;manufacturer;manufacturer;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;product;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;garmin_product;garmin_product;;;;;;;;"manufacturer,manufacturer,manufacturer";"garmin,dynastream,dynastream_oem";;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;serial_number;uint32z;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;time_created;date_time;;;;;;;;;;Only set for files that are can be created/erased.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;number;uint16;;;;;;;;;;Only set for files that are not created/erased.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;8;product_name;string;;;;;;;;;;Optional free form string to indicate the devices name or model;;20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+file_creator;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;software_version;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;hardware_version;uint8;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+timestamp_correlation;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;s;;;;;Whole second part of UTC timestamp at the time the system timestamp was recorded.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;fractional_timestamp;uint16;;;32768;;s;;;;;Fractional part of the UTC timestamp at the time the system timestamp was recorded.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;system_timestamp;date_time;;;;;s;;;;;Whole second part of the system timestamp;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;fractional_system_timestamp;uint16;;;32768;;s;;;;;Fractional part of the system timestamp;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;local_timestamp;local_date_time;;;;;s;;;;;timestamp epoch expressed in local time used to convert timestamps to local time ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;timestamp_ms;uint16;;;;;ms;;;;;Millisecond part of the UTC timestamp at the time the system timestamp was recorded.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;system_timestamp_ms;uint16;;;;;ms;;;;;Millisecond part of the system timestamp;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;DEVICE FILE MESSAGES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+software;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;version;uint16;;;100;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;part_number;string;;;;;;;;;;;;16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+slave_device;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;manufacturer;manufacturer;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;product;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;garmin_product;garmin_product;;;;;;;;"manufacturer,manufacturer,manufacturer";"garmin,dynastream,dynastream_oem";;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+capabilities;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;languages;uint8z;[N];;;;;;;;;Use language_bits_x types where x is index of array.;;4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;sports;sport_bits_0;[N];;;;;;;;;Use sport_bits_x types where x is index of array.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;21;workouts_supported;workout_capabilities;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;23;connectivity_supported;connectivity_capabilities;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+file_capabilities;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;type;file;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;flags;file_flags;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;directory;string;;;;;;;;;;;;16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;max_count;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;max_size;uint32;;;;;bytes;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+mesg_capabilities;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;file;file;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;mesg_num;mesg_num;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;count_type;mesg_count;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;count;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;num_per_file;uint16;;;;;;;;count_type;num_per_file;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;max_per_file;uint16;;;;;;;;count_type;max_per_file;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;max_per_file_type;uint16;;;;;;;;count_type;max_per_file_type;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+field_capabilities;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;file;file;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;mesg_num;mesg_num;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;field_num;uint8;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;count;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;SETTINGS FILE MESSAGES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+device_settings;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;active_time_zone;uint8;;;;;;;;;;Index into time zone arrays.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;utc_offset;uint32;;;;;;;;;;Offset from system time. Required to convert timestamp from system time to UTC.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;time_zone_offset;sint8;[N];;4;;hr;;;;;timezone offset in 1/4 hour increments;;2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+user_profile;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;friendly_name;string;;;;;;;;;;;;16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;gender;gender;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;age;uint8;;;;;years;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;height;uint8;;;100;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;weight;uint16;;;10;;kg;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;language;language;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;elev_setting;display_measure;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;weight_setting;display_measure;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;8;resting_heart_rate;uint8;;;;;bpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;9;default_max_running_heart_rate;uint8;;;;;bpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;10;default_max_biking_heart_rate;uint8;;;;;bpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;11;default_max_heart_rate;uint8;;;;;bpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;12;hr_setting;display_heart;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;13;speed_setting;display_measure;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;14;dist_setting;display_measure;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;16;power_setting;display_power;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;17;activity_class;activity_class;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;18;position_setting;display_position;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;21;temperature_setting;display_measure;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;22;local_id;user_local_id;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;23;global_id;byte;[6];;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;30;height_setting;display_measure;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+hrm_profile;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;enabled;bool;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;hrm_ant_id;uint16z;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;log_hrv;bool;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;hrm_ant_id_trans_type;uint8z;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+sdm_profile;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;enabled;bool;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;sdm_ant_id;uint16z;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;sdm_cal_factor;uint16;;;10;;%;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;odometer;uint32;;;100;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;speed_source;bool;;;;;;;;;;Use footpod for speed source instead of GPS;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;sdm_ant_id_trans_type;uint8z;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;odometer_rollover;uint8;;;;;;;;;;Rollover counter that can be used to extend the odometer;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+bike_profile;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;name;string;;;;;;;;;;;;16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;sport;sport;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;sub_sport;sub_sport;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;odometer;uint32;;;100;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;bike_spd_ant_id;uint16z;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;bike_cad_ant_id;uint16z;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;bike_spdcad_ant_id;uint16z;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;bike_power_ant_id;uint16z;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;8;custom_wheelsize;uint16;;;1000;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;9;auto_wheelsize;uint16;;;1000;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;10;bike_weight;uint16;;;10;;kg;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;11;power_cal_factor;uint16;;;10;;%;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;12;auto_wheel_cal;bool;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;13;auto_power_zero;bool;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;14;id;uint8;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;15;spd_enabled;bool;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;16;cad_enabled;bool;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;17;spdcad_enabled;bool;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;18;power_enabled;bool;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;19;crank_length;uint8;;;2;-110;mm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;20;enabled;bool;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;21;bike_spd_ant_id_trans_type;uint8z;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;22;bike_cad_ant_id_trans_type;uint8z;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;23;bike_spdcad_ant_id_trans_type;uint8z;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;24;bike_power_ant_id_trans_type;uint8z;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;37;odometer_rollover;uint8;;;;;;;;;;Rollover counter that can be used to extend the odometer;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;38;front_gear_num;uint8z;;;;;;;;;;Number of front gears;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;39;front_gear;uint8z;[N];;;;;;;;;Number of teeth on each gear 0 is innermost;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;40;rear_gear_num;uint8z;;;;;;;;;;Number of rear gears;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;41;rear_gear;uint8z;[N];;;;;;;;;Number of teeth on each gear 0 is innermost;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;44;shimano_di2_enabled;bool;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;SPORT SETTINGS FILE MESSAGES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+zones_target;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;max_heart_rate;uint8;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;threshold_heart_rate;uint8;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;functional_threshold_power;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;hr_calc_type;hr_zone_calc;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;pwr_calc_type;pwr_zone_calc;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+sport;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;sport;sport;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;sub_sport;sub_sport;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;name;string;;;;;;;;;;;;16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+hr_zone;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;high_bpm;uint8;;;;;bpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;name;string;;;;;;;;;;;;16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+speed_zone;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;high_value;uint16;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;name;string;;;;;;;;;;;;16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+cadence_zone;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;high_value;uint8;;;;;rpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;name;string;;;;;;;;;;;;16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+power_zone;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;high_value;uint16;;;;;watts;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;name;string;;;;;;;;;;;;16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+met_zone;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;high_bpm;uint8;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;calories;uint16;;;10;;kcal / min;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;fat_calories;uint8;;;10;;kcal / min;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;GOALS FILE MESSAGES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+goal;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;sport;sport;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;sub_sport;sub_sport;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;start_date;date_time;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;end_date;date_time;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;type;goal;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;value;uint32;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;repeat;bool;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;target_value;uint32;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;8;recurrence;goal_recurrence;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;9;recurrence_value;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;10;enabled;bool;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;ACTIVITY FILE MESSAGES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+activity;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;total_timer_time;uint32;;;1000;;s;;;;;Exclude pauses;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;num_sessions;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;type;activity;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;event;event;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;event_type;event_type;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;local_timestamp;local_date_time;;;;;;;;;;timestamp epoch expressed in local time, used to convert activity timestamps to local time ;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;event_group;uint8;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+session;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;Selected bit is set for the current session.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;s;;;;;Sesson end time.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;event;event;;;;;;;;;;session;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;event_type;event_type;;;;;;;;;;stop;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;start_time;date_time;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;start_position_lat;sint32;;;;;semicircles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;start_position_long;sint32;;;;;semicircles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;sport;sport;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;sub_sport;sub_sport;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;total_elapsed_time;uint32;;;1000;;s;;;;;Time (includes pauses);;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;8;total_timer_time;uint32;;;1000;;s;;;;;Timer Time (excludes pauses);;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;9;total_distance;uint32;;;100;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;10;total_cycles;uint32;;;;;cycles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;total_strides;uint32;;;;;strides;;;"sport,sport";"running,walking";;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;11;total_calories;uint16;;;;;kcal;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;13;total_fat_calories;uint16;;;;;kcal;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;14;avg_speed;uint16;;enhanced_avg_speed;1000;;m/s;16;;;;total_distance / total_timer_time;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;15;max_speed;uint16;;enhanced_max_speed;1000;;m/s;16;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;16;avg_heart_rate;uint8;;;;;bpm;;;;;average heart rate (excludes pause time);;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;17;max_heart_rate;uint8;;;;;bpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;18;avg_cadence;uint8;;;;;rpm;;;;;total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;avg_running_cadence;uint8;;;;;strides/min;;;sport;running;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;19;max_cadence;uint8;;;;;rpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;max_running_cadence;uint8;;;;;strides/min;;;sport;running;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;20;avg_power;uint16;;;;;watts;;;;;total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;21;max_power;uint16;;;;;watts;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;22;total_ascent;uint16;;;;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;23;total_descent;uint16;;;;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;24;total_training_effect;uint8;;;10;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;25;first_lap_index;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;26;num_laps;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;27;event_group;uint8;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;28;trigger;session_trigger;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;29;nec_lat;sint32;;;;;semicircles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;30;nec_long;sint32;;;;;semicircles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;31;swc_lat;sint32;;;;;semicircles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;32;swc_long;sint32;;;;;semicircles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;34;normalized_power;uint16;;;;;watts;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;35;training_stress_score;uint16;;;10;;tss;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;36;intensity_factor;uint16;;;1000;;if;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;37;left_right_balance;left_right_balance_100;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;41;avg_stroke_count;uint32;;;10;;strokes/lap;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;42;avg_stroke_distance;uint16;;;100;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;43;swim_stroke;swim_stroke;;;;;swim_stroke;;;sport;swimming;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;44;pool_length;uint16;;;100;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;45;threshold_power;uint16;;;;;watts;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;46;pool_length_unit;display_measure;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;47;num_active_lengths;uint16;;;;;lengths;;;;;# of active lengths of swim pool;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;48;total_work;uint32;;;;;J;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;49;avg_altitude;uint16;;enhanced_avg_altitude;5;500;m;16;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;50;max_altitude;uint16;;enhanced_max_altitude;5;500;m;16;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;51;gps_accuracy;uint8;;;;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;52;avg_grade;sint16;;;100;;%;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;53;avg_pos_grade;sint16;;;100;;%;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;54;avg_neg_grade;sint16;;;100;;%;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;55;max_pos_grade;sint16;;;100;;%;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;56;max_neg_grade;sint16;;;100;;%;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;57;avg_temperature;sint8;;;;;C;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;58;max_temperature;sint8;;;;;C;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;59;total_moving_time;uint32;;;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;60;avg_pos_vertical_speed;sint16;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;61;avg_neg_vertical_speed;sint16;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;62;max_pos_vertical_speed;sint16;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;63;max_neg_vertical_speed;sint16;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;64;min_heart_rate;uint8;;;;;bpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;65;time_in_hr_zone;uint32;[N];;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;66;time_in_speed_zone;uint32;[N];;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;67;time_in_cadence_zone;uint32;[N];;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;68;time_in_power_zone;uint32;[N];;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;69;avg_lap_time;uint32;;;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;70;best_lap_index;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;71;min_altitude;uint16;;enhanced_min_altitude;5;500;m;16;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;82;player_score;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;83;opponent_score;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;84;opponent_name;string;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;85;stroke_count;uint16;[N];;;;counts;;;;;stroke_type enum used as the index;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;86;zone_count;uint16;[N];;;;counts;;;;;zone number used as the index;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;87;max_ball_speed;uint16;;;100;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;88;avg_ball_speed;uint16;;;100;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;89;avg_vertical_oscillation;uint16;;;10;;mm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;90;avg_stance_time_percent;uint16;;;100;;percent;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;91;avg_stance_time;uint16;;;10;;ms;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;92;avg_fractional_cadence;uint8;;;128;;rpm;;;;;fractional part of the avg_cadence;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;93;max_fractional_cadence;uint8;;;128;;rpm;;;;;fractional part of the max_cadence;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;94;total_fractional_cycles;uint8;;;128;;cycles;;;;;fractional part of the total_cycles;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;95;avg_total_hemoglobin_conc;uint16;[N];;100;;g/dL;;;;;Avg saturated and unsaturated hemoglobin;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;96;min_total_hemoglobin_conc;uint16;[N];;100;;g/dL;;;;;Min saturated and unsaturated hemoglobin;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;97;max_total_hemoglobin_conc;uint16;[N];;100;;g/dL;;;;;Max saturated and unsaturated hemoglobin;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;98;avg_saturated_hemoglobin_percent;uint16;[N];;10;;%;;;;;Avg percentage of hemoglobin saturated with oxygen;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;99;min_saturated_hemoglobin_percent;uint16;[N];;10;;%;;;;;Min percentage of hemoglobin saturated with oxygen;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;100;max_saturated_hemoglobin_percent;uint16;[N];;10;;%;;;;;Max percentage of hemoglobin saturated with oxygen;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;101;avg_left_torque_effectiveness;uint8;;;2;;percent;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;102;avg_right_torque_effectiveness;uint8;;;2;;percent;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;103;avg_left_pedal_smoothness;uint8;;;2;;percent;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;104;avg_right_pedal_smoothness;uint8;;;2;;percent;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;105;avg_combined_pedal_smoothness;uint8;;;2;;percent;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;111;sport_index;uint8;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;112;time_standing;uint32;;;1000;;s;;;;;Total time spend in the standing position;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;113;stand_count;uint16;;;;;;;;;;Number of transitions to the standing state;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;114;avg_left_pco;sint8;;;;;mm;;;;;Average platform center offset Left;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;115;avg_right_pco;sint8;;;;;mm;;;;;Average platform center offset Right;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;116;avg_left_power_phase;uint8;[N];;0.7111111;;degrees;;;;;Average left power phase angles. Indexes defined by power_phase_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;117;avg_left_power_phase_peak;uint8;[N];;0.7111111;;degrees;;;;;Average left power phase peak angles. Data value indexes defined by power_phase_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;118;avg_right_power_phase;uint8;[N];;0.7111111;;degrees;;;;;Average right power phase angles. Data value indexes defined by power_phase_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;119;avg_right_power_phase_peak;uint8;[N];;0.7111111;;degrees;;;;;Average right power phase peak angles data value indexes  defined by power_phase_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;120;avg_power_position;uint16;[N];;;;watts;;;;;Average power by position. Data value indexes defined by rider_position_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;121;max_power_position;uint16;[N];;;;watts;;;;;Maximum power by position. Data value indexes defined by rider_position_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;122;avg_cadence_position;uint8;[N];;;;rpm;;;;;Average cadence by position. Data value indexes defined by rider_position_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;123;max_cadence_position;uint8;[N];;;;rpm;;;;;Maximum cadence by position. Data value indexes defined by rider_position_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;124;enhanced_avg_speed;uint32;;;1000;;m/s;;;;;total_distance / total_timer_time;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;125;enhanced_max_speed;uint32;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;126;enhanced_avg_altitude;uint32;;;5;500;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;127;enhanced_min_altitude;uint32;;;5;500;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;128;enhanced_max_altitude;uint32;;;5;500;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;129;avg_lev_motor_power;uint16;;;;;watts;;;;;lev average motor power during session;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;130;max_lev_motor_power;uint16;;;;;watts;;;;;lev maximum motor power during session;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;131;lev_battery_consumption;uint8;;;2;;percent;;;;;lev battery consumption during session;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+lap;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;s;;;;;Lap end time.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;event;event;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;event_type;event_type;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;start_time;date_time;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;start_position_lat;sint32;;;;;semicircles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;start_position_long;sint32;;;;;semicircles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;end_position_lat;sint32;;;;;semicircles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;end_position_long;sint32;;;;;semicircles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;total_elapsed_time;uint32;;;1000;;s;;;;;Time (includes pauses);;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;8;total_timer_time;uint32;;;1000;;s;;;;;Timer Time (excludes pauses);;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;9;total_distance;uint32;;;100;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;10;total_cycles;uint32;;;;;cycles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;total_strides;uint32;;;;;strides;;;"sport,sport";"running,walking";;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;11;total_calories;uint16;;;;;kcal;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;12;total_fat_calories;uint16;;;;;kcal;;;;;If New Leaf;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;13;avg_speed;uint16;;enhanced_avg_speed;1000;;m/s;16;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;14;max_speed;uint16;;enhanced_max_speed;1000;;m/s;16;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;15;avg_heart_rate;uint8;;;;;bpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;16;max_heart_rate;uint8;;;;;bpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;17;avg_cadence;uint8;;;;;rpm;;;;;total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;avg_running_cadence;uint8;;;;;strides/min;;;sport;running;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;18;max_cadence;uint8;;;;;rpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;max_running_cadence;uint8;;;;;strides/min;;;sport;running;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;19;avg_power;uint16;;;;;watts;;;;;total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;20;max_power;uint16;;;;;watts;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;21;total_ascent;uint16;;;;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;22;total_descent;uint16;;;;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;23;intensity;intensity;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;24;lap_trigger;lap_trigger;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;25;sport;sport;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;26;event_group;uint8;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;32;num_lengths;uint16;;;;;lengths;;;;;# of lengths of swim pool;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;33;normalized_power;uint16;;;;;watts;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;34;left_right_balance;left_right_balance_100;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;35;first_length_index;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;37;avg_stroke_distance;uint16;;;100;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;38;swim_stroke;swim_stroke;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;39;sub_sport;sub_sport;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;40;num_active_lengths;uint16;;;;;lengths;;;;;# of active lengths of swim pool;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;41;total_work;uint32;;;;;J;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;42;avg_altitude;uint16;;enhanced_avg_altitude;5;500;m;16;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;43;max_altitude;uint16;;enhanced_max_altitude;5;500;m;16;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;44;gps_accuracy;uint8;;;;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;45;avg_grade;sint16;;;100;;%;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;46;avg_pos_grade;sint16;;;100;;%;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;47;avg_neg_grade;sint16;;;100;;%;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;48;max_pos_grade;sint16;;;100;;%;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;49;max_neg_grade;sint16;;;100;;%;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;50;avg_temperature;sint8;;;;;C;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;51;max_temperature;sint8;;;;;C;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;52;total_moving_time;uint32;;;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;53;avg_pos_vertical_speed;sint16;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;54;avg_neg_vertical_speed;sint16;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;55;max_pos_vertical_speed;sint16;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;56;max_neg_vertical_speed;sint16;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;57;time_in_hr_zone;uint32;[N];;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;58;time_in_speed_zone;uint32;[N];;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;59;time_in_cadence_zone;uint32;[N];;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;60;time_in_power_zone;uint32;[N];;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;61;repetition_num;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;62;min_altitude;uint16;;enhanced_min_altitude;5;500;m;16;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;63;min_heart_rate;uint8;;;;;bpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;71;wkt_step_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;74;opponent_score;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;75;stroke_count;uint16;[N];;;;counts;;;;;stroke_type enum used as the index;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;76;zone_count;uint16;[N];;;;counts;;;;;zone number used as the index;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;77;avg_vertical_oscillation;uint16;;;10;;mm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;78;avg_stance_time_percent;uint16;;;100;;percent;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;79;avg_stance_time;uint16;;;10;;ms;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;80;avg_fractional_cadence;uint8;;;128;;rpm;;;;;fractional part of the avg_cadence;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;81;max_fractional_cadence;uint8;;;128;;rpm;;;;;fractional part of the max_cadence;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;82;total_fractional_cycles;uint8;;;128;;cycles;;;;;fractional part of the total_cycles;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;83;player_score;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;84;avg_total_hemoglobin_conc;uint16;[N];;100;;g/dL;;;;;Avg saturated and unsaturated hemoglobin;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;85;min_total_hemoglobin_conc;uint16;[N];;100;;g/dL;;;;;Min saturated and unsaturated hemoglobin;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;86;max_total_hemoglobin_conc;uint16;[N];;100;;g/dL;;;;;Max saturated and unsaturated hemoglobin;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;87;avg_saturated_hemoglobin_percent;uint16;[N];;10;;%;;;;;Avg percentage of hemoglobin saturated with oxygen;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;88;min_saturated_hemoglobin_percent;uint16;[N];;10;;%;;;;;Min percentage of hemoglobin saturated with oxygen;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;89;max_saturated_hemoglobin_percent;uint16;[N];;10;;%;;;;;Max percentage of hemoglobin saturated with oxygen;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;91;avg_left_torque_effectiveness;uint8;;;2;;percent;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;92;avg_right_torque_effectiveness;uint8;;;2;;percent;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;93;avg_left_pedal_smoothness;uint8;;;2;;percent;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;94;avg_right_pedal_smoothness;uint8;;;2;;percent;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;95;avg_combined_pedal_smoothness;uint8;;;2;;percent;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;98;time_standing;uint32;;;1000;;s;;;;;Total time spent in the standing position;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;99;stand_count;uint16;;;;;;;;;;Number of transitions to the standing state;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;100;avg_left_pco;sint8;;;;;mm;;;;;Average left platform center offset;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;101;avg_right_pco;sint8;;;;;mm;;;;;Average right platform center offset;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;102;avg_left_power_phase;uint8;[N];;0.7111111;;degrees;;;;;Average left power phase angles. Data value indexes defined by power_phase_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;103;avg_left_power_phase_peak;uint8;[N];;0.7111111;;degrees;;;;;Average left power phase peak angles. Data value indexes  defined by power_phase_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;104;avg_right_power_phase;uint8;[N];;0.7111111;;degrees;;;;;Average right power phase angles. Data value indexes defined by power_phase_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;105;avg_right_power_phase_peak;uint8;[N];;0.7111111;;degrees;;;;;Average right power phase peak angles. Data value indexes  defined by power_phase_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;106;avg_power_position;uint16;[N];;;;watts;;;;;Average power by position. Data value indexes defined by rider_position_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;107;max_power_position;uint16;[N];;;;watts;;;;;Maximum power by position. Data value indexes defined by rider_position_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;108;avg_cadence_position;uint8;[N];;;;rpm;;;;;Average cadence by position. Data value indexes defined by rider_position_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;109;max_cadence_position;uint8;[N];;;;rpm;;;;;Maximum cadence by position. Data value indexes defined by rider_position_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;110;enhanced_avg_speed;uint32;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;111;enhanced_max_speed;uint32;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;112;enhanced_avg_altitude;uint32;;;5;500;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;113;enhanced_min_altitude;uint32;;;5;500;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;114;enhanced_max_altitude;uint32;;;5;500;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;115;avg_lev_motor_power;uint16;;;;;watts;;;;;lev average motor power during lap;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;116;max_lev_motor_power;uint16;;;;;watts;;;;;lev maximum motor power during lap;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;117;lev_battery_consumption;uint8;;;2;;percent;;;;;lev battery consumption during lap;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+length;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;event;event;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;event_type;event_type;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;start_time;date_time;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;total_elapsed_time;uint32;;;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;total_timer_time;uint32;;;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;total_strokes;uint16;;;;;strokes;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;avg_speed;uint16;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;swim_stroke;swim_stroke;;;;;swim_stroke;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;9;avg_swimming_cadence;uint8;;;;;strokes/min;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;10;event_group;uint8;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;11;total_calories;uint16;;;;;kcal;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;12;length_type;length_type;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;18;player_score;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;19;opponent_score;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;20;stroke_count;uint16;[N];;;;counts;;;;;stroke_type enum used as the index;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;21;zone_count;uint16;[N];;;;counts;;;;;zone number used as the index;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+record;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;position_lat;sint32;;;;;semicircles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;position_long;sint32;;;;;semicircles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;altitude;uint16;;enhanced_altitude;5;500;m;16;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;heart_rate;uint8;;;;;bpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;cadence;uint8;;;;;rpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;distance;uint32;;;100;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;speed;uint16;;enhanced_speed;1000;;m/s;16;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;power;uint16;;;;;watts;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;8;compressed_speed_distance;byte;[3];"speed,distance";"100,16";;"m/s,m";"12,12";"0,1";;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;9;grade;sint16;;;100;;%;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;10;resistance;uint8;;;;;;;;;;Relative. 0 is none  254 is Max.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;11;time_from_course;sint32;;;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;12;cycle_length;uint8;;;100;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;13;temperature;sint8;;;;;C;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;17;speed_1s;uint8;[N];;16;;m/s;;;;;Speed at 1s intervals.  Timestamp field indicates time of last array element.;;5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;18;cycles;uint8;;total_cycles;;;cycles;8;1;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;19;total_cycles;uint32;;;;;cycles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;28;compressed_accumulated_power;uint16;;accumulated_power;;;watts;16;1;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;29;accumulated_power;uint32;;;;;watts;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;30;left_right_balance;left_right_balance;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;31;gps_accuracy;uint8;;;;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;32;vertical_speed;sint16;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;33;calories;uint16;;;;;kcal;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;39;vertical_oscillation;uint16;;;10;;mm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;40;stance_time_percent;uint16;;;100;;percent;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;41;stance_time;uint16;;;10;;ms;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;42;activity_type;activity_type;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;43;left_torque_effectiveness;uint8;;;2;;percent;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;44;right_torque_effectiveness;uint8;;;2;;percent;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;45;left_pedal_smoothness;uint8;;;2;;percent;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;46;right_pedal_smoothness;uint8;;;2;;percent;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;47;combined_pedal_smoothness;uint8;;;2;;percent;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;48;time128;uint8;;;128;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;49;stroke_type;stroke_type;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;50;zone;uint8;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;51;ball_speed;uint16;;;100;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;52;cadence256;uint16;;;256;;rpm;;;;;Log cadence and fractional cadence for backwards compatability;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;53;fractional_cadence;uint8;;;128;;rpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;54;total_hemoglobin_conc;uint16;;;100;;g/dL;;;;;Total saturated and unsaturated hemoglobin;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;55;total_hemoglobin_conc_min;uint16;;;100;;g/dL;;;;;Min saturated and unsaturated hemoglobin;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;56;total_hemoglobin_conc_max;uint16;;;100;;g/dL;;;;;Max saturated and unsaturated hemoglobin;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;57;saturated_hemoglobin_percent;uint16;;;10;;%;;;;;Percentage of hemoglobin saturated with oxygen;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;58;saturated_hemoglobin_percent_min;uint16;;;10;;%;;;;;Min percentage of hemoglobin saturated with oxygen;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;59;saturated_hemoglobin_percent_max;uint16;;;10;;%;;;;;Max percentage of hemoglobin saturated with oxygen;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;62;device_index;device_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;67;left_pco;sint8;;;;;mm;;;;;Left platform center offset;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;68;right_pco;sint8;;;;;mm;;;;;Right platform center offset;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;69;left_power_phase;uint8;[N];;0.7111111;;degrees;;;;;Left power phase angles. Data value indexes defined by power_phase_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;70;left_power_phase_peak;uint8;[N];;0.7111111;;degrees;;;;;Left power phase peak angles. Data value indexes defined by power_phase_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;71;right_power_phase;uint8;[N];;0.7111111;;degrees;;;;;Right power phase angles. Data value indexes defined by power_phase_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;72;right_power_phase_peak;uint8;[N];;0.7111111;;degrees;;;;;Right power phase peak angles. Data value indexes defined by power_phase_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;73;enhanced_speed;uint32;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;78;enhanced_altitude;uint32;;;5;500;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;81;battery_soc;uint8;;;2;;percent;;;;;lev battery state of charge;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;82;motor_power;uint16;;;;;watts;;;;;lev motor power;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+event;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;event;event;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;event_type;event_type;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;data16;uint16;;data;;;;16;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;data;uint32;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;timer_trigger;timer_trigger;;;;;;;;event;timer;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;course_point_index;message_index;;;;;;;;event;course_point;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;battery_level;uint16;;;1000;;V;;;event;battery;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;virtual_partner_speed;uint16;;;1000;;m/s;;;event;virtual_partner_pace;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;hr_high_alert;uint8;;;;;bpm;;;event;hr_high_alert;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;hr_low_alert;uint8;;;;;bpm;;;event;hr_low_alert;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;speed_high_alert;uint32;;;1000;;m/s;;;event;speed_high_alert;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;speed_low_alert;uint32;;;1000;;m/s;;;event;speed_low_alert;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;cad_high_alert;uint16;;;;;rpm;;;event;cad_high_alert;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;cad_low_alert;uint16;;;;;rpm;;;event;cad_low_alert;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;power_high_alert;uint16;;;;;watts;;;event;power_high_alert;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;power_low_alert;uint16;;;;;watts;;;event;power_low_alert;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;time_duration_alert;uint32;;;1000;;s;;;event;time_duration_alert;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;distance_duration_alert;uint32;;;100;;m;;;event;distance_duration_alert;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;calorie_duration_alert;uint32;;;;;calories;;;event;calorie_duration_alert;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;fitness_equipment_state;fitness_equipment_state;;;;;;;;event;fitness_equipment;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;sport_point;uint32;;score,opponent_score;1,1;;;16,16;;event;sport_point;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;gear_change_data;uint32;;"rear_gear_num,rear_gear,front_gear_num,front_gear";1,1,1,1;;;"8,8,8,8";;"event,event";"front_gear_change,rear_gear_change";;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;rider_position;rider_position_type;;;;;;;;event;rider_position_change;Indicates the rider position value.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;comm_timeout;comm_timeout_type;;;;;;;;event;comm_timeout;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;event_group;uint8;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;score;uint16;;;;;;;;;;Do not populate directly.  Autogenerated by decoder for sport_point subfield components;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;8;opponent_score;uint16;;;;;;;;;;Do not populate directly.  Autogenerated by decoder for sport_point subfield components;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;9;front_gear_num;uint8z;;;;;;;;;;Do not populate directly.  Autogenerated by decoder for gear_change subfield components.  Front gear number. 1 is innermost.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;10;front_gear;uint8z;;;;;;;;;;Do not populate directly.  Autogenerated by decoder for gear_change subfield components.  Number of front teeth.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;11;rear_gear_num;uint8z;;;;;;;;;;Do not populate directly.  Autogenerated by decoder for gear_change subfield components.  Rear gear number. 1 is innermost.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;12;rear_gear;uint8z;;;;;;;;;;Do not populate directly.  Autogenerated by decoder for gear_change subfield components.  Number of rear teeth.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;13;device_index;device_index;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+device_info;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;device_index;device_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;device_type;uint8;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;antplus_device_type;antplus_device_type;;;;;;;;source_type;antplus;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;ant_device_type;uint8;;;;;;;;source_type;ant;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;manufacturer;manufacturer;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;serial_number;uint32z;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;product;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;garmin_product;garmin_product;;;;;;;;"manufacturer,manufacturer,manufacturer";"garmin,dynastream,dynastream_oem";;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;software_version;uint16;;;100;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;hardware_version;uint8;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;cum_operating_time;uint32;;;;;s;;;;;Reset by new battery or charge.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;10;battery_voltage;uint16;;;256;;V;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;11;battery_status;battery_status;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;18;sensor_position;body_location;;;;;;;;;;Indicates the location of the sensor;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;19;descriptor;string;;;;;;;;;;Used to describe the sensor or location;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;20;ant_transmission_type;uint8z;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;21;ant_device_number;uint16z;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;22;ant_network;ant_network;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;25;source_type;source_type;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;27;product_name;string;;;;;;;;;;Optional free form string to indicate the devices name or model;;20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+training_file;;;;;;;;;;;;;Corresponds to file_id of workout or course.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;type;file;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;manufacturer;manufacturer;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;product;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;garmin_product;garmin_product;;;;;;;;"manufacturer,manufacturer,manufacturer";"garmin,dynastream,dynastream_oem";;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;serial_number;uint32z;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;time_created;date_time;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+hrv;;;;;;;;;;;;;Heart rate variability;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;time;uint16;[N];;1000;;s;;;;;Time between beats;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+camera_event;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;s;;;;;Whole second part of the timestamp.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;timestamp_ms;uint16;;;;;ms;;;;;Millisecond part of the timestamp.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;camera_event_type;camera_event_type;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;camera_file_uuid;string;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;camera_orientation;camera_orientation_type;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+gyroscope_data;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;s;;;;;Whole second part of the timestamp;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;timestamp_ms;uint16;;;;;ms;;;;;Millisecond part of the timestamp.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;sample_time_offset;uint16;[N];;;;ms;;;;;Each time in the array describes the time at which the gyro sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in gyro_x and gyro_y and gyro_z;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [...]
+;2;gyro_x;uint16;[N];;;;counts;;;;;These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;gyro_y;uint16;[N];;;;counts;;;;;These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;gyro_z;uint16;[N];;;;counts;;;;;These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;calibrated_gyro_x;float32;[N];;;;deg/s;;;;;Calibrated gyro reading;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;calibrated_gyro_y;float32;[N];;;;deg/s;;;;;Calibrated gyro reading;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;calibrated_gyro_z;float32;[N];;;;deg/s;;;;;Calibrated gyro reading;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+accelerometer_data;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;s;;;;;Whole second part of the timestamp;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;timestamp_ms;uint16;;;;;ms;;;;;Millisecond part of the timestamp.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;sample_time_offset;uint16;[N];;;;ms;;;;;Each time in the array describes the time at which the accelerometer sample with the corrosponding index was taken. Limited to 30 samples in each message. The samples may span across seconds. Array size must match the number of samples in accel_x and accel_y and accel_z;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [...]
+;2;accel_x;uint16;[N];;;;counts;;;;;These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;accel_y;uint16;[N];;;;counts;;;;;These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;accel_z;uint16;[N];;;;counts;;;;;These are the raw ADC reading. Maximum number of samples is 30 in each message. The samples may span across seconds. A conversion will need to be done on this data once read.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;calibrated_accel_x;float32;[N];;;;g;;;;;Calibrated accel reading;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;calibrated_accel_y;float32;[N];;;;g;;;;;Calibrated accel reading;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;calibrated_accel_z;float32;[N];;;;g;;;;;Calibrated accel reading;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+three_d_sensor_calibration;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;s;;;;;Whole second part of the timestamp;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;sensor_type;sensor_type;;;;;;;;;;Indicates which sensor the calibration is for;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;calibration_factor;uint32;;;;;;;;;;Calibration factor used to convert from raw ADC value to degrees, g,  etc.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;accel_cal_factor;uint32;;;;;g;;;sensor_type;accelerometer;Accelerometer calibration factor;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;gyro_cal_factor;uint32;;;;;deg/s;;;sensor_type;gyroscope;Gyro calibration factor;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;calibration_divisor;uint32;;;;;counts;;;;;Calibration factor divisor;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;level_shift;uint32;;;;;;;;;;Level shift value used to shift the ADC value back into range;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;offset_cal;sint32;[3];;;;;;;;;Internal calibration factors, one for each: xy, yx, zx;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;orientation_matrix;sint32;[9];;65535;;;;;;;3 x 3 rotation matrix (row major);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+video_frame;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;s;;;;;Whole second part of the timestamp;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;timestamp_ms;uint16;;;;;ms;;;;;Millisecond part of the timestamp.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;frame_number;uint32;;;;;;;;;;Number of the frame that the timestamp and timestamp_ms correlate to;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+obdii_data;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;s;;;;;Timestamp message was output;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;timestamp_ms;uint16;;;;;ms;;;;;Fractional part of timestamp, added to timestamp;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;time_offset;uint16;[N];;;;ms;;;;;Offset of PID reading [i] from start_timestamp+start_timestamp_ms. Readings may span accross seconds.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;pid;byte;;;;;;;;;;Parameter ID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;raw_data;byte;[N];;;;;;;;;Raw parameter data;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;pid_data_size;uint8;[N];;;;;;;;;Optional, data size of PID[i].  If not specified refer to SAE J1979.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;system_time;uint32;[N];;;;;;;;;System time associated with sample expressed in ms, can be used instead of time_offset.  There will be a system_time value for each raw_data element.  For multibyte pids the system_time is repeated.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;start_timestamp;date_time;;;;;;;;;;Timestamp of first sample recorded in the message.  Used with time_offset to generate time of each sample;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;start_timestamp_ms;uint16;;;;;ms;;;;;Fractional part of start_timestamp;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+nmea_sentence;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;s;;;;;Timestamp message was output;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;timestamp_ms;uint16;;;;;ms;;;;;Fractional part of timestamp, added to timestamp;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;sentence;string;;;;;;;;;;NMEA sentence;;83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+aviation_attitude;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;s;;;;;Timestamp message was output;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;timestamp_ms;uint16;;;;;ms;;;;;Fractional part of timestamp, added to timestamp;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;system_time;uint32;[N];;;;ms;;;;;System time associated with sample expressed in ms.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;pitch;sint16;[N];;10430.38;;radians;;;;;Range -PI/2 to +PI/2;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;roll;sint16;[N];;10430.38;;radians;;;;;Range -PI to +PI;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;accel_lateral;sint16;[N];;100;;m/s^2;;;;;Range -78.4 to +78.4 (-8 Gs to 8 Gs);;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;accel_normal;sint16;[N];;100;;m/s^2;;;;;Range -78.4 to +78.4 (-8 Gs to 8 Gs);;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;turn_rate;sint16;[N];;1024;;radians/second;;;;;Range -8.727 to +8.727 (-500 degs/sec to +500 degs/sec);;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;stage;attitude_stage;[N];;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;8;attitude_stage_complete;uint8;[N];;;;%;;;;;The percent complete of the current attitude stage.  Set to 0 for attitude stages 0, 1 and 2 and to 100 for attitude stage 3 by AHRS modules that do not support it.  Range - 100;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;9;track;uint16;[N];;10430.38;;radians;;;;;Track Angle/Heading Range 0 - 2pi;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;10;validity;attitude_validity;[N];;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+video;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;url;string;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;hosting_provider;string;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;duration;uint32;;;;;ms;;;;;Playback time of video;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+video_title;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;Long titles will be split into multiple parts;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;message_count;uint16;;;;;;;;;;Total number of title parts;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;text;string;;;;;;;;;;;;80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+video_description;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;Long descriptions will be split into multiple parts;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;message_count;uint16;;;;;;;;;;Total number of description parts;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;text;string;;;;;;;;;;;;250;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+video_clip;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;clip_number;uint16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;start_timestamp;date_time;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;start_timestamp_ms;uint16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;end_timestamp;date_time;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;end_timestamp_ms;uint16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;clip_start;uint32;;;;;ms;;;;;Start of clip in video time;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;clip_end;uint32;;;;;ms;;;;;End of clip in video time;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;COURSE FILE MESSAGES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+course;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;sport;sport;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;name;string;;;;;;;;;;;;16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;capabilities;course_capabilities;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+course_point;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;timestamp;date_time;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;position_lat;sint32;;;;;semicircles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;position_long;sint32;;;;;semicircles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;distance;uint32;;;100;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;type;course_point;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;name;string;;;;;;;;;;;;16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;8;favorite;bool;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;SEGMENT FILE MESSAGES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+segment_id;;;;;;;;;;;;;Unique Identification data for a segment file ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;name;string;;;;;;;;;;Friendly name assigned to segment;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;uuid;string;;;;;;;;;;UUID of the segment;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;sport;sport;;;;;;;;;;Sport associated with the segment;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;enabled;bool;;;;;;;;;;Segment enabled for evaluation;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;user_profile_primary_key;uint32;;;;;;;;;;Primary key of the user that created the segment ;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;device_id;uint32;;;;;;;;;;ID of the device that created the segment;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;default_race_leader;uint8;;;;;;;;;;Index for the Leader Board entry selected as the default race participant;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;delete_status;segment_delete_status;;;;;;;;;;Indicates if any segments should be deleted;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;8;selection_type;segment_selection_type;;;;;;;;;;Indicates how the segment was selected to be sent to the device;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+segment_leaderboard_entry;;;;;;;;;;;;;Unique Identification data for an individual segment leader within a segment file;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;name;string;;;;;;;;;;Friendly name assigned to leader;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;type;segment_leaderboard_type;;;;;;;;;;Leader classification;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;group_primary_key;uint32;;;;;;;;;;Primary user ID of this leader;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;activity_id;uint32;;;;;;;;;;ID of the activity associated with this leader time;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;segment_time;uint32;;;1000;;s;;;;;Segment Time (includes pauses);;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;activity_id_string;string;;;;;;;;;;String version of the activity_id. 21 characters long, express in decimal;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+segment_point;;;;;;;;;;;;;Navigation and race evaluation point for a segment decribing a point along the segment path and time it took each segment leader to reach that point ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;position_lat;sint32;;;;;semicircles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;position_long;sint32;;;;;semicircles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;distance;uint32;;;100;;m;;;;;Accumulated distance along the segment at the described point;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;altitude;uint16;;;5;500;m;;;;;Accumulated altitude along the segment at the described point;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;leader_time;uint32;[N];;1000;;s;;;;;Accumualted time each leader board member required to reach the described point. This value is zero for all leader board members at the starting point of the segment. ;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+segment_lap;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;s;;;;;Lap end time.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;event;event;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;event_type;event_type;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;start_time;date_time;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;start_position_lat;sint32;;;;;semicircles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;start_position_long;sint32;;;;;semicircles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;end_position_lat;sint32;;;;;semicircles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;end_position_long;sint32;;;;;semicircles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;total_elapsed_time;uint32;;;1000;;s;;;;;Time (includes pauses);;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;8;total_timer_time;uint32;;;1000;;s;;;;;Timer Time (excludes pauses);;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;9;total_distance;uint32;;;100;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;10;total_cycles;uint32;;;;;cycles;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;total_strokes;uint32;;;;;strokes;;;sport;cycling;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;11;total_calories;uint16;;;;;kcal;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;12;total_fat_calories;uint16;;;;;kcal;;;;;If New Leaf;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;13;avg_speed;uint16;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;14;max_speed;uint16;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;15;avg_heart_rate;uint8;;;;;bpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;16;max_heart_rate;uint8;;;;;bpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;17;avg_cadence;uint8;;;;;rpm;;;;;total_cycles / total_timer_time if non_zero_avg_cadence otherwise total_cycles / total_elapsed_time;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;18;max_cadence;uint8;;;;;rpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;19;avg_power;uint16;;;;;watts;;;;;total_power / total_timer_time if non_zero_avg_power otherwise total_power / total_elapsed_time;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;20;max_power;uint16;;;;;watts;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;21;total_ascent;uint16;;;;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;22;total_descent;uint16;;;;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;23;sport;sport;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;24;event_group;uint8;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;25;nec_lat;sint32;;;;;semicircles;;;;;North east corner latitude.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;26;nec_long;sint32;;;;;semicircles;;;;;North east corner longitude.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;27;swc_lat;sint32;;;;;semicircles;;;;;South west corner latitude.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;28;swc_long;sint32;;;;;semicircles;;;;;South west corner latitude.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;29;name;string;;;;;;;;;;;;16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;30;normalized_power;uint16;;;;;watts;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;31;left_right_balance;left_right_balance_100;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;32;sub_sport;sub_sport;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;33;total_work;uint32;;;;;J;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;34;avg_altitude;uint16;;;5;500;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;35;max_altitude;uint16;;;5;500;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;36;gps_accuracy;uint8;;;;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;37;avg_grade;sint16;;;100;;%;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;38;avg_pos_grade;sint16;;;100;;%;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;39;avg_neg_grade;sint16;;;100;;%;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;40;max_pos_grade;sint16;;;100;;%;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;41;max_neg_grade;sint16;;;100;;%;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;42;avg_temperature;sint8;;;;;C;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;43;max_temperature;sint8;;;;;C;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;44;total_moving_time;uint32;;;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;45;avg_pos_vertical_speed;sint16;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;46;avg_neg_vertical_speed;sint16;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;47;max_pos_vertical_speed;sint16;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;48;max_neg_vertical_speed;sint16;;;1000;;m/s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;49;time_in_hr_zone;uint32;[N];;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;50;time_in_speed_zone;uint32;[N];;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;51;time_in_cadence_zone;uint32;[N];;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;52;time_in_power_zone;uint32;[N];;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;53;repetition_num;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;54;min_altitude;uint16;;;5;500;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;55;min_heart_rate;uint8;;;;;bpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;56;active_time;uint32;;;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;57;wkt_step_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;58;sport_event;sport_event;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;59;avg_left_torque_effectiveness;uint8;;;2;;percent;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;60;avg_right_torque_effectiveness;uint8;;;2;;percent;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;61;avg_left_pedal_smoothness;uint8;;;2;;percent;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;62;avg_right_pedal_smoothness;uint8;;;2;;percent;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;63;avg_combined_pedal_smoothness;uint8;;;2;;percent;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;64;status;segment_lap_status;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;65;uuid;string;;;;;;;;;;;;33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;66;avg_fractional_cadence;uint8;;;128;;rpm;;;;;fractional part of the avg_cadence;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;67;max_fractional_cadence;uint8;;;128;;rpm;;;;;fractional part of the max_cadence;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;68;total_fractional_cycles;uint8;;;128;;cycles;;;;;fractional part of the total_cycles;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;69;front_gear_shift_count;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;70;rear_gear_shift_count;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;71;time_standing;uint32;;;1000;;s;;;;;Total time spent in the standing position;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;72;stand_count;uint16;;;;;;;;;;Number of transitions to the standing state;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;73;avg_left_pco;sint8;;;;;mm;;;;;Average left platform center offset;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;74;avg_right_pco;sint8;;;;;mm;;;;;Average right platform center offset;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;75;avg_left_power_phase;uint8;[N];;0.7111111;;degrees;;;;;Average left power phase angles. Data value indexes defined by power_phase_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;76;avg_left_power_phase_peak;uint8;[N];;0.7111111;;degrees;;;;;Average left power phase peak angles. Data value indexes defined by power_phase_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;77;avg_right_power_phase;uint8;[N];;0.7111111;;degrees;;;;;Average right power phase angles. Data value indexes defined by power_phase_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;78;avg_right_power_phase_peak;uint8;[N];;0.7111111;;degrees;;;;;Average right power phase peak angles. Data value indexes defined by power_phase_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;79;avg_power_position;uint16;[N];;;;watts;;;;;Average power by position. Data value indexes defined by rider_position_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;80;max_power_position;uint16;[N];;;;watts;;;;;Maximum power by position. Data value indexes defined by rider_position_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;81;avg_cadence_position;uint8;[N];;;;rpm;;;;;Average cadence by position. Data value indexes defined by rider_position_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;82;max_cadence_position;uint8;[N];;;;rpm;;;;;Maximum cadence by position. Data value indexes defined by rider_position_type.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;SEGMENT LIST FILE MESSAGES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+segment_file;;;;;;;;;;;;;Summary of the unique segment and leaderboard information associated with a segment file. This message is used to compile a segment list file describing all segment files on a device. The segment list file is used when refreshing the contents of a segment file with the latest available leaderboard information. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [...]
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;file_uuid;string;;;;;;;;;;UUID of the segment file;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;enabled;bool;;;;;;;;;;Enabled state of the segment file;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;user_profile_primary_key;uint32;;;;;;;;;;Primary key of the user that created the segment file;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;leader_type;segment_leaderboard_type;[N];;;;;;;;;Leader type of each leader in the segment file;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;8;leader_group_primary_key;uint32;[N];;;;;;;;;Group primary key of each leader in the segment file;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;9;leader_activity_id;uint32;[N];;;;;;;;;Activity ID of each leader in the segment file;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;10;leader_activity_id_string;string;[N];;;;;;;;;String version of the activity ID of each leader in the segment file. 21 characters long for each ID, express in decimal;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;WORKOUT FILE MESSAGES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+workout;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;sport;sport;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;capabilities;workout_capabilities;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;num_valid_steps;uint16;;;;;;;;;;number of valid steps;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;8;wkt_name;string;;;;;;;;;;;;16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+workout_step;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;wkt_step_name;string;;;;;;;;;;;;16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;duration_type;wkt_step_duration;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;duration_value;uint32;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;duration_time;uint32;;;1000;;s;;;duration_type,duration_type;time,repetition_time;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;duration_distance;uint32;;;100;;m;;;duration_type;distance;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;duration_hr;workout_hr;;;;;% or bpm;;;duration_type,duration_type;hr_less_than,hr_greater_than;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;duration_calories;uint32;;;;;calories;;;duration_type;calories;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;duration_step;uint32;;;;;;;;duration_type,duration_type,duration_type,duration_type,duration_type,duration_type,duration_type,duration_type;repeat_until_steps_cmplt,repeat_until_time,repeat_until_distance,repeat_until_calories,repeat_until_hr_less_than,repeat_until_hr_greater_than,repeat_until_power_less_than,repeat_until_power_greater_than;message_index of step to loop back to. Steps are assumed to be in the order by message_index. custom_name and intensity members are undefined for t [...]
+;;duration_power;workout_power;;;;;% or watts;;;duration_type,duration_type;power_less_than,power_greater_than;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;target_type;wkt_step_target;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;target_value;uint32;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;target_hr_zone;uint32;;;;;;;;target_type;heart_rate;"hr zone (1-5);Custom =0;";;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;target_power_zone;uint32;;;;;;;;target_type;power;"Power Zone ( 1-7); Custom = 0;";;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;repeat_steps;uint32;;;;;;;;duration_type;repeat_until_steps_cmplt;# of repetitions;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;repeat_time;uint32;;;1000;;s;;;duration_type;repeat_until_time;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;repeat_distance;uint32;;;100;;m;;;duration_type;repeat_until_distance;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;repeat_calories;uint32;;;;;calories;;;duration_type;repeat_until_calories;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;repeat_hr;workout_hr;;;;;% or bpm;;;"duration_type,duration_type";"repeat_until_hr_less_than,repeat_until_hr_greater_than";;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;repeat_power;workout_power;;;;;% or watts;;;"duration_type,duration_type";"repeat_until_power_less_than,repeat_until_power_greater_than";;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;custom_target_value_low;uint32;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;custom_target_speed_low;uint32;;;1000;;m/s;;;target_type;speed;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;custom_target_heart_rate_low;workout_hr;;;;;% or bpm;;;target_type;heart_rate;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;custom_target_cadence_low;uint32;;;;;rpm;;;target_type;cadence;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;custom_target_power_low;workout_power;;;;;% or watts;;;target_type;power;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;custom_target_value_high;uint32;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;custom_target_speed_high;uint32;;;1000;;m/s;;;target_type;speed;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;custom_target_heart_rate_high;workout_hr;;;;;% or bpm;;;target_type;heart_rate;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;custom_target_cadence_high;uint32;;;;;rpm;;;target_type;cadence;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;custom_target_power_high;workout_power;;;;;% or watts;;;target_type;power;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;intensity;intensity;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;SCHEDULE FILE MESSAGES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+schedule;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;manufacturer;manufacturer;;;;;;;;;;Corresponds to file_id of scheduled workout / course.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;product;uint16;;;;;;;;;;Corresponds to file_id of scheduled workout / course.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;garmin_product;garmin_product;;;;;;;;"manufacturer,manufacturer,manufacturer";"garmin,dynastream,dynastream_oem";;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;serial_number;uint32z;;;;;;;;;;Corresponds to file_id of scheduled workout / course.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;time_created;date_time;;;;;;;;;;Corresponds to file_id of scheduled workout / course.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;completed;bool;;;;;;;;;;TRUE if this activity has been started;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;type;schedule;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;scheduled_time;local_date_time;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;TOTALS FILE MESSAGES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+totals;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;254;message_index;message_index;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;timer_time;uint32;;;;;s;;;;;Excludes pauses;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;distance;uint32;;;;;m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;calories;uint32;;;;;kcal;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;sport;sport;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;elapsed_time;uint32;;;;;s;;;;;Includes pauses;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;sessions;uint16;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;active_time;uint32;;;;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;9;sport_index;uint8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;WEIGHT SCALE FILE MESSAGES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+weight_scale;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;weight;weight;;;100;;kg;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;percent_fat;uint16;;;100;;%;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;percent_hydration;uint16;;;100;;%;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;visceral_fat_mass;uint16;;;100;;kg;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;bone_mass;uint16;;;100;;kg;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;muscle_mass;uint16;;;100;;kg;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;basal_met;uint16;;;4;;kcal/day;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;8;physique_rating;uint8;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;9;active_met;uint16;;;4;;kcal/day;;;;;~4kJ per kcal, 0.25 allows max 16384 kcal;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;10;metabolic_age;uint8;;;;;years;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;11;visceral_fat_rating;uint8;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;12;user_profile_index;message_index;;;;;;;;;;Associates this weight scale message to a user.  This corresponds to the index of the user profile message in the weight scale file.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;BLOOD PRESSURE FILE MESSAGES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+blood_pressure;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;systolic_pressure;uint16;;;;;mmHg;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;diastolic_pressure;uint16;;;;;mmHg;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;mean_arterial_pressure;uint16;;;;;mmHg;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;map_3_sample_mean;uint16;;;;;mmHg;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;map_morning_values;uint16;;;;;mmHg;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;map_evening_values;uint16;;;;;mmHg;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;heart_rate;uint8;;;;;bpm;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;heart_rate_type;hr_type;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;8;status;bp_status;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;9;user_profile_index;message_index;;;;;;;;;;Associates this blood pressure message to a user.  This corresponds to the index of the user profile message in the blood pressure file.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;MONITORING FILE MESSAGES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+monitoring_info;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;local_timestamp;local_date_time;;;;;s;;;;;Use to convert activity timestamps to local time if device does not support time zone and daylight savings time correction.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;activity_type;activity_type;[N];;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;cycles_to_distance;uint16;[N];;5000;;m/cycle;;;;;Indexed by activity_type;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;cycles_to_calories;uint16;[N];;5000;;kcal/cycle;;;;;Indexed by activity_type;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;resting_metabolic_rate;uint16;;;;;kcal / day;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+monitoring;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;253;timestamp;date_time;;;;;s;;;;;Must align to logging interval, for example, time must be 00:00:00 for daily log.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;device_index;device_index;;;;;;;;;;Associates this data to device_info message.  Not required for file with single device (sensor).;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;calories;uint16;;;;;kcal;;;;;Accumulated total calories.  Maintained by MonitoringReader for each activity_type.  See SDK documentation;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;distance;uint32;;;100;;m;;;;;Accumulated distance.  Maintained by MonitoringReader for each activity_type.  See SDK documentation.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;3;cycles;uint32;;;2;;cycles;;;;;Accumulated cycles.  Maintained by MonitoringReader for each activity_type.  See SDK documentation.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;steps;uint32;;;1;;steps;;;"activity_type,activity_type";"walking,running";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;strokes;uint32;;;2;;strokes;;;"activity_type,activity_type";"cycling,swimming";;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;4;active_time;uint32;;;1000;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;5;activity_type;activity_type;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;6;activity_subtype;activity_subtype;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;7;activity_level;activity_level;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;8;distance_16;uint16;;;;;100 * m;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;9;cycles_16;uint16;;;;;2 * cycles (steps);;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;10;active_time_16;uint16;;;;;s;;;;;;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;11;local_timestamp;local_date_time;;;;;;;;;;Must align to logging interval, for example, time must be 00:00:00 for daily log.;;1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;12;temperature;sint16;;;100;;C;;;;;Avg temperature during the logging interval ended at timestamp;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;14;temperature_min;sint16;;;100;;C;;;;;Min temperature during the logging interval ended at timestamp;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;15;temperature_max;sint16;;;100;;C;;;;;Max temperature during the logging interval ended at timestamp;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;16;activity_time;uint16;[8];;;;minutes;;;;;Indexed using minute_activity_level enum;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;19;active_calories;uint16;;;;;kcal;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;24;current_activity_type_intensity;byte;;activity_type,intensity;;;;5,3;;;;Indicates single type / intensity for duration since last monitoring message.;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;25;timestamp_min_8;uint8;;;;;min;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;26;timestamp_16;uint16;;;;;s;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;27;heart_rate;uint8;;;;;bpm;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;28;intensity;uint8;;;10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;29;duration_min;uint16;;;;;min;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;30;duration;uint32;;;;;s;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;OTHER MESSAGES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+memo_glob;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;250;part_index;uint32;;;;;;;;;;Sequence number of memo blocks;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;0;memo;byte;[N];;;;;;;;;Block of utf8 bytes ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;1;message_number;uint16;;;;;;;;;;Allows relating glob to another mesg  If used only required for first part of each memo_glob;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;2;message_index;message_index;;;;;;;;;;Index of external mesg;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
\ No newline at end of file
diff --git a/src/gis/fit/defs/Profile_Types.csv b/src/gis/fit/defs/Profile_Types.csv
new file mode 100644
index 0000000..cf45b64
--- /dev/null
+++ b/src/gis/fit/defs/Profile_Types.csv
@@ -0,0 +1,1196 @@
+Type Name;Base Type;Value Name;Value;Comment;
+file;enum;;;;
+;;device;1;Read only, single file. Must be in root directory.;
+;;settings;2;Read/write, single file. Directory=Settings;
+;;sport;3;Read/write, multiple files, file number = sport type. Directory=Sports;
+;;activity;4;Read/erase, multiple files. Directory=Activities;
+;;workout;5;Read/write/erase, multiple files. Directory=Workouts;
+;;course;6;Read/write/erase, multiple files. Directory=Courses;
+;;schedules;7;Read/write, single file. Directory=Schedules;
+;;weight;9;Read only, single file. Circular buffer. All message definitions at start of file. Directory=Weight;
+;;totals;10;Read only, single file. Directory=Totals;
+;;goals;11;Read/write, single file. Directory=Goals;
+;;blood_pressure;14;Read only. Directory=Blood Pressure;
+;;monitoring_a;15;Read only. Directory=Monitoring. File number=sub type.;
+;;activity_summary;20;Read/erase, multiple files. Directory=Activities;
+;;monitoring_daily;28;;
+;;monitoring_b;32;Read only. Directory=Monitoring. File number=identifier;
+;;segment;34;Read/write/erase. Multiple Files.  Directory=Segments;
+;;segment_list;35;Read/write/erase. Single File.  Directory=Segments;
+;;mfg_range_min;0xF7;0xF7 - 0xFE reserved for manufacturer specific file types;
+;;mfg_range_max;0xFE;0xF7 - 0xFE reserved for manufacturer specific file types;
+;;;;;
+mesg_num;uint16;;;;
+;;file_id;0;;
+;;capabilities;1;;
+;;device_settings;2;;
+;;user_profile;3;;
+;;hrm_profile;4;;
+;;sdm_profile;5;;
+;;bike_profile;6;;
+;;zones_target;7;;
+;;hr_zone;8;;
+;;power_zone;9;;
+;;met_zone;10;;
+;;sport;12;;
+;;goal;15;;
+;;session;18;;
+;;lap;19;;
+;;record;20;;
+;;event;21;;
+;;device_info;23;;
+;;workout;26;;
+;;workout_step;27;;
+;;schedule;28;;
+;;weight_scale;30;;
+;;course;31;;
+;;course_point;32;;
+;;totals;33;;
+;;activity;34;;
+;;software;35;;
+;;file_capabilities;37;;
+;;mesg_capabilities;38;;
+;;field_capabilities;39;;
+;;file_creator;49;;
+;;blood_pressure;51;;
+;;speed_zone;53;;
+;;monitoring;55;;
+;;training_file;72;;
+;;hrv;78;;
+;;length;101;;
+;;monitoring_info;103;;
+;;pad;105;;
+;;slave_device;106;;
+;;cadence_zone;131;;
+;;segment_lap;142;;
+;;memo_glob;145;;
+;;segment_id;148;;
+;;segment_leaderboard_entry;149;;
+;;segment_point;150;;
+;;segment_file;151;;
+;;gps_metadata;160;;
+;;camera_event;161;;
+;;timestamp_correlation;162;;
+;;gyroscope_data;164;;
+;;accelerometer_data;165;;
+;;three_d_sensor_calibration;167;;
+;;video_frame;169;;
+;;obdii_data;174;;
+;;nmea_sentence;177;;
+;;aviation_attitude;178;;
+;;video;184;;
+;;video_title;185;;
+;;video_description;186;;
+;;video_clip;187;;
+;;mfg_range_min;0xFF00;0xFF00 - 0xFFFE reserved for manufacturer specific messages;
+;;mfg_range_max;0xFFFE;0xFF00 - 0xFFFE reserved for manufacturer specific messages;
+;;;;;
+checksum;uint8;;;;
+;;clear;0;Allows clear of checksum for flash memory where can only write 1 to 0 without erasing sector.;
+;;ok;1;Set to mark checksum as valid if computes to invalid values 0 or 0xFF.  Checksum can also be set to ok to save encoding computation time.;
+;;;;;
+file_flags;uint8z;;;;
+;;read;0x02;;
+;;write;0x04;;
+;;erase;0x08;;
+;;;;;
+mesg_count;enum;;;;
+;;num_per_file;0;;
+;;max_per_file;1;;
+;;max_per_file_type;2;;
+;;;;;
+date_time;uint32;;;seconds since UTC 00:00 Dec 31 1989;
+;;min;0x10000000;if date_time is < 0x10000000 then it is system time (seconds from device power on);
+;;;;;
+local_date_time;uint32;;;seconds since 00:00 Dec 31 1989 in local time zone;
+;;min;0x10000000;if date_time is < 0x10000000 then it is system time (seconds from device power on);
+;;;;;
+message_index;uint16;;;;
+;;selected;0x8000;message is selected if set;
+;;reserved;0x7000;reserved (default 0);
+;;mask;0x0FFF;index;
+;;;;;
+device_index;uint8;;;;
+;;creator;0;Creator of the file is always device index 0.;
+;;;;;
+gender;enum;;;;
+;;female;0;;
+;;male;1;;
+;;;;;
+language;enum;;;;
+;;english;0;;
+;;french;1;;
+;;italian;2;;
+;;german;3;;
+;;spanish;4;;
+;;croatian;5;;
+;;czech;6;;
+;;danish;7;;
+;;dutch;8;;
+;;finnish;9;;
+;;greek;10;;
+;;hungarian;11;;
+;;norwegian;12;;
+;;polish;13;;
+;;portuguese;14;;
+;;slovakian;15;;
+;;slovenian;16;;
+;;swedish;17;;
+;;russian;18;;
+;;turkish;19;;
+;;latvian;20;;
+;;ukrainian;21;;
+;;arabic;22;;
+;;farsi;23;;
+;;bulgarian;24;;
+;;romanian;25;;
+;;custom;254;;
+;;;;;
+time_zone;enum;;;;
+;;almaty;0;;
+;;bangkok;1;;
+;;bombay;2;;
+;;brasilia;3;;
+;;cairo;4;;
+;;cape_verde_is;5;;
+;;darwin;6;;
+;;eniwetok;7;;
+;;fiji;8;;
+;;hong_kong;9;;
+;;islamabad;10;;
+;;kabul;11;;
+;;magadan;12;;
+;;mid_atlantic;13;;
+;;moscow;14;;
+;;muscat;15;;
+;;newfoundland;16;;
+;;samoa;17;;
+;;sydney;18;;
+;;tehran;19;;
+;;tokyo;20;;
+;;us_alaska;21;;
+;;us_atlantic;22;;
+;;us_central;23;;
+;;us_eastern;24;;
+;;us_hawaii;25;;
+;;us_mountain;26;;
+;;us_pacific;27;;
+;;other;28;;
+;;auckland;29;;
+;;kathmandu;30;;
+;;europe_western_wet;31;;
+;;europe_central_cet;32;;
+;;europe_eastern_eet;33;;
+;;jakarta;34;;
+;;perth;35;;
+;;adelaide;36;;
+;;brisbane;37;;
+;;tasmania;38;;
+;;iceland;39;;
+;;amsterdam;40;;
+;;athens;41;;
+;;barcelona;42;;
+;;berlin;43;;
+;;brussels;44;;
+;;budapest;45;;
+;;copenhagen;46;;
+;;dublin;47;;
+;;helsinki;48;;
+;;lisbon;49;;
+;;london;50;;
+;;madrid;51;;
+;;munich;52;;
+;;oslo;53;;
+;;paris;54;;
+;;prague;55;;
+;;reykjavik;56;;
+;;rome;57;;
+;;stockholm;58;;
+;;vienna;59;;
+;;warsaw;60;;
+;;zurich;61;;
+;;quebec;62;;
+;;ontario;63;;
+;;manitoba;64;;
+;;saskatchewan;65;;
+;;alberta;66;;
+;;british_columbia;67;;
+;;boise;68;;
+;;boston;69;;
+;;chicago;70;;
+;;dallas;71;;
+;;denver;72;;
+;;kansas_city;73;;
+;;las_vegas;74;;
+;;los_angeles;75;;
+;;miami;76;;
+;;minneapolis;77;;
+;;new_york;78;;
+;;new_orleans;79;;
+;;phoenix;80;;
+;;santa_fe;81;;
+;;seattle;82;;
+;;washington_dc;83;;
+;;us_arizona;84;;
+;;chita;85;;
+;;ekaterinburg;86;;
+;;irkutsk;87;;
+;;kaliningrad;88;;
+;;krasnoyarsk;89;;
+;;novosibirsk;90;;
+;;petropavlovsk_kamchatskiy;91;;
+;;samara;92;;
+;;vladivostok;93;;
+;;mexico_central;94;;
+;;mexico_mountain;95;;
+;;mexico_pacific;96;;
+;;cape_town;97;;
+;;winkhoek;98;;
+;;lagos;99;;
+;;riyahd;100;;
+;;venezuela;101;;
+;;australia_lh;102;;
+;;santiago;103;;
+;;manual;253;;
+;;automatic;254;;
+;;;;;
+display_measure;enum;;;;
+;;metric;0;;
+;;statute;1;;
+;;;;;
+display_heart;enum;;;;
+;;bpm;0;;
+;;max;1;;
+;;reserve;2;;
+;;;;;
+display_power;enum;;;;
+;;watts;0;;
+;;percent_ftp;1;;
+;;;;;
+display_position;enum;;;;
+;;degree;0;dd.dddddd                       ;
+;;degree_minute;1;dddmm.mmm                       ;
+;;degree_minute_second;2;dddmmss                         ;
+;;austrian_grid;3;Austrian Grid (BMN)             ;
+;;british_grid;4;British National Grid           ;
+;;dutch_grid;5;Dutch grid system               ;
+;;hungarian_grid;6;Hungarian grid system           ;
+;;finnish_grid;7;Finnish grid system Zone3 KKJ27 ;
+;;german_grid;8;Gausss Krueger (German)         ;
+;;icelandic_grid;9;Icelandic Grid                  ;
+;;indonesian_equatorial;10;Indonesian Equatorial LCO       ;
+;;indonesian_irian;11;Indonesian Irian LCO            ;
+;;indonesian_southern;12;Indonesian Southern LCO         ;
+;;india_zone_0;13;India zone 0                    ;
+;;india_zone_IA;14;India zone IA                   ;
+;;india_zone_IB;15;India zone IB                   ;
+;;india_zone_IIA;16;India zone IIA                  ;
+;;india_zone_IIB;17;India zone IIB                  ;
+;;india_zone_IIIA;18;India zone IIIA                 ;
+;;india_zone_IIIB;19;India zone IIIB                 ;
+;;india_zone_IVA;20;India zone IVA                  ;
+;;india_zone_IVB;21;India zone IVB                  ;
+;;irish_transverse;22;Irish Transverse Mercator       ;
+;;irish_grid;23;Irish Grid                      ;
+;;loran;24;Loran TD                        ;
+;;maidenhead_grid;25;Maidenhead grid system          ;
+;;mgrs_grid;26;MGRS grid system                ;
+;;new_zealand_grid;27;New Zealand grid system         ;
+;;new_zealand_transverse;28;New Zealand Transverse Mercator ;
+;;qatar_grid;29;Qatar National Grid             ;
+;;modified_swedish_grid;30;Modified RT-90 (Sweden)         ;
+;;swedish_grid;31;RT-90 (Sweden)                  ;
+;;south_african_grid;32;South African Grid              ;
+;;swiss_grid;33;Swiss CH-1903 grid              ;
+;;taiwan_grid;34;Taiwan Grid                     ;
+;;united_states_grid;35;United States National Grid     ;
+;;utm_ups_grid;36;UTM/UPS grid system             ;
+;;west_malayan;37;West Malayan RSO                ;
+;;borneo_rso;38;Borneo RSO;
+;;estonian_grid;39;Estonian grid system;
+;;latvian_grid;40;Latvian Transverse Mercator;
+;;swedish_ref_99_grid;41;Reference Grid 99 TM (Swedish);
+;;;;;
+sport;enum;;;;
+;;generic;0;;
+;;running;1;;
+;;cycling;2;;
+;;transition;3;Mulitsport transition;
+;;fitness_equipment;4;;
+;;swimming;5;;
+;;basketball;6;;
+;;soccer;7;;
+;;tennis;8;;
+;;american_football;9;;
+;;training;10;;
+;;walking;11;;
+;;cross_country_skiing;12;;
+;;alpine_skiing;13;;
+;;snowboarding;14;;
+;;rowing;15;;
+;;mountaineering;16;;
+;;hiking;17;;
+;;multisport;18;;
+;;paddling;19;;
+;;flying;20;;
+;;e_biking;21;;
+;;motorcycling;22;;
+;;boating;23;;
+;;driving;24;;
+;;golf;25;;
+;;hang_gliding;26;;
+;;horseback_riding;27;;
+;;hunting;28;;
+;;fishing;29;;
+;;inline_skating;30;;
+;;rock_climbing;31;;
+;;sailing;32;;
+;;ice_skating;33;;
+;;sky_diving;34;;
+;;snowshoeing;35;;
+;;snowmobiling;36;;
+;;stand_up_paddleboarding;37;;
+;;surfing;38;;
+;;wakeboarding;39;;
+;;water_skiing;40;;
+;;kayaking;41;;
+;;rafting;42;;
+;;windsurfing;43;;
+;;kitesurfing;44;;
+;;all;254;All is for goals only to include all sports.;
+;;;;;
+sport_bits_0;uint8z;;;Bit field corresponding to sport enum type (1 << sport).;
+;;generic;0x01;;
+;;running;0x02;;
+;;cycling;0x04;;
+;;transition;0x08;Mulitsport transition;
+;;fitness_equipment;0x10;;
+;;swimming;0x20;;
+;;basketball;0x40;;
+;;soccer;0x80;;
+;;;;;
+sport_bits_1;uint8z;;;Bit field corresponding to sport enum type (1 << (sport-8)).;
+;;tennis;0x01;;
+;;american_football;0x02;;
+;;training;0x04;;
+;;walking;0x08;;
+;;cross_country_skiing;0x10;;
+;;alpine_skiing;0x20;;
+;;snowboarding;0x40;;
+;;rowing;0x80;;
+;;;;;
+sport_bits_2;uint8z;;;Bit field corresponding to sport enum type (1 << (sport-16)).;
+;;mountaineering;0x01;;
+;;hiking;0x02;;
+;;multisport;0x04;;
+;;paddling;0x08;;
+;;flying;0x10;;
+;;e_biking;0x20;;
+;;motorcycling;0x40;;
+;;boating;0x80;;
+;;;;;
+sport_bits_3;uint8z;;;Bit field corresponding to sport enum type (1 << (sport-24)).;
+;;driving;0x01;;
+;;golf;0x02;;
+;;hang_gliding;0x04;;
+;;horseback_riding;0x08;;
+;;hunting;0x10;;
+;;fishing;0x20;;
+;;inline_skating;0x40;;
+;;rock_climbing;0x80;;
+;;;;;
+sport_bits_4;uint8z;;;Bit field corresponding to sport enum type (1 << (sport-32)).;
+;;sailing;0x01;;
+;;ice_skating;0x02;;
+;;sky_diving;0x04;;
+;;snowshoeing;0x08;;
+;;snowmobiling;0x10;;
+;;stand_up_paddleboarding;0x20;;
+;;surfing;0x40;;
+;;wakeboarding;0x80;;
+;;;;;
+sport_bits_5;uint8z;;;Bit field corresponding to sport enum type (1 << (sport-40)).;
+;;water_skiing;0x01;;
+;;kayaking;0x02;;
+;;rafting;0x04;;
+;;windsurfing;0x08;;
+;;kitesurfing;0x10;;
+;;;;;
+sub_sport;enum;;;;
+;;generic;0;;
+;;treadmill;1;Run/Fitness Equipment;
+;;street;2;Run;
+;;trail;3;Run;
+;;track;4;Run;
+;;spin;5;Cycling;
+;;indoor_cycling;6;Cycling/Fitness Equipment;
+;;road;7;Cycling;
+;;mountain;8;Cycling;
+;;downhill;9;Cycling;
+;;recumbent;10;Cycling;
+;;cyclocross;11;Cycling;
+;;hand_cycling;12;Cycling;
+;;track_cycling;13;Cycling;
+;;indoor_rowing;14;Fitness Equipment;
+;;elliptical;15;Fitness Equipment;
+;;stair_climbing;16;Fitness Equipment;
+;;lap_swimming;17;Swimming;
+;;open_water;18;Swimming;
+;;flexibility_training;19;Training;
+;;strength_training;20;Training;
+;;warm_up;21;Tennis;
+;;match;22;Tennis;
+;;exercise;23;Tennis;
+;;challenge;24;Tennis;
+;;indoor_skiing;25;Fitness Equipment;
+;;cardio_training;26;Training;
+;;indoor_walking;27;Walking/Fitness Equipment;
+;;e_bike_fitness;28;E-Biking;
+;;bmx;29;Cycling ;
+;;casual_walking;30;Walking;
+;;speed_walking;31;Walking;
+;;bike_to_run_transition;32;Transition;
+;;run_to_bike_transition;33;Transition;
+;;swim_to_bike_transition;34;Transition;
+;;atv;35;Motorcycling;
+;;motocross;36;Motorcycling;
+;;backcountry;37;Alpine Skiing/Snowboarding;
+;;resort;38;Alpine Skiing/Snowboarding;
+;;rc_drone;39;Flying;
+;;wingsuit;40;Flying;
+;;whitewater;41;Kayaking/Rafting;
+;;all;254;;
+;;;;;
+sport_event;enum;;;;
+;;uncategorized;0;;
+;;geocaching;1;;
+;;fitness;2;;
+;;recreation;3;;
+;;race;4;;
+;;special_event;5;;
+;;training;6;;
+;;transportation;7;;
+;;touring;8;;
+;;;;;
+activity;enum;;;;
+;;manual;0;;
+;;auto_multi_sport;1;;
+;;;;;
+intensity;enum;;;;
+;;active;0;;
+;;rest;1;;
+;;warmup;2;;
+;;cooldown;3;;
+;;;;;
+session_trigger;enum;;;;
+;;activity_end;0;;
+;;manual;1;User changed sport.;
+;;auto_multi_sport;2;Auto multi-sport feature is enabled and user pressed lap button to advance session.;
+;;fitness_equipment;3;Auto sport change caused by user linking to fitness equipment.;
+;;;;;
+autolap_trigger;enum;;;;
+;;time;0;;
+;;distance;1;;
+;;position_start;2;;
+;;position_lap;3;;
+;;position_waypoint;4;;
+;;position_marked;5;;
+;;off;6;;
+;;;;;
+lap_trigger;enum;;;;
+;;manual;0;;
+;;time;1;;
+;;distance;2;;
+;;position_start;3;;
+;;position_lap;4;;
+;;position_waypoint;5;;
+;;position_marked;6;;
+;;session_end;7;;
+;;fitness_equipment;8;;
+;;;;;
+event;enum;;;;
+;;timer;0;Group 0.  Start / stop_all;
+;;workout;3;start / stop;
+;;workout_step;4;Start at beginning of workout.  Stop at end of each step.;
+;;power_down;5;stop_all group 0;
+;;power_up;6;stop_all group 0;
+;;off_course;7;start / stop group 0;
+;;session;8;Stop at end of each session.;
+;;lap;9;Stop at end of each lap.;
+;;course_point;10;marker;
+;;battery;11;marker;
+;;virtual_partner_pace;12;Group 1. Start at beginning of activity if VP enabled, when VP pace is changed during activity or VP enabled mid activity.  stop_disable when VP disabled.;
+;;hr_high_alert;13;Group 0.  Start / stop when in alert condition.;
+;;hr_low_alert;14;Group 0.  Start / stop when in alert condition.;
+;;speed_high_alert;15;Group 0.  Start / stop when in alert condition.;
+;;speed_low_alert;16;Group 0.  Start / stop when in alert condition.;
+;;cad_high_alert;17;Group 0.  Start / stop when in alert condition.;
+;;cad_low_alert;18;Group 0.  Start / stop when in alert condition.;
+;;power_high_alert;19;Group 0.  Start / stop when in alert condition.;
+;;power_low_alert;20;Group 0.  Start / stop when in alert condition.;
+;;recovery_hr;21;marker;
+;;battery_low;22;marker;
+;;time_duration_alert;23;Group 1.  Start if enabled mid activity (not required at start of activity). Stop when duration is reached.  stop_disable if disabled.;
+;;distance_duration_alert;24;Group 1.  Start if enabled mid activity (not required at start of activity). Stop when duration is reached.  stop_disable if disabled.;
+;;calorie_duration_alert;25;Group 1.  Start if enabled mid activity (not required at start of activity). Stop when duration is reached.  stop_disable if disabled.;
+;;activity;26;Group 1..  Stop at end of activity.;
+;;fitness_equipment;27;marker;
+;;length;28;Stop at end of each length.;
+;;user_marker;32;marker;
+;;sport_point;33;marker;
+;;calibration;36;start/stop/marker;
+;;front_gear_change;42;marker;
+;;rear_gear_change;43;marker;
+;;rider_position_change;44;marker;
+;;elev_high_alert;45;Group 0.  Start / stop when in alert condition.;
+;;elev_low_alert;46;Group 0.  Start / stop when in alert condition.;
+;;comm_timeout;47;marker;
+;;;;;
+event_type;enum;;;;
+;;start;0;;
+;;stop;1;;
+;;consecutive_depreciated;2;;
+;;marker;3;;
+;;stop_all;4;;
+;;begin_depreciated;5;;
+;;end_depreciated;6;;
+;;end_all_depreciated;7;;
+;;stop_disable;8;;
+;;stop_disable_all;9;;
+;;;;;
+timer_trigger;enum;;;timer event data;
+;;manual;0;;
+;;auto;1;;
+;;fitness_equipment;2;;
+;;;;;
+fitness_equipment_state;enum;;;fitness equipment event data;
+;;ready;0;;
+;;in_use;1;;
+;;paused;2;;
+;;unknown;3;lost connection to fitness equipment;
+;;;;;
+activity_class;enum;;;;
+;;level;0x7F;0 to 100;
+;;level_max;100;;
+;;athlete;0x80;;
+;;;;;
+hr_zone_calc;enum;;;;
+;;custom;0;;
+;;percent_max_hr;1;;
+;;percent_hrr;2;;
+;;;;;
+pwr_zone_calc;enum;;;;
+;;custom;0;;
+;;percent_ftp;1;;
+;;;;;
+wkt_step_duration;enum;;;;
+;;time;0;;
+;;distance;1;;
+;;hr_less_than;2;;
+;;hr_greater_than;3;;
+;;calories;4;;
+;;open;5;;
+;;repeat_until_steps_cmplt;6;;
+;;repeat_until_time;7;;
+;;repeat_until_distance;8;;
+;;repeat_until_calories;9;;
+;;repeat_until_hr_less_than;10;;
+;;repeat_until_hr_greater_than;11;;
+;;repeat_until_power_less_than;12;;
+;;repeat_until_power_greater_than;13;;
+;;power_less_than;14;;
+;;power_greater_than;15;;
+;;repetition_time;28;;
+;;;;;
+wkt_step_target;enum;;;;
+;;speed;0;;
+;;heart_rate;1;;
+;;open;2;;
+;;cadence;3;;
+;;power;4;;
+;;grade;5;;
+;;resistance;6;;
+;;;;;
+goal;enum;;;;
+;;time;0;;
+;;distance;1;;
+;;calories;2;;
+;;frequency;3;;
+;;steps;4;;
+;;;;;
+goal_recurrence;enum;;;;
+;;off;0;;
+;;daily;1;;
+;;weekly;2;;
+;;monthly;3;;
+;;yearly;4;;
+;;custom;5;;
+;;;;;
+schedule;enum;;;;
+;;workout;0;;
+;;course;1;;
+;;;;;
+course_point;enum;;;;
+;;generic;0;;
+;;summit;1;;
+;;valley;2;;
+;;water;3;;
+;;food;4;;
+;;danger;5;;
+;;left;6;;
+;;right;7;;
+;;straight;8;;
+;;first_aid;9;;
+;;fourth_category;10;;
+;;third_category;11;;
+;;second_category;12;;
+;;first_category;13;;
+;;hors_category;14;;
+;;sprint;15;;
+;;left_fork;16;;
+;;right_fork;17;;
+;;middle_fork;18;;
+;;slight_left;19;;
+;;sharp_left;20;;
+;;slight_right;21;;
+;;sharp_right;22;;
+;;u_turn;23;;
+;;;;;
+manufacturer;uint16;;;;
+;;garmin;1;;
+;;garmin_fr405_antfs;2;Do not use.  Used by FR405 for ANTFS man id.;
+;;zephyr;3;;
+;;dayton;4;;
+;;idt;5;;
+;;srm;6;;
+;;quarq;7;;
+;;ibike;8;;
+;;saris;9;;
+;;spark_hk;10;;
+;;tanita;11;;
+;;echowell;12;;
+;;dynastream_oem;13;;
+;;nautilus;14;;
+;;dynastream;15;;
+;;timex;16;;
+;;metrigear;17;;
+;;xelic;18;;
+;;beurer;19;;
+;;cardiosport;20;;
+;;a_and_d;21;;
+;;hmm;22;;
+;;suunto;23;;
+;;thita_elektronik;24;;
+;;gpulse;25;;
+;;clean_mobile;26;;
+;;pedal_brain;27;;
+;;peaksware;28;;
+;;saxonar;29;;
+;;lemond_fitness;30;;
+;;dexcom;31;;
+;;wahoo_fitness;32;;
+;;octane_fitness;33;;
+;;archinoetics;34;;
+;;the_hurt_box;35;;
+;;citizen_systems;36;;
+;;magellan;37;;
+;;osynce;38;;
+;;holux;39;;
+;;concept2;40;;
+;;one_giant_leap;42;;
+;;ace_sensor;43;;
+;;brim_brothers;44;;
+;;xplova;45;;
+;;perception_digital;46;;
+;;bf1systems;47;;
+;;pioneer;48;;
+;;spantec;49;;
+;;metalogics;50;;
+;;4iiiis;51;;
+;;seiko_epson;52;;
+;;seiko_epson_oem;53;;
+;;ifor_powell;54;;
+;;maxwell_guider;55;;
+;;star_trac;56;;
+;;breakaway;57;;
+;;alatech_technology_ltd;58;;
+;;mio_technology_europe;59;;
+;;rotor;60;;
+;;geonaute;61;;
+;;id_bike;62;;
+;;specialized;63;;
+;;wtek;64;;
+;;physical_enterprises;65;;
+;;north_pole_engineering;66;;
+;;bkool;67;;
+;;cateye;68;;
+;;stages_cycling;69;;
+;;sigmasport;70;;
+;;tomtom;71;;
+;;peripedal;72;;
+;;wattbike;73;;
+;;moxy;76;;
+;;ciclosport;77;;
+;;powerbahn;78;;
+;;acorn_projects_aps;79;;
+;;lifebeam;80;;
+;;bontrager;81;;
+;;wellgo;82;;
+;;scosche;83;;
+;;magura;84;;
+;;woodway;85;;
+;;elite;86;;
+;;nielsen_kellerman;87;;
+;;dk_city;88;;
+;;tacx;89;;
+;;direction_technology;90;;
+;;magtonic;91;;
+;;1partcarbon;92;;
+;;inside_ride_technologies;93;;
+;;sound_of_motion;94;;
+;;stryd;95;;
+;;icg;96;Indoorcycling Group;
+;;mi_pulse;97;;
+;;bsx_athletics;98;;
+;;look;99;;
+;;development;255;;
+;;healthandlife;257;;
+;;lezyne;258;;
+;;scribe_labs;259;;
+;;zwift;260;;
+;;watteam;261;;
+;;recon;262;;
+;;favero_electronics;263;;
+;;dynovelo;264;;
+;;strava;265;;
+;;actigraphcorp;5759;;
+;;;;;
+garmin_product;uint16;;;;
+;;hrm1;1;;
+;;axh01;2;AXH01 HRM chipset;
+;;axb01;3;;
+;;axb02;4;;
+;;hrm2ss;5;;
+;;dsi_alf02;6;;
+;;hrm3ss;7;;
+;;hrm_run_single_byte_product_id;8;hrm_run model for HRM ANT+ messaging;
+;;bsm;9;BSM model for ANT+ messaging;
+;;bcm;10;BCM model for ANT+ messaging;
+;;axs01;11;AXS01 HRM Bike Chipset model for ANT+ messaging;
+;;hrm_tri_single_byte_product_id;12;hrm_tri model for HRM ANT+ messaging;
+;;fr225_single_byte_product_id;14;fr225 model for HRM ANT+ messaging;
+;;fr301_china;473;;
+;;fr301_japan;474;;
+;;fr301_korea;475;;
+;;fr301_taiwan;494;;
+;;fr405;717;Forerunner 405;
+;;fr50;782;Forerunner 50;
+;;fr405_japan;987;;
+;;fr60;988;Forerunner 60;
+;;dsi_alf01;1011;;
+;;fr310xt;1018;Forerunner 310;
+;;edge500;1036;;
+;;fr110;1124;Forerunner 110;
+;;edge800;1169;;
+;;edge500_taiwan;1199;;
+;;edge500_japan;1213;;
+;;chirp;1253;;
+;;fr110_japan;1274;;
+;;edge200;1325;;
+;;fr910xt;1328;;
+;;edge800_taiwan;1333;;
+;;edge800_japan;1334;;
+;;alf04;1341;;
+;;fr610;1345;;
+;;fr210_japan;1360;;
+;;vector_ss;1380;;
+;;vector_cp;1381;;
+;;edge800_china;1386;;
+;;edge500_china;1387;;
+;;fr610_japan;1410;;
+;;edge500_korea;1422;;
+;;fr70;1436;;
+;;fr310xt_4t;1446;;
+;;amx;1461;;
+;;fr10;1482;;
+;;edge800_korea;1497;;
+;;swim;1499;;
+;;fr910xt_china;1537;;
+;;fenix;1551;;
+;;edge200_taiwan;1555;;
+;;edge510;1561;;
+;;edge810;1567;;
+;;tempe;1570;;
+;;fr910xt_japan;1600;;
+;;fr620;1623;;
+;;fr220;1632;;
+;;fr910xt_korea;1664;;
+;;fr10_japan;1688;;
+;;edge810_japan;1721;;
+;;virb_elite;1735;;
+;;edge_touring;1736;Also Edge Touring Plus;
+;;edge510_japan;1742;;
+;;hrm_tri;1743;;
+;;hrm_run;1752;;
+;;fr920xt;1765;;
+;;edge510_asia;1821;;
+;;edge810_china;1822;;
+;;edge810_taiwan;1823;;
+;;edge1000;1836;;
+;;vivo_fit;1837;;
+;;virb_remote;1853;;
+;;vivo_ki;1885;;
+;;fr15;1903;;
+;;vivo_active;1907;;
+;;edge510_korea;1918;;
+;;fr620_japan;1928;;
+;;fr620_china;1929;;
+;;fr220_japan;1930;;
+;;fr220_china;1931;;
+;;approach_s6;1936;;
+;;vivo_smart;1956;;
+;;fenix2;1967;;
+;;epix;1988;;
+;;fenix3;2050;;
+;;edge1000_taiwan;2052;;
+;;edge1000_japan;2053;;
+;;fr15_japan;2061;;
+;;edge520;2067;;
+;;edge1000_china;2070;;
+;;fr620_russia;2072;;
+;;fr220_russia;2073;;
+;;vector_s;2079;;
+;;edge1000_korea;2100;;
+;;fr920xt_taiwan;2130;;
+;;fr920xt_china;2131;;
+;;fr920xt_japan;2132;;
+;;virbx;2134;;
+;;vivo_smart_apac;2135;;
+;;etrex_touch;2140;;
+;;edge25;2147;;
+;;vivo_fit2;2150;;
+;;fr225;2153;;
+;;vivo_active_apac;2160;;
+;;vector_2;2161;;
+;;vector_2s;2162;;
+;;virbxe;2172;;
+;;fr620_taiwan;2173;;
+;;fr220_taiwan;2174;;
+;;fenix3_china;2188;;
+;;fenix3_twn;2189;;
+;;varia_headlight;2192;;
+;;varia_taillight_old;2193;;
+;;fr225_asia;2219;;
+;;varia_radar_taillight;2225;;
+;;varia_radar_display;2226;;
+;;edge20;2238;;
+;;d2_bravo;2262;;
+;;varia_remote;2276;;
+;;sdm4;10007;SDM4 footpod;
+;;edge_remote;10014;;
+;;training_center;20119;;
+;;android_antplus_plugin;65532;;
+;;connect;65534;Garmin Connect website;
+;;;;;
+antplus_device_type;uint8;;;;
+;;antfs;1;;
+;;bike_power;11;;
+;;environment_sensor_legacy;12;;
+;;multi_sport_speed_distance;15;;
+;;control;16;;
+;;fitness_equipment;17;;
+;;blood_pressure;18;;
+;;geocache_node;19;;
+;;light_electric_vehicle;20;;
+;;env_sensor;25;;
+;;racquet;26;;
+;;weight_scale;119;;
+;;heart_rate;120;;
+;;bike_speed_cadence;121;;
+;;bike_cadence;122;;
+;;bike_speed;123;;
+;;stride_speed_distance;124;;
+;;;;;
+ant_network;enum;;;;
+;;public;0;;
+;;antplus;1;;
+;;antfs;2;;
+;;private;3;;
+;;;;;
+workout_capabilities;uint32z;;;;
+;;interval;0x00000001;;
+;;custom;0x00000002;;
+;;fitness_equipment;0x00000004;;
+;;firstbeat;0x00000008;;
+;;new_leaf;0x00000010;;
+;;tcx;0x00000020;For backwards compatibility.  Watch should add missing id fields then clear flag.;
+;;speed;0x00000080;Speed source required for workout step.;
+;;heart_rate;0x00000100;Heart rate source required for workout step.;
+;;distance;0x00000200;Distance source required for workout step.;
+;;cadence;0x00000400;Cadence source required for workout step.;
+;;power;0x00000800;Power source required for workout step.;
+;;grade;0x00001000;Grade source required for workout step.;
+;;resistance;0x00002000;Resistance source required for workout step.;
+;;protected;0x00004000;;
+;;;;;
+battery_status;uint8;;;;
+;;new;1;;
+;;good;2;;
+;;ok;3;;
+;;low;4;;
+;;critical;5;;
+;;unknown;7;;
+;;;;;
+hr_type;enum;;;;
+;;normal;0;;
+;;irregular;1;;
+;;;;;
+course_capabilities;uint32z;;;;
+;;processed;0x00000001;;
+;;valid;0x00000002;;
+;;time;0x00000004;;
+;;distance;0x00000008;;
+;;position;0x00000010;;
+;;heart_rate;0x00000020;;
+;;power;0x00000040;;
+;;cadence;0x00000080;;
+;;training;0x00000100;;
+;;navigation;0x00000200;;
+;;bikeway;0x00000400;;
+;;;;;
+weight;uint16;;;;
+;;calculating;0xFFFE;;
+;;;;;
+workout_hr;uint32;;;"0 - 100 indicates% of maz hr; >100 indicates bpm (255 max) plus 100";
+;;bpm_offset;100;;
+;;;;;
+workout_power;uint32;;;"0 - 1000 indicates % of functional threshold power; >1000 indicates watts plus 1000.";
+;;watts_offset;1000;;
+;;;;;
+bp_status;enum;;;;
+;;no_error;0;;
+;;error_incomplete_data;1;;
+;;error_no_measurement;2;;
+;;error_data_out_of_range;3;;
+;;error_irregular_heart_rate;4;;
+;;;;;
+user_local_id;uint16;;;;
+;;local_min;0x0000;;
+;;local_max;0x000F;;
+;;stationary_min;0x0010;;
+;;stationary_max;0x00FF;;
+;;portable_min;0x0100;;
+;;portable_max;0xFFFE;;
+;;;;;
+swim_stroke;enum;;;;
+;;freestyle;0;;
+;;backstroke;1;;
+;;breaststroke;2;;
+;;butterfly;3;;
+;;drill;4;;
+;;mixed;5;;
+;;im;6;IM is a mixed interval containing the same number of lengths for each of: Butterfly, Backstroke, Breaststroke, Freestyle, swam in that order.;
+;;;;;
+activity_type;enum;;;;
+;;generic;0;;
+;;running;1;;
+;;cycling;2;;
+;;transition;3;Mulitsport transition;
+;;fitness_equipment;4;;
+;;swimming;5;;
+;;walking;6;;
+;;all;254;All is for goals only to include all sports.;
+;;;;;
+activity_subtype;enum;;;;
+;;generic;0;;
+;;treadmill;1;Run;
+;;street;2;Run;
+;;trail;3;Run;
+;;track;4;Run;
+;;spin;5;Cycling;
+;;indoor_cycling;6;Cycling;
+;;road;7;Cycling;
+;;mountain;8;Cycling;
+;;downhill;9;Cycling;
+;;recumbent;10;Cycling;
+;;cyclocross;11;Cycling;
+;;hand_cycling;12;Cycling;
+;;track_cycling;13;Cycling;
+;;indoor_rowing;14;Fitness Equipment;
+;;elliptical;15;Fitness Equipment;
+;;stair_climbing;16;Fitness Equipment;
+;;lap_swimming;17;Swimming;
+;;open_water;18;Swimming;
+;;all;254;;
+;;;;;
+activity_level;enum;;;;
+;;low;0;;
+;;medium;1;;
+;;high;2;;
+;;;;;
+left_right_balance;uint8;;;;
+;;mask;0x7F;% contribution;
+;;right;0x80;data corresponds to right if set, otherwise unknown;
+;;;;;
+left_right_balance_100;uint16;;;;
+;;mask;0x3FFF;% contribution scaled by 100;
+;;right;0x8000;data corresponds to right if set, otherwise unknown;
+;;;;;
+length_type;enum;;;;
+;;idle;0;Rest period. Length with no strokes;
+;;active;1;Length with strokes.;
+;;;;;
+connectivity_capabilities;uint32z;;;;
+;;bluetooth;0x00000001;;
+;;bluetooth_le;0x00000002;;
+;;ant;0x00000004;;
+;;activity_upload;0x00000008;;
+;;course_download;0x00000010;;
+;;workout_download;0x00000020;;
+;;live_track;0x00000040;;
+;;weather_conditions;0x00000080;;
+;;weather_alerts;0x00000100;;
+;;gps_ephemeris_download;0x00000200;;
+;;explicit_archive;0x00000400;;
+;;setup_incomplete;0x00000800;;
+;;continue_sync_after_software_update;0x00001000;;
+;;connect_iq_app_download;0x00002000;;
+;;;;;
+stroke_type;enum;;;;
+;;no_event;0;;
+;;other;1;stroke was detected but cannot be identified;
+;;serve;2;;
+;;forehand;3;;
+;;backhand;4;;
+;;smash;5;;
+;;;;;
+body_location;enum;;;;
+;;left_leg;0;;
+;;left_calf;1;;
+;;left_shin;2;;
+;;left_hamstring;3;;
+;;left_quad;4;;
+;;left_glute;5;;
+;;right_leg;6;;
+;;right_calf;7;;
+;;right_shin;8;;
+;;right_hamstring;9;;
+;;right_quad;10;;
+;;right_glute;11;;
+;;torso_back;12;;
+;;left_lower_back;13;;
+;;left_upper_back;14;;
+;;right_lower_back;15;;
+;;right_upper_back;16;;
+;;torso_front;17;;
+;;left_abdomen;18;;
+;;left_chest;19;;
+;;right_abdomen;20;;
+;;right_chest;21;;
+;;left_arm;22;;
+;;left_shoulder;23;;
+;;left_bicep;24;;
+;;left_tricep;25;;
+;;left_brachioradialis;26;Left anterior forearm;
+;;left_forearm_extensors;27;Left posterior forearm;
+;;right_arm;28;;
+;;right_shoulder;29;;
+;;right_bicep;30;;
+;;right_tricep;31;;
+;;right_brachioradialis;32;Right anterior forearm;
+;;right_forearm_extensors;33;Right posterior forearm;
+;;neck;34;;
+;;throat;35;;
+;;;;;
+segment_lap_status;enum;;;;
+;;end;0;;
+;;fail;1;;
+;;;;;
+segment_leaderboard_type;enum;;;;
+;;overall;0;;
+;;personal_best;1;;
+;;connections;2;;
+;;group;3;;
+;;challenger;4;;
+;;kom;5;;
+;;qom;6;;
+;;pr;7;;
+;;goal;8;;
+;;rival;9;;
+;;club_leader;10;;
+;;;;;
+segment_delete_status;enum;;;;
+;;do_not_delete;0;;
+;;delete_one;1;;
+;;delete_all;2;;
+;;;;;
+segment_selection_type;enum;;;;
+;;starred;0;;
+;;suggested;1;;
+;;;;;
+source_type;enum;;;;
+;;ant;0;External device connected with ANT;
+;;antplus;1;External device connected with ANT+;
+;;bluetooth;2;External device connected with BT;
+;;bluetooth_low_energy;3;External device connected with BLE;
+;;wifi;4;External device connected with Wifi;
+;;local;5;Onboard device;
+;;;;;
+rider_position_type;enum;;;;
+;;seated;0;;
+;;standing;1;;
+;;;;;
+power_phase_type;enum;;;;
+;;power_phase_start_angle;0;;
+;;power_phase_end_angle;1;;
+;;power_phase_arc_length;2;;
+;;power_phase_center;3;;
+;;;;;
+camera_event_type;enum;;;;
+;;video_start;0;Start of video recording;
+;;video_split;1;Mark of video file split (end of one file, beginning of the other);
+;;video_end;2;End of video recording;
+;;photo_taken;3;Still photo taken;
+;;video_second_stream_start;4;;
+;;video_second_stream_split;5;;
+;;video_second_stream_end;6;;
+;;video_split_start;7;Mark of video file split start;
+;;video_second_stream_split_start;8;;
+;;;;;
+sensor_type;enum;;;;
+;;accelerometer;0;;
+;;gyroscope;1;;
+;;compass;2;;
+;;;;;
+comm_timeout_type;uint16;;;;
+;;wildcard_pairing_timeout;0;Timeout pairing to any device;
+;;pairing_timeout;1;Timeout pairing to previously paired device;
+;;connection_lost;2;Temporary loss of communications;
+;;connection_timeout;3;Connection closed due to extended bad communications;
+camera_orientation_type;enum;;;;
+;;camera_orientation_0;0;;
+;;camera_orientation_90;1;;
+;;camera_orientation_180;2;;
+;;camera_orientation_270;3;;
+;;;;;
+attitude_stage;enum;;;;
+;;failed;0;;
+;;aligning;1;;
+;;degraded;2;;
+;;valid;3;;
+;;;;;
+attitude_validity;uint16;;;;
+;;track_angle_heading_valid;0x0001;;
+;;pitch_valid;0x0002;;
+;;roll_valid;0x0004;;
+;;lateral_body_accel_valid;0x0008;;
+;;normal_body_accel_valid;0x0010;;
+;;turn_rate_valid;0x0020;;
+;;hw_fail;0x0040;;
+;;mag_invalid;0x0080;;
+;;no_gps;0x0100;;
+;;gps_invalid;0x0200;;
+;;solution_coasting;0x0400;;
+;;true_track_angle;0x0800;;
+;;magnetic_heading;0x1000;;
+;;;;;
\ No newline at end of file
diff --git a/src/gis/fit/defs/fit_const.h b/src/gis/fit/defs/fit_const.h
new file mode 100644
index 0000000..21ebca2
--- /dev/null
+++ b/src/gis/fit/defs/fit_const.h
@@ -0,0 +1,43 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef FIT_CONST_H
+#define FIT_CONST_H
+
+#include <QtCore>
+
+/*
+ * 0: does not print any decoded fit messages and defintions
+ * 1: prints fit messages and defintions after finishing decoding
+ * 2: 1 + prints fit messages and defintions during decoing (just after finshing one)
+ */
+#define FITDEBUGLVL 1
+
+#define FITDEBUG(level, cmd) if(FITDEBUGLVL >= level) { cmd; }
+
+static const quint8 fitLocalMesgNrInvalid = 255;
+static const quint16 fitGlobalMesgNrInvalid = 0xffff;
+static const quint8 fitFieldDefNrInvalid = 255;
+
+typedef enum
+{
+    eFitArchEndianLittle = 0,
+    eFitArchEndianBig = 1
+}fit_arch_e;
+
+#endif // FIT_CONST_H
diff --git a/src/gis/fit/defs/fit_enums.h b/src/gis/fit/defs/fit_enums.h
new file mode 100644
index 0000000..86fcfdd
--- /dev/null
+++ b/src/gis/fit/defs/fit_enums.h
@@ -0,0 +1,1378 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef FIT_PROFILE_H
+#define FIT_PROFILE_H
+
+// ----------- start generated code -----------
+typedef enum
+{
+    eFileDevice = 1,
+    eFileSettings = 2,
+    eFileSport = 3,
+    eFileActivity = 4,
+    eFileWorkout = 5,
+    eFileCourse = 6,
+    eFileSchedules = 7,
+    eFileWeight = 9,
+    eFileTotals = 10,
+    eFileGoals = 11,
+    eFileBloodPressure = 14,
+    eFileMonitoringA = 15,
+    eFileActivitySummary = 20,
+    eFileMonitoringDaily = 28,
+    eFileMonitoringB = 32,
+    eFileSegment = 34,
+    eFileSegmentList = 35,
+    eFileMfgRangeMin = 0xF7,
+    eFileMfgRangeMax = 0xFE
+} file_e;
+
+typedef enum
+{
+    eMesgNumFileId = 0,
+    eMesgNumCapabilities = 1,
+    eMesgNumDeviceSettings = 2,
+    eMesgNumUserProfile = 3,
+    eMesgNumHrmProfile = 4,
+    eMesgNumSdmProfile = 5,
+    eMesgNumBikeProfile = 6,
+    eMesgNumZonesTarget = 7,
+    eMesgNumHrZone = 8,
+    eMesgNumPowerZone = 9,
+    eMesgNumMetZone = 10,
+    eMesgNumSport = 12,
+    eMesgNumGoal = 15,
+    eMesgNumSession = 18,
+    eMesgNumLap = 19,
+    eMesgNumRecord = 20,
+    eMesgNumEvent = 21,
+    eMesgNumDeviceInfo = 23,
+    eMesgNumWorkout = 26,
+    eMesgNumWorkoutStep = 27,
+    eMesgNumSchedule = 28,
+    eMesgNumWeightScale = 30,
+    eMesgNumCourse = 31,
+    eMesgNumCoursePoint = 32,
+    eMesgNumTotals = 33,
+    eMesgNumActivity = 34,
+    eMesgNumSoftware = 35,
+    eMesgNumFileCapabilities = 37,
+    eMesgNumMesgCapabilities = 38,
+    eMesgNumFieldCapabilities = 39,
+    eMesgNumFileCreator = 49,
+    eMesgNumBloodPressure = 51,
+    eMesgNumSpeedZone = 53,
+    eMesgNumMonitoring = 55,
+    eMesgNumTrainingFile = 72,
+    eMesgNumHrv = 78,
+    eMesgNumLength = 101,
+    eMesgNumMonitoringInfo = 103,
+    eMesgNumPad = 105,
+    eMesgNumSlaveDevice = 106,
+    eMesgNumCadenceZone = 131,
+    eMesgNumSegmentLap = 142,
+    eMesgNumMemoGlob = 145,
+    eMesgNumSegmentId = 148,
+    eMesgNumSegmentLeaderboardEntry = 149,
+    eMesgNumSegmentPoint = 150,
+    eMesgNumSegmentFile = 151,
+    eMesgNumGpsMetadata = 160,
+    eMesgNumCameraEvent = 161,
+    eMesgNumTimestampCorrelation = 162,
+    eMesgNumGyroscopeData = 164,
+    eMesgNumAccelerometerData = 165,
+    eMesgNumThreeDSensorCalibration = 167,
+    eMesgNumVideoFrame = 169,
+    eMesgNumObdiiData = 174,
+    eMesgNumNmeaSentence = 177,
+    eMesgNumAviationAttitude = 178,
+    eMesgNumVideo = 184,
+    eMesgNumVideoTitle = 185,
+    eMesgNumVideoDescription = 186,
+    eMesgNumVideoClip = 187,
+    eMesgNumMfgRangeMin = 0xFF00,
+    eMesgNumMfgRangeMax = 0xFFFE
+} mesg_num_e;
+
+typedef enum
+{
+    eChecksumClear = 0,
+    eChecksumOk = 1
+} checksum_e;
+
+typedef enum
+{
+    eFileFlagsRead = 0x02,
+    eFileFlagsWrite = 0x04,
+    eFileFlagsErase = 0x08
+} file_flags_e;
+
+typedef enum
+{
+    eMesgCountNumPerFile = 0,
+    eMesgCountMaxPerFile = 1,
+    eMesgCountMaxPerFileType = 2
+} mesg_count_e;
+
+typedef enum
+{
+    eDateTimeMin = 0x10000000
+} date_time_e;
+
+typedef enum
+{
+    eLocalDateTimeMin = 0x10000000
+} local_date_time_e;
+
+typedef enum
+{
+    eMessageIndexSelected = 0x8000,
+    eMessageIndexReserved = 0x7000,
+    eMessageIndexMask = 0x0FFF
+} message_index_e;
+
+typedef enum
+{
+    eDeviceIndexCreator = 0
+} device_index_e;
+
+typedef enum
+{
+    eGenderFemale = 0,
+    eGenderMale = 1
+} gender_e;
+
+typedef enum
+{
+    eLanguageEnglish = 0,
+    eLanguageFrench = 1,
+    eLanguageItalian = 2,
+    eLanguageGerman = 3,
+    eLanguageSpanish = 4,
+    eLanguageCroatian = 5,
+    eLanguageCzech = 6,
+    eLanguageDanish = 7,
+    eLanguageDutch = 8,
+    eLanguageFinnish = 9,
+    eLanguageGreek = 10,
+    eLanguageHungarian = 11,
+    eLanguageNorwegian = 12,
+    eLanguagePolish = 13,
+    eLanguagePortuguese = 14,
+    eLanguageSlovakian = 15,
+    eLanguageSlovenian = 16,
+    eLanguageSwedish = 17,
+    eLanguageRussian = 18,
+    eLanguageTurkish = 19,
+    eLanguageLatvian = 20,
+    eLanguageUkrainian = 21,
+    eLanguageArabic = 22,
+    eLanguageFarsi = 23,
+    eLanguageBulgarian = 24,
+    eLanguageRomanian = 25,
+    eLanguageCustom = 254
+} language_e;
+
+typedef enum
+{
+    eTimeZoneAlmaty = 0,
+    eTimeZoneBangkok = 1,
+    eTimeZoneBombay = 2,
+    eTimeZoneBrasilia = 3,
+    eTimeZoneCairo = 4,
+    eTimeZoneCapeVerdeIs = 5,
+    eTimeZoneDarwin = 6,
+    eTimeZoneEniwetok = 7,
+    eTimeZoneFiji = 8,
+    eTimeZoneHongKong = 9,
+    eTimeZoneIslamabad = 10,
+    eTimeZoneKabul = 11,
+    eTimeZoneMagadan = 12,
+    eTimeZoneMidAtlantic = 13,
+    eTimeZoneMoscow = 14,
+    eTimeZoneMuscat = 15,
+    eTimeZoneNewfoundland = 16,
+    eTimeZoneSamoa = 17,
+    eTimeZoneSydney = 18,
+    eTimeZoneTehran = 19,
+    eTimeZoneTokyo = 20,
+    eTimeZoneUsAlaska = 21,
+    eTimeZoneUsAtlantic = 22,
+    eTimeZoneUsCentral = 23,
+    eTimeZoneUsEastern = 24,
+    eTimeZoneUsHawaii = 25,
+    eTimeZoneUsMountain = 26,
+    eTimeZoneUsPacific = 27,
+    eTimeZoneOther = 28,
+    eTimeZoneAuckland = 29,
+    eTimeZoneKathmandu = 30,
+    eTimeZoneEuropeWesternWet = 31,
+    eTimeZoneEuropeCentralCet = 32,
+    eTimeZoneEuropeEasternEet = 33,
+    eTimeZoneJakarta = 34,
+    eTimeZonePerth = 35,
+    eTimeZoneAdelaide = 36,
+    eTimeZoneBrisbane = 37,
+    eTimeZoneTasmania = 38,
+    eTimeZoneIceland = 39,
+    eTimeZoneAmsterdam = 40,
+    eTimeZoneAthens = 41,
+    eTimeZoneBarcelona = 42,
+    eTimeZoneBerlin = 43,
+    eTimeZoneBrussels = 44,
+    eTimeZoneBudapest = 45,
+    eTimeZoneCopenhagen = 46,
+    eTimeZoneDublin = 47,
+    eTimeZoneHelsinki = 48,
+    eTimeZoneLisbon = 49,
+    eTimeZoneLondon = 50,
+    eTimeZoneMadrid = 51,
+    eTimeZoneMunich = 52,
+    eTimeZoneOslo = 53,
+    eTimeZoneParis = 54,
+    eTimeZonePrague = 55,
+    eTimeZoneReykjavik = 56,
+    eTimeZoneRome = 57,
+    eTimeZoneStockholm = 58,
+    eTimeZoneVienna = 59,
+    eTimeZoneWarsaw = 60,
+    eTimeZoneZurich = 61,
+    eTimeZoneQuebec = 62,
+    eTimeZoneOntario = 63,
+    eTimeZoneManitoba = 64,
+    eTimeZoneSaskatchewan = 65,
+    eTimeZoneAlberta = 66,
+    eTimeZoneBritishColumbia = 67,
+    eTimeZoneBoise = 68,
+    eTimeZoneBoston = 69,
+    eTimeZoneChicago = 70,
+    eTimeZoneDallas = 71,
+    eTimeZoneDenver = 72,
+    eTimeZoneKansasCity = 73,
+    eTimeZoneLasVegas = 74,
+    eTimeZoneLosAngeles = 75,
+    eTimeZoneMiami = 76,
+    eTimeZoneMinneapolis = 77,
+    eTimeZoneNewYork = 78,
+    eTimeZoneNewOrleans = 79,
+    eTimeZonePhoenix = 80,
+    eTimeZoneSantaFe = 81,
+    eTimeZoneSeattle = 82,
+    eTimeZoneWashingtonDc = 83,
+    eTimeZoneUsArizona = 84,
+    eTimeZoneChita = 85,
+    eTimeZoneEkaterinburg = 86,
+    eTimeZoneIrkutsk = 87,
+    eTimeZoneKaliningrad = 88,
+    eTimeZoneKrasnoyarsk = 89,
+    eTimeZoneNovosibirsk = 90,
+    eTimeZonePetropavlovskKamchatskiy = 91,
+    eTimeZoneSamara = 92,
+    eTimeZoneVladivostok = 93,
+    eTimeZoneMexicoCentral = 94,
+    eTimeZoneMexicoMountain = 95,
+    eTimeZoneMexicoPacific = 96,
+    eTimeZoneCapeTown = 97,
+    eTimeZoneWinkhoek = 98,
+    eTimeZoneLagos = 99,
+    eTimeZoneRiyahd = 100,
+    eTimeZoneVenezuela = 101,
+    eTimeZoneAustraliaLh = 102,
+    eTimeZoneSantiago = 103,
+    eTimeZoneManual = 253,
+    eTimeZoneAutomatic = 254
+} time_zone_e;
+
+typedef enum
+{
+    eDisplayMeasureMetric = 0,
+    eDisplayMeasureStatute = 1
+} display_measure_e;
+
+typedef enum
+{
+    eDisplayHeartBpm = 0,
+    eDisplayHeartMax = 1,
+    eDisplayHeartReserve = 2
+} display_heart_e;
+
+typedef enum
+{
+    eDisplayPowerWatts = 0,
+    eDisplayPowerPercentFtp = 1
+} display_power_e;
+
+typedef enum
+{
+    eDisplayPositionDegree = 0,
+    eDisplayPositionDegreeMinute = 1,
+    eDisplayPositionDegreeMinuteSecond = 2,
+    eDisplayPositionAustrianGrid = 3,
+    eDisplayPositionBritishGrid = 4,
+    eDisplayPositionDutchGrid = 5,
+    eDisplayPositionHungarianGrid = 6,
+    eDisplayPositionFinnishGrid = 7,
+    eDisplayPositionGermanGrid = 8,
+    eDisplayPositionIcelandicGrid = 9,
+    eDisplayPositionIndonesianEquatorial = 10,
+    eDisplayPositionIndonesianIrian = 11,
+    eDisplayPositionIndonesianSouthern = 12,
+    eDisplayPositionIndiaZone0 = 13,
+    eDisplayPositionIndiaZoneIA = 14,
+    eDisplayPositionIndiaZoneIB = 15,
+    eDisplayPositionIndiaZoneIIA = 16,
+    eDisplayPositionIndiaZoneIIB = 17,
+    eDisplayPositionIndiaZoneIIIA = 18,
+    eDisplayPositionIndiaZoneIIIB = 19,
+    eDisplayPositionIndiaZoneIVA = 20,
+    eDisplayPositionIndiaZoneIVB = 21,
+    eDisplayPositionIrishTransverse = 22,
+    eDisplayPositionIrishGrid = 23,
+    eDisplayPositionLoran = 24,
+    eDisplayPositionMaidenheadGrid = 25,
+    eDisplayPositionMgrsGrid = 26,
+    eDisplayPositionNewZealandGrid = 27,
+    eDisplayPositionNewZealandTransverse = 28,
+    eDisplayPositionQatarGrid = 29,
+    eDisplayPositionModifiedSwedishGrid = 30,
+    eDisplayPositionSwedishGrid = 31,
+    eDisplayPositionSouthAfricanGrid = 32,
+    eDisplayPositionSwissGrid = 33,
+    eDisplayPositionTaiwanGrid = 34,
+    eDisplayPositionUnitedStatesGrid = 35,
+    eDisplayPositionUtmUpsGrid = 36,
+    eDisplayPositionWestMalayan = 37,
+    eDisplayPositionBorneoRso = 38,
+    eDisplayPositionEstonianGrid = 39,
+    eDisplayPositionLatvianGrid = 40,
+    eDisplayPositionSwedishRef99Grid = 41
+} display_position_e;
+
+typedef enum
+{
+    eSportGeneric = 0,
+    eSportRunning = 1,
+    eSportCycling = 2,
+    eSportTransition = 3,
+    eSportFitnessEquipment = 4,
+    eSportSwimming = 5,
+    eSportBasketball = 6,
+    eSportSoccer = 7,
+    eSportTennis = 8,
+    eSportAmericanFootball = 9,
+    eSportTraining = 10,
+    eSportWalking = 11,
+    eSportCrossCountrySkiing = 12,
+    eSportAlpineSkiing = 13,
+    eSportSnowboarding = 14,
+    eSportRowing = 15,
+    eSportMountaineering = 16,
+    eSportHiking = 17,
+    eSportMultisport = 18,
+    eSportPaddling = 19,
+    eSportFlying = 20,
+    eSportEBiking = 21,
+    eSportMotorcycling = 22,
+    eSportBoating = 23,
+    eSportDriving = 24,
+    eSportGolf = 25,
+    eSportHangGliding = 26,
+    eSportHorsebackRiding = 27,
+    eSportHunting = 28,
+    eSportFishing = 29,
+    eSportInlineSkating = 30,
+    eSportRockClimbing = 31,
+    eSportSailing = 32,
+    eSportIceSkating = 33,
+    eSportSkyDiving = 34,
+    eSportSnowshoeing = 35,
+    eSportSnowmobiling = 36,
+    eSportStandUpPaddleboarding = 37,
+    eSportSurfing = 38,
+    eSportWakeboarding = 39,
+    eSportWaterSkiing = 40,
+    eSportKayaking = 41,
+    eSportRafting = 42,
+    eSportWindsurfing = 43,
+    eSportKitesurfing = 44,
+    eSportAll = 254
+} sport_e;
+
+typedef enum
+{
+    eSportBits0Generic = 0x01,
+    eSportBits0Running = 0x02,
+    eSportBits0Cycling = 0x04,
+    eSportBits0Transition = 0x08,
+    eSportBits0FitnessEquipment = 0x10,
+    eSportBits0Swimming = 0x20,
+    eSportBits0Basketball = 0x40,
+    eSportBits0Soccer = 0x80
+} sport_bits_0_e;
+
+typedef enum
+{
+    eSportBits1Tennis = 0x01,
+    eSportBits1AmericanFootball = 0x02,
+    eSportBits1Training = 0x04,
+    eSportBits1Walking = 0x08,
+    eSportBits1CrossCountrySkiing = 0x10,
+    eSportBits1AlpineSkiing = 0x20,
+    eSportBits1Snowboarding = 0x40,
+    eSportBits1Rowing = 0x80
+} sport_bits_1_e;
+
+typedef enum
+{
+    eSportBits2Mountaineering = 0x01,
+    eSportBits2Hiking = 0x02,
+    eSportBits2Multisport = 0x04,
+    eSportBits2Paddling = 0x08,
+    eSportBits2Flying = 0x10,
+    eSportBits2EBiking = 0x20,
+    eSportBits2Motorcycling = 0x40,
+    eSportBits2Boating = 0x80
+} sport_bits_2_e;
+
+typedef enum
+{
+    eSportBits3Driving = 0x01,
+    eSportBits3Golf = 0x02,
+    eSportBits3HangGliding = 0x04,
+    eSportBits3HorsebackRiding = 0x08,
+    eSportBits3Hunting = 0x10,
+    eSportBits3Fishing = 0x20,
+    eSportBits3InlineSkating = 0x40,
+    eSportBits3RockClimbing = 0x80
+} sport_bits_3_e;
+
+typedef enum
+{
+    eSportBits4Sailing = 0x01,
+    eSportBits4IceSkating = 0x02,
+    eSportBits4SkyDiving = 0x04,
+    eSportBits4Snowshoeing = 0x08,
+    eSportBits4Snowmobiling = 0x10,
+    eSportBits4StandUpPaddleboarding = 0x20,
+    eSportBits4Surfing = 0x40,
+    eSportBits4Wakeboarding = 0x80
+} sport_bits_4_e;
+
+typedef enum
+{
+    eSportBits5WaterSkiing = 0x01,
+    eSportBits5Kayaking = 0x02,
+    eSportBits5Rafting = 0x04,
+    eSportBits5Windsurfing = 0x08,
+    eSportBits5Kitesurfing = 0x10
+} sport_bits_5_e;
+
+typedef enum
+{
+    eSubSportGeneric = 0,
+    eSubSportTreadmill = 1,
+    eSubSportStreet = 2,
+    eSubSportTrail = 3,
+    eSubSportTrack = 4,
+    eSubSportSpin = 5,
+    eSubSportIndoorCycling = 6,
+    eSubSportRoad = 7,
+    eSubSportMountain = 8,
+    eSubSportDownhill = 9,
+    eSubSportRecumbent = 10,
+    eSubSportCyclocross = 11,
+    eSubSportHandCycling = 12,
+    eSubSportTrackCycling = 13,
+    eSubSportIndoorRowing = 14,
+    eSubSportElliptical = 15,
+    eSubSportStairClimbing = 16,
+    eSubSportLapSwimming = 17,
+    eSubSportOpenWater = 18,
+    eSubSportFlexibilityTraining = 19,
+    eSubSportStrengthTraining = 20,
+    eSubSportWarmUp = 21,
+    eSubSportMatch = 22,
+    eSubSportExercise = 23,
+    eSubSportChallenge = 24,
+    eSubSportIndoorSkiing = 25,
+    eSubSportCardioTraining = 26,
+    eSubSportIndoorWalking = 27,
+    eSubSportEBikeFitness = 28,
+    eSubSportBmx = 29,
+    eSubSportCasualWalking = 30,
+    eSubSportSpeedWalking = 31,
+    eSubSportBikeToRunTransition = 32,
+    eSubSportRunToBikeTransition = 33,
+    eSubSportSwimToBikeTransition = 34,
+    eSubSportAtv = 35,
+    eSubSportMotocross = 36,
+    eSubSportBackcountry = 37,
+    eSubSportResort = 38,
+    eSubSportRcDrone = 39,
+    eSubSportWingsuit = 40,
+    eSubSportWhitewater = 41,
+    eSubSportAll = 254
+} sub_sport_e;
+
+typedef enum
+{
+    eSportEventUncategorized = 0,
+    eSportEventGeocaching = 1,
+    eSportEventFitness = 2,
+    eSportEventRecreation = 3,
+    eSportEventRace = 4,
+    eSportEventSpecialEvent = 5,
+    eSportEventTraining = 6,
+    eSportEventTransportation = 7,
+    eSportEventTouring = 8
+} sport_event_e;
+
+typedef enum
+{
+    eActivityManual = 0,
+    eActivityAutoMultiSport = 1
+} activity_e;
+
+typedef enum
+{
+    eIntensityActive = 0,
+    eIntensityRest = 1,
+    eIntensityWarmup = 2,
+    eIntensityCooldown = 3
+} intensity_e;
+
+typedef enum
+{
+    eSessionTriggerActivityEnd = 0,
+    eSessionTriggerManual = 1,
+    eSessionTriggerAutoMultiSport = 2,
+    eSessionTriggerFitnessEquipment = 3
+} session_trigger_e;
+
+typedef enum
+{
+    eAutolapTriggerTime = 0,
+    eAutolapTriggerDistance = 1,
+    eAutolapTriggerPositionStart = 2,
+    eAutolapTriggerPositionLap = 3,
+    eAutolapTriggerPositionWaypoint = 4,
+    eAutolapTriggerPositionMarked = 5,
+    eAutolapTriggerOff = 6
+} autolap_trigger_e;
+
+typedef enum
+{
+    eLapTriggerManual = 0,
+    eLapTriggerTime = 1,
+    eLapTriggerDistance = 2,
+    eLapTriggerPositionStart = 3,
+    eLapTriggerPositionLap = 4,
+    eLapTriggerPositionWaypoint = 5,
+    eLapTriggerPositionMarked = 6,
+    eLapTriggerSessionEnd = 7,
+    eLapTriggerFitnessEquipment = 8
+} lap_trigger_e;
+
+typedef enum
+{
+    eEventTimer = 0,
+    eEventWorkout = 3,
+    eEventWorkoutStep = 4,
+    eEventPowerDown = 5,
+    eEventPowerUp = 6,
+    eEventOffCourse = 7,
+    eEventSession = 8,
+    eEventLap = 9,
+    eEventCoursePoint = 10,
+    eEventBattery = 11,
+    eEventVirtualPartnerPace = 12,
+    eEventHrHighAlert = 13,
+    eEventHrLowAlert = 14,
+    eEventSpeedHighAlert = 15,
+    eEventSpeedLowAlert = 16,
+    eEventCadHighAlert = 17,
+    eEventCadLowAlert = 18,
+    eEventPowerHighAlert = 19,
+    eEventPowerLowAlert = 20,
+    eEventRecoveryHr = 21,
+    eEventBatteryLow = 22,
+    eEventTimeDurationAlert = 23,
+    eEventDistanceDurationAlert = 24,
+    eEventCalorieDurationAlert = 25,
+    eEventActivity = 26,
+    eEventFitnessEquipment = 27,
+    eEventLength = 28,
+    eEventUserMarker = 32,
+    eEventSportPoint = 33,
+    eEventCalibration = 36,
+    eEventFrontGearChange = 42,
+    eEventRearGearChange = 43,
+    eEventRiderPositionChange = 44,
+    eEventElevHighAlert = 45,
+    eEventElevLowAlert = 46,
+    eEventCommTimeout = 47
+} event_e;
+
+typedef enum
+{
+    eEventTypeStart = 0,
+    eEventTypeStop = 1,
+    eEventTypeConsecutiveDepreciated = 2,
+    eEventTypeMarker = 3,
+    eEventTypeStopAll = 4,
+    eEventTypeBeginDepreciated = 5,
+    eEventTypeEndDepreciated = 6,
+    eEventTypeEndAllDepreciated = 7,
+    eEventTypeStopDisable = 8,
+    eEventTypeStopDisableAll = 9
+} event_type_e;
+
+typedef enum
+{
+    eTimerTriggerManual = 0,
+    eTimerTriggerAuto = 1,
+    eTimerTriggerFitnessEquipment = 2
+} timer_trigger_e;
+
+typedef enum
+{
+    eFitnessEquipmentStateReady = 0,
+    eFitnessEquipmentStateInUse = 1,
+    eFitnessEquipmentStatePaused = 2,
+    eFitnessEquipmentStateUnknown = 3
+} fitness_equipment_state_e;
+
+typedef enum
+{
+    eActivityClassLevel = 0x7F,
+    eActivityClassLevelMax = 100,
+    eActivityClassAthlete = 0x80
+} activity_class_e;
+
+typedef enum
+{
+    eHrZoneCalcCustom = 0,
+    eHrZoneCalcPercentMaxHr = 1,
+    eHrZoneCalcPercentHrr = 2
+} hr_zone_calc_e;
+
+typedef enum
+{
+    ePwrZoneCalcCustom = 0,
+    ePwrZoneCalcPercentFtp = 1
+} pwr_zone_calc_e;
+
+typedef enum
+{
+    eWktStepDurationTime = 0,
+    eWktStepDurationDistance = 1,
+    eWktStepDurationHrLessThan = 2,
+    eWktStepDurationHrGreaterThan = 3,
+    eWktStepDurationCalories = 4,
+    eWktStepDurationOpen = 5,
+    eWktStepDurationRepeatUntilStepsCmplt = 6,
+    eWktStepDurationRepeatUntilTime = 7,
+    eWktStepDurationRepeatUntilDistance = 8,
+    eWktStepDurationRepeatUntilCalories = 9,
+    eWktStepDurationRepeatUntilHrLessThan = 10,
+    eWktStepDurationRepeatUntilHrGreaterThan = 11,
+    eWktStepDurationRepeatUntilPowerLessThan = 12,
+    eWktStepDurationRepeatUntilPowerGreaterThan = 13,
+    eWktStepDurationPowerLessThan = 14,
+    eWktStepDurationPowerGreaterThan = 15,
+    eWktStepDurationRepetitionTime = 28
+} wkt_step_duration_e;
+
+typedef enum
+{
+    eWktStepTargetSpeed = 0,
+    eWktStepTargetHeartRate = 1,
+    eWktStepTargetOpen = 2,
+    eWktStepTargetCadence = 3,
+    eWktStepTargetPower = 4,
+    eWktStepTargetGrade = 5,
+    eWktStepTargetResistance = 6
+} wkt_step_target_e;
+
+typedef enum
+{
+    eGoalTime = 0,
+    eGoalDistance = 1,
+    eGoalCalories = 2,
+    eGoalFrequency = 3,
+    eGoalSteps = 4
+} goal_e;
+
+typedef enum
+{
+    eGoalRecurrenceOff = 0,
+    eGoalRecurrenceDaily = 1,
+    eGoalRecurrenceWeekly = 2,
+    eGoalRecurrenceMonthly = 3,
+    eGoalRecurrenceYearly = 4,
+    eGoalRecurrenceCustom = 5
+} goal_recurrence_e;
+
+typedef enum
+{
+    eScheduleWorkout = 0,
+    eScheduleCourse = 1
+} schedule_e;
+
+typedef enum
+{
+    eCoursePointGeneric = 0,
+    eCoursePointSummit = 1,
+    eCoursePointValley = 2,
+    eCoursePointWater = 3,
+    eCoursePointFood = 4,
+    eCoursePointDanger = 5,
+    eCoursePointLeft = 6,
+    eCoursePointRight = 7,
+    eCoursePointStraight = 8,
+    eCoursePointFirstAid = 9,
+    eCoursePointFourthCategory = 10,
+    eCoursePointThirdCategory = 11,
+    eCoursePointSecondCategory = 12,
+    eCoursePointFirstCategory = 13,
+    eCoursePointHorsCategory = 14,
+    eCoursePointSprint = 15,
+    eCoursePointLeftFork = 16,
+    eCoursePointRightFork = 17,
+    eCoursePointMiddleFork = 18,
+    eCoursePointSlightLeft = 19,
+    eCoursePointSharpLeft = 20,
+    eCoursePointSlightRight = 21,
+    eCoursePointSharpRight = 22,
+    eCoursePointUTurn = 23
+} course_point_e;
+
+typedef enum
+{
+    eManufacturerGarmin = 1,
+    eManufacturerGarminFr405Antfs = 2,
+    eManufacturerZephyr = 3,
+    eManufacturerDayton = 4,
+    eManufacturerIdt = 5,
+    eManufacturerSrm = 6,
+    eManufacturerQuarq = 7,
+    eManufacturerIbike = 8,
+    eManufacturerSaris = 9,
+    eManufacturerSparkHk = 10,
+    eManufacturerTanita = 11,
+    eManufacturerEchowell = 12,
+    eManufacturerDynastreamOem = 13,
+    eManufacturerNautilus = 14,
+    eManufacturerDynastream = 15,
+    eManufacturerTimex = 16,
+    eManufacturerMetrigear = 17,
+    eManufacturerXelic = 18,
+    eManufacturerBeurer = 19,
+    eManufacturerCardiosport = 20,
+    eManufacturerAAndD = 21,
+    eManufacturerHmm = 22,
+    eManufacturerSuunto = 23,
+    eManufacturerThitaElektronik = 24,
+    eManufacturerGpulse = 25,
+    eManufacturerCleanMobile = 26,
+    eManufacturerPedalBrain = 27,
+    eManufacturerPeaksware = 28,
+    eManufacturerSaxonar = 29,
+    eManufacturerLemondFitness = 30,
+    eManufacturerDexcom = 31,
+    eManufacturerWahooFitness = 32,
+    eManufacturerOctaneFitness = 33,
+    eManufacturerArchinoetics = 34,
+    eManufacturerTheHurtBox = 35,
+    eManufacturerCitizenSystems = 36,
+    eManufacturerMagellan = 37,
+    eManufacturerOsynce = 38,
+    eManufacturerHolux = 39,
+    eManufacturerConcept2 = 40,
+    eManufacturerOneGiantLeap = 42,
+    eManufacturerAceSensor = 43,
+    eManufacturerBrimBrothers = 44,
+    eManufacturerXplova = 45,
+    eManufacturerPerceptionDigital = 46,
+    eManufacturerBf1systems = 47,
+    eManufacturerPioneer = 48,
+    eManufacturerSpantec = 49,
+    eManufacturerMetalogics = 50,
+    eManufacturer4iiiis = 51,
+    eManufacturerSeikoEpson = 52,
+    eManufacturerSeikoEpsonOem = 53,
+    eManufacturerIforPowell = 54,
+    eManufacturerMaxwellGuider = 55,
+    eManufacturerStarTrac = 56,
+    eManufacturerBreakaway = 57,
+    eManufacturerAlatechTechnologyLtd = 58,
+    eManufacturerMioTechnologyEurope = 59,
+    eManufacturerRotor = 60,
+    eManufacturerGeonaute = 61,
+    eManufacturerIdBike = 62,
+    eManufacturerSpecialized = 63,
+    eManufacturerWtek = 64,
+    eManufacturerPhysicalEnterprises = 65,
+    eManufacturerNorthPoleEngineering = 66,
+    eManufacturerBkool = 67,
+    eManufacturerCateye = 68,
+    eManufacturerStagesCycling = 69,
+    eManufacturerSigmasport = 70,
+    eManufacturerTomtom = 71,
+    eManufacturerPeripedal = 72,
+    eManufacturerWattbike = 73,
+    eManufacturerMoxy = 76,
+    eManufacturerCiclosport = 77,
+    eManufacturerPowerbahn = 78,
+    eManufacturerAcornProjectsAps = 79,
+    eManufacturerLifebeam = 80,
+    eManufacturerBontrager = 81,
+    eManufacturerWellgo = 82,
+    eManufacturerScosche = 83,
+    eManufacturerMagura = 84,
+    eManufacturerWoodway = 85,
+    eManufacturerElite = 86,
+    eManufacturerNielsenKellerman = 87,
+    eManufacturerDkCity = 88,
+    eManufacturerTacx = 89,
+    eManufacturerDirectionTechnology = 90,
+    eManufacturerMagtonic = 91,
+    eManufacturer1partcarbon = 92,
+    eManufacturerInsideRideTechnologies = 93,
+    eManufacturerSoundOfMotion = 94,
+    eManufacturerStryd = 95,
+    eManufacturerIcg = 96,
+    eManufacturerMiPulse = 97,
+    eManufacturerBsxAthletics = 98,
+    eManufacturerLook = 99,
+    eManufacturerDevelopment = 255,
+    eManufacturerHealthandlife = 257,
+    eManufacturerLezyne = 258,
+    eManufacturerScribeLabs = 259,
+    eManufacturerZwift = 260,
+    eManufacturerWatteam = 261,
+    eManufacturerRecon = 262,
+    eManufacturerFaveroElectronics = 263,
+    eManufacturerDynovelo = 264,
+    eManufacturerStrava = 265,
+    eManufacturerActigraphcorp = 5759
+} manufacturer_e;
+
+typedef enum
+{
+    eGarminProductHrm1 = 1,
+    eGarminProductAxh01 = 2,
+    eGarminProductAxb01 = 3,
+    eGarminProductAxb02 = 4,
+    eGarminProductHrm2ss = 5,
+    eGarminProductDsiAlf02 = 6,
+    eGarminProductHrm3ss = 7,
+    eGarminProductHrmRunSingleByteProductId = 8,
+    eGarminProductBsm = 9,
+    eGarminProductBcm = 10,
+    eGarminProductAxs01 = 11,
+    eGarminProductHrmTriSingleByteProductId = 12,
+    eGarminProductFr225SingleByteProductId = 14,
+    eGarminProductFr301China = 473,
+    eGarminProductFr301Japan = 474,
+    eGarminProductFr301Korea = 475,
+    eGarminProductFr301Taiwan = 494,
+    eGarminProductFr405 = 717,
+    eGarminProductFr50 = 782,
+    eGarminProductFr405Japan = 987,
+    eGarminProductFr60 = 988,
+    eGarminProductDsiAlf01 = 1011,
+    eGarminProductFr310xt = 1018,
+    eGarminProductEdge500 = 1036,
+    eGarminProductFr110 = 1124,
+    eGarminProductEdge800 = 1169,
+    eGarminProductEdge500Taiwan = 1199,
+    eGarminProductEdge500Japan = 1213,
+    eGarminProductChirp = 1253,
+    eGarminProductFr110Japan = 1274,
+    eGarminProductEdge200 = 1325,
+    eGarminProductFr910xt = 1328,
+    eGarminProductEdge800Taiwan = 1333,
+    eGarminProductEdge800Japan = 1334,
+    eGarminProductAlf04 = 1341,
+    eGarminProductFr610 = 1345,
+    eGarminProductFr210Japan = 1360,
+    eGarminProductVectorSs = 1380,
+    eGarminProductVectorCp = 1381,
+    eGarminProductEdge800China = 1386,
+    eGarminProductEdge500China = 1387,
+    eGarminProductFr610Japan = 1410,
+    eGarminProductEdge500Korea = 1422,
+    eGarminProductFr70 = 1436,
+    eGarminProductFr310xt4t = 1446,
+    eGarminProductAmx = 1461,
+    eGarminProductFr10 = 1482,
+    eGarminProductEdge800Korea = 1497,
+    eGarminProductSwim = 1499,
+    eGarminProductFr910xtChina = 1537,
+    eGarminProductFenix = 1551,
+    eGarminProductEdge200Taiwan = 1555,
+    eGarminProductEdge510 = 1561,
+    eGarminProductEdge810 = 1567,
+    eGarminProductTempe = 1570,
+    eGarminProductFr910xtJapan = 1600,
+    eGarminProductFr620 = 1623,
+    eGarminProductFr220 = 1632,
+    eGarminProductFr910xtKorea = 1664,
+    eGarminProductFr10Japan = 1688,
+    eGarminProductEdge810Japan = 1721,
+    eGarminProductVirbElite = 1735,
+    eGarminProductEdgeTouring = 1736,
+    eGarminProductEdge510Japan = 1742,
+    eGarminProductHrmTri = 1743,
+    eGarminProductHrmRun = 1752,
+    eGarminProductFr920xt = 1765,
+    eGarminProductEdge510Asia = 1821,
+    eGarminProductEdge810China = 1822,
+    eGarminProductEdge810Taiwan = 1823,
+    eGarminProductEdge1000 = 1836,
+    eGarminProductVivoFit = 1837,
+    eGarminProductVirbRemote = 1853,
+    eGarminProductVivoKi = 1885,
+    eGarminProductFr15 = 1903,
+    eGarminProductVivoActive = 1907,
+    eGarminProductEdge510Korea = 1918,
+    eGarminProductFr620Japan = 1928,
+    eGarminProductFr620China = 1929,
+    eGarminProductFr220Japan = 1930,
+    eGarminProductFr220China = 1931,
+    eGarminProductApproachS6 = 1936,
+    eGarminProductVivoSmart = 1956,
+    eGarminProductFenix2 = 1967,
+    eGarminProductEpix = 1988,
+    eGarminProductFenix3 = 2050,
+    eGarminProductEdge1000Taiwan = 2052,
+    eGarminProductEdge1000Japan = 2053,
+    eGarminProductFr15Japan = 2061,
+    eGarminProductEdge520 = 2067,
+    eGarminProductEdge1000China = 2070,
+    eGarminProductFr620Russia = 2072,
+    eGarminProductFr220Russia = 2073,
+    eGarminProductVectorS = 2079,
+    eGarminProductEdge1000Korea = 2100,
+    eGarminProductFr920xtTaiwan = 2130,
+    eGarminProductFr920xtChina = 2131,
+    eGarminProductFr920xtJapan = 2132,
+    eGarminProductVirbx = 2134,
+    eGarminProductVivoSmartApac = 2135,
+    eGarminProductEtrexTouch = 2140,
+    eGarminProductEdge25 = 2147,
+    eGarminProductVivoFit2 = 2150,
+    eGarminProductFr225 = 2153,
+    eGarminProductVivoActiveApac = 2160,
+    eGarminProductVector2 = 2161,
+    eGarminProductVector2s = 2162,
+    eGarminProductVirbxe = 2172,
+    eGarminProductFr620Taiwan = 2173,
+    eGarminProductFr220Taiwan = 2174,
+    eGarminProductFenix3China = 2188,
+    eGarminProductFenix3Twn = 2189,
+    eGarminProductVariaHeadlight = 2192,
+    eGarminProductVariaTaillightOld = 2193,
+    eGarminProductFr225Asia = 2219,
+    eGarminProductVariaRadarTaillight = 2225,
+    eGarminProductVariaRadarDisplay = 2226,
+    eGarminProductEdge20 = 2238,
+    eGarminProductD2Bravo = 2262,
+    eGarminProductVariaRemote = 2276,
+    eGarminProductSdm4 = 10007,
+    eGarminProductEdgeRemote = 10014,
+    eGarminProductTrainingCenter = 20119,
+    eGarminProductAndroidAntplusPlugin = 65532,
+    eGarminProductConnect = 65534
+} garmin_product_e;
+
+typedef enum
+{
+    eAntplusDeviceTypeAntfs = 1,
+    eAntplusDeviceTypeBikePower = 11,
+    eAntplusDeviceTypeEnvironmentSensorLegacy = 12,
+    eAntplusDeviceTypeMultiSportSpeedDistance = 15,
+    eAntplusDeviceTypeControl = 16,
+    eAntplusDeviceTypeFitnessEquipment = 17,
+    eAntplusDeviceTypeBloodPressure = 18,
+    eAntplusDeviceTypeGeocacheNode = 19,
+    eAntplusDeviceTypeLightElectricVehicle = 20,
+    eAntplusDeviceTypeEnvSensor = 25,
+    eAntplusDeviceTypeRacquet = 26,
+    eAntplusDeviceTypeWeightScale = 119,
+    eAntplusDeviceTypeHeartRate = 120,
+    eAntplusDeviceTypeBikeSpeedCadence = 121,
+    eAntplusDeviceTypeBikeCadence = 122,
+    eAntplusDeviceTypeBikeSpeed = 123,
+    eAntplusDeviceTypeStrideSpeedDistance = 124
+} antplus_device_type_e;
+
+typedef enum
+{
+    eAntNetworkPublic = 0,
+    eAntNetworkAntplus = 1,
+    eAntNetworkAntfs = 2,
+    eAntNetworkPrivate = 3
+} ant_network_e;
+
+typedef enum
+{
+    eWorkoutCapabilitiesInterval = 0x00000001,
+    eWorkoutCapabilitiesCustom = 0x00000002,
+    eWorkoutCapabilitiesFitnessEquipment = 0x00000004,
+    eWorkoutCapabilitiesFirstbeat = 0x00000008,
+    eWorkoutCapabilitiesNewLeaf = 0x00000010,
+    eWorkoutCapabilitiesTcx = 0x00000020,
+    eWorkoutCapabilitiesSpeed = 0x00000080,
+    eWorkoutCapabilitiesHeartRate = 0x00000100,
+    eWorkoutCapabilitiesDistance = 0x00000200,
+    eWorkoutCapabilitiesCadence = 0x00000400,
+    eWorkoutCapabilitiesPower = 0x00000800,
+    eWorkoutCapabilitiesGrade = 0x00001000,
+    eWorkoutCapabilitiesResistance = 0x00002000,
+    eWorkoutCapabilitiesProtected = 0x00004000
+} workout_capabilities_e;
+
+typedef enum
+{
+    eBatteryStatusNew = 1,
+    eBatteryStatusGood = 2,
+    eBatteryStatusOk = 3,
+    eBatteryStatusLow = 4,
+    eBatteryStatusCritical = 5,
+    eBatteryStatusUnknown = 7
+} battery_status_e;
+
+typedef enum
+{
+    eHrTypeNormal = 0,
+    eHrTypeIrregular = 1
+} hr_type_e;
+
+typedef enum
+{
+    eCourseCapabilitiesProcessed = 0x00000001,
+    eCourseCapabilitiesValid = 0x00000002,
+    eCourseCapabilitiesTime = 0x00000004,
+    eCourseCapabilitiesDistance = 0x00000008,
+    eCourseCapabilitiesPosition = 0x00000010,
+    eCourseCapabilitiesHeartRate = 0x00000020,
+    eCourseCapabilitiesPower = 0x00000040,
+    eCourseCapabilitiesCadence = 0x00000080,
+    eCourseCapabilitiesTraining = 0x00000100,
+    eCourseCapabilitiesNavigation = 0x00000200,
+    eCourseCapabilitiesBikeway = 0x00000400
+} course_capabilities_e;
+
+typedef enum
+{
+    eWeightCalculating = 0xFFFE
+} weight_e;
+
+typedef enum
+{
+    eWorkoutHrBpmOffset = 100
+} workout_hr_e;
+
+typedef enum
+{
+    eWorkoutPowerWattsOffset = 1000
+} workout_power_e;
+
+typedef enum
+{
+    eBpStatusNoError = 0,
+    eBpStatusErrorIncompleteData = 1,
+    eBpStatusErrorNoMeasurement = 2,
+    eBpStatusErrorDataOutOfRange = 3,
+    eBpStatusErrorIrregularHeartRate = 4
+} bp_status_e;
+
+typedef enum
+{
+    eUserLocalIdLocalMin = 0x0000,
+    eUserLocalIdLocalMax = 0x000F,
+    eUserLocalIdStationaryMin = 0x0010,
+    eUserLocalIdStationaryMax = 0x00FF,
+    eUserLocalIdPortableMin = 0x0100,
+    eUserLocalIdPortableMax = 0xFFFE
+} user_local_id_e;
+
+typedef enum
+{
+    eSwimStrokeFreestyle = 0,
+    eSwimStrokeBackstroke = 1,
+    eSwimStrokeBreaststroke = 2,
+    eSwimStrokeButterfly = 3,
+    eSwimStrokeDrill = 4,
+    eSwimStrokeMixed = 5,
+    eSwimStrokeIm = 6
+} swim_stroke_e;
+
+typedef enum
+{
+    eActivityTypeGeneric = 0,
+    eActivityTypeRunning = 1,
+    eActivityTypeCycling = 2,
+    eActivityTypeTransition = 3,
+    eActivityTypeFitnessEquipment = 4,
+    eActivityTypeSwimming = 5,
+    eActivityTypeWalking = 6,
+    eActivityTypeAll = 254
+} activity_type_e;
+
+typedef enum
+{
+    eActivitySubtypeGeneric = 0,
+    eActivitySubtypeTreadmill = 1,
+    eActivitySubtypeStreet = 2,
+    eActivitySubtypeTrail = 3,
+    eActivitySubtypeTrack = 4,
+    eActivitySubtypeSpin = 5,
+    eActivitySubtypeIndoorCycling = 6,
+    eActivitySubtypeRoad = 7,
+    eActivitySubtypeMountain = 8,
+    eActivitySubtypeDownhill = 9,
+    eActivitySubtypeRecumbent = 10,
+    eActivitySubtypeCyclocross = 11,
+    eActivitySubtypeHandCycling = 12,
+    eActivitySubtypeTrackCycling = 13,
+    eActivitySubtypeIndoorRowing = 14,
+    eActivitySubtypeElliptical = 15,
+    eActivitySubtypeStairClimbing = 16,
+    eActivitySubtypeLapSwimming = 17,
+    eActivitySubtypeOpenWater = 18,
+    eActivitySubtypeAll = 254
+} activity_subtype_e;
+
+typedef enum
+{
+    eActivityLevelLow = 0,
+    eActivityLevelMedium = 1,
+    eActivityLevelHigh = 2
+} activity_level_e;
+
+typedef enum
+{
+    eLeftRightBalanceMask = 0x7F,
+    eLeftRightBalanceRight = 0x80
+} left_right_balance_e;
+
+typedef enum
+{
+    eLeftRightBalance100Mask = 0x3FFF,
+    eLeftRightBalance100Right = 0x8000
+} left_right_balance_100_e;
+
+typedef enum
+{
+    eLengthTypeIdle = 0,
+    eLengthTypeActive = 1
+} length_type_e;
+
+typedef enum
+{
+    eConnectivityCapabilitiesBluetooth = 0x00000001,
+    eConnectivityCapabilitiesBluetoothLe = 0x00000002,
+    eConnectivityCapabilitiesAnt = 0x00000004,
+    eConnectivityCapabilitiesActivityUpload = 0x00000008,
+    eConnectivityCapabilitiesCourseDownload = 0x00000010,
+    eConnectivityCapabilitiesWorkoutDownload = 0x00000020,
+    eConnectivityCapabilitiesLiveTrack = 0x00000040,
+    eConnectivityCapabilitiesWeatherConditions = 0x00000080,
+    eConnectivityCapabilitiesWeatherAlerts = 0x00000100,
+    eConnectivityCapabilitiesGpsEphemerisDownload = 0x00000200,
+    eConnectivityCapabilitiesExplicitArchive = 0x00000400,
+    eConnectivityCapabilitiesSetupIncomplete = 0x00000800,
+    eConnectivityCapabilitiesContinueSyncAfterSoftwareUpdate = 0x00001000,
+    eConnectivityCapabilitiesConnectIqAppDownload = 0x00002000
+} connectivity_capabilities_e;
+
+typedef enum
+{
+    eStrokeTypeNoEvent = 0,
+    eStrokeTypeOther = 1,
+    eStrokeTypeServe = 2,
+    eStrokeTypeForehand = 3,
+    eStrokeTypeBackhand = 4,
+    eStrokeTypeSmash = 5
+} stroke_type_e;
+
+typedef enum
+{
+    eBodyLocationLeftLeg = 0,
+    eBodyLocationLeftCalf = 1,
+    eBodyLocationLeftShin = 2,
+    eBodyLocationLeftHamstring = 3,
+    eBodyLocationLeftQuad = 4,
+    eBodyLocationLeftGlute = 5,
+    eBodyLocationRightLeg = 6,
+    eBodyLocationRightCalf = 7,
+    eBodyLocationRightShin = 8,
+    eBodyLocationRightHamstring = 9,
+    eBodyLocationRightQuad = 10,
+    eBodyLocationRightGlute = 11,
+    eBodyLocationTorsoBack = 12,
+    eBodyLocationLeftLowerBack = 13,
+    eBodyLocationLeftUpperBack = 14,
+    eBodyLocationRightLowerBack = 15,
+    eBodyLocationRightUpperBack = 16,
+    eBodyLocationTorsoFront = 17,
+    eBodyLocationLeftAbdomen = 18,
+    eBodyLocationLeftChest = 19,
+    eBodyLocationRightAbdomen = 20,
+    eBodyLocationRightChest = 21,
+    eBodyLocationLeftArm = 22,
+    eBodyLocationLeftShoulder = 23,
+    eBodyLocationLeftBicep = 24,
+    eBodyLocationLeftTricep = 25,
+    eBodyLocationLeftBrachioradialis = 26,
+    eBodyLocationLeftForearmExtensors = 27,
+    eBodyLocationRightArm = 28,
+    eBodyLocationRightShoulder = 29,
+    eBodyLocationRightBicep = 30,
+    eBodyLocationRightTricep = 31,
+    eBodyLocationRightBrachioradialis = 32,
+    eBodyLocationRightForearmExtensors = 33,
+    eBodyLocationNeck = 34,
+    eBodyLocationThroat = 35
+} body_location_e;
+
+typedef enum
+{
+    eSegmentLapStatusEnd = 0,
+    eSegmentLapStatusFail = 1
+} segment_lap_status_e;
+
+typedef enum
+{
+    eSegmentLeaderboardTypeOverall = 0,
+    eSegmentLeaderboardTypePersonalBest = 1,
+    eSegmentLeaderboardTypeConnections = 2,
+    eSegmentLeaderboardTypeGroup = 3,
+    eSegmentLeaderboardTypeChallenger = 4,
+    eSegmentLeaderboardTypeKom = 5,
+    eSegmentLeaderboardTypeQom = 6,
+    eSegmentLeaderboardTypePr = 7,
+    eSegmentLeaderboardTypeGoal = 8,
+    eSegmentLeaderboardTypeRival = 9,
+    eSegmentLeaderboardTypeClubLeader = 10
+} segment_leaderboard_type_e;
+
+typedef enum
+{
+    eSegmentDeleteStatusDoNotDelete = 0,
+    eSegmentDeleteStatusDeleteOne = 1,
+    eSegmentDeleteStatusDeleteAll = 2
+} segment_delete_status_e;
+
+typedef enum
+{
+    eSegmentSelectionTypeStarred = 0,
+    eSegmentSelectionTypeSuggested = 1
+} segment_selection_type_e;
+
+typedef enum
+{
+    eSourceTypeAnt = 0,
+    eSourceTypeAntplus = 1,
+    eSourceTypeBluetooth = 2,
+    eSourceTypeBluetoothLowEnergy = 3,
+    eSourceTypeWifi = 4,
+    eSourceTypeLocal = 5
+} source_type_e;
+
+typedef enum
+{
+    eRiderPositionTypeSeated = 0,
+    eRiderPositionTypeStanding = 1
+} rider_position_type_e;
+
+typedef enum
+{
+    ePowerPhaseTypePowerPhaseStartAngle = 0,
+    ePowerPhaseTypePowerPhaseEndAngle = 1,
+    ePowerPhaseTypePowerPhaseArcLength = 2,
+    ePowerPhaseTypePowerPhaseCenter = 3
+} power_phase_type_e;
+
+typedef enum
+{
+    eCameraEventTypeVideoStart = 0,
+    eCameraEventTypeVideoSplit = 1,
+    eCameraEventTypeVideoEnd = 2,
+    eCameraEventTypePhotoTaken = 3,
+    eCameraEventTypeVideoSecondStreamStart = 4,
+    eCameraEventTypeVideoSecondStreamSplit = 5,
+    eCameraEventTypeVideoSecondStreamEnd = 6,
+    eCameraEventTypeVideoSplitStart = 7,
+    eCameraEventTypeVideoSecondStreamSplitStart = 8
+} camera_event_type_e;
+
+typedef enum
+{
+    eSensorTypeAccelerometer = 0,
+    eSensorTypeGyroscope = 1,
+    eSensorTypeCompass = 2
+} sensor_type_e;
+
+typedef enum
+{
+    eCommTimeoutTypeWildcardPairingTimeout = 0,
+    eCommTimeoutTypePairingTimeout = 1,
+    eCommTimeoutTypeConnectionLost = 2,
+} comm_timeout_type_e;
+
+typedef enum
+{
+    eCameraOrientationTypeCameraOrientation0 = 0,
+    eCameraOrientationTypeCameraOrientation90 = 1,
+    eCameraOrientationTypeCameraOrientation180 = 2,
+    eCameraOrientationTypeCameraOrientation270 = 3
+} camera_orientation_type_e;
+
+typedef enum
+{
+    eAttitudeStageFailed = 0,
+    eAttitudeStageAligning = 1,
+    eAttitudeStageDegraded = 2,
+    eAttitudeStageValid = 3
+} attitude_stage_e;
+
+typedef enum
+{
+    eAttitudeValidityTrackAngleHeadingValid = 0x0001,
+    eAttitudeValidityPitchValid = 0x0002,
+    eAttitudeValidityRollValid = 0x0004,
+    eAttitudeValidityLateralBodyAccelValid = 0x0008,
+    eAttitudeValidityNormalBodyAccelValid = 0x0010,
+    eAttitudeValidityTurnRateValid = 0x0020,
+    eAttitudeValidityHwFail = 0x0040,
+    eAttitudeValidityMagInvalid = 0x0080,
+    eAttitudeValidityNoGps = 0x0100,
+    eAttitudeValidityGpsInvalid = 0x0200,
+    eAttitudeValiditySolutionCoasting = 0x0400,
+    eAttitudeValidityTrueTrackAngle = 0x0800,
+    eAttitudeValidityMagneticHeading = 0x1000
+} attitude_validity_e;
+
+// ----------- end generated code -----------
+
+#endif // FIT_PROFILE_H
diff --git a/src/gis/fit/defs/fit_fields.h b/src/gis/fit/defs/fit_fields.h
new file mode 100644
index 0000000..1f65afb
--- /dev/null
+++ b/src/gis/fit/defs/fit_fields.h
@@ -0,0 +1,1030 @@
+/**********************************************************************************************
+   Copyright (C) 2015 Ivo Kronenberg
+
+   This program 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.
+
+   This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef FIT_FIELDS_H
+#define FIT_FIELDS_H
+// ----------- start generated code -----------
+typedef enum
+{
+    eFileIdType = 0,
+    eFileIdManufacturer = 1,
+    eFileIdProduct = 2,
+    eFileIdSerialNumber = 3,
+    eFileIdTimeCreated = 4,
+    eFileIdNumber = 5,
+    eFileIdProductName = 8
+} message_file_id_e;
+
+typedef enum
+{
+    eFileCreatorSoftwareVersion = 0,
+    eFileCreatorHardwareVersion = 1
+} message_file_creator_e;
+
+typedef enum
+{
+    eTimestampCorrelationTimestamp = 253,
+    eTimestampCorrelationFractionalTimestamp = 0,
+    eTimestampCorrelationSystemTimestamp = 1,
+    eTimestampCorrelationFractionalSystemTimestamp = 2,
+    eTimestampCorrelationLocalTimestamp = 3,
+    eTimestampCorrelationTimestampMs = 4,
+    eTimestampCorrelationSystemTimestampMs = 5
+} message_timestamp_correlation_e;
+
+typedef enum
+{
+    eSoftwareMessageIndex = 254,
+    eSoftwareVersion = 3,
+    eSoftwarePartNumber = 5
+} message_software_e;
+
+typedef enum
+{
+    eSlaveDeviceManufacturer = 0,
+    eSlaveDeviceProduct = 1
+} message_slave_device_e;
+
+typedef enum
+{
+    eCapabilitiesLanguages = 0,
+    eCapabilitiesSports = 1,
+    eCapabilitiesWorkoutsSupported = 21,
+    eCapabilitiesConnectivitySupported = 23
+} message_capabilities_e;
+
+typedef enum
+{
+    eFileCapabilitiesMessageIndex = 254,
+    eFileCapabilitiesType = 0,
+    eFileCapabilitiesFlags = 1,
+    eFileCapabilitiesDirectory = 2,
+    eFileCapabilitiesMaxCount = 3,
+    eFileCapabilitiesMaxSize = 4
+} message_file_capabilities_e;
+
+typedef enum
+{
+    eMesgCapabilitiesMessageIndex = 254,
+    eMesgCapabilitiesFile = 0,
+    eMesgCapabilitiesMesgNum = 1,
+    eMesgCapabilitiesCountType = 2,
+    eMesgCapabilitiesCount = 3
+} message_mesg_capabilities_e;
+
+typedef enum
+{
+    eFieldCapabilitiesMessageIndex = 254,
+    eFieldCapabilitiesFile = 0,
+    eFieldCapabilitiesMesgNum = 1,
+    eFieldCapabilitiesFieldNum = 2,
+    eFieldCapabilitiesCount = 3
+} message_field_capabilities_e;
+
+typedef enum
+{
+    eDeviceSettingsActiveTimeZone = 0,
+    eDeviceSettingsUtcOffset = 1,
+    eDeviceSettingsTimeZoneOffset = 5
+} message_device_settings_e;
+
+typedef enum
+{
+    eUserProfileMessageIndex = 254,
+    eUserProfileFriendlyName = 0,
+    eUserProfileGender = 1,
+    eUserProfileAge = 2,
+    eUserProfileHeight = 3,
+    eUserProfileWeight = 4,
+    eUserProfileLanguage = 5,
+    eUserProfileElevSetting = 6,
+    eUserProfileWeightSetting = 7,
+    eUserProfileRestingHeartRate = 8,
+    eUserProfileDefaultMaxRunningHeartRate = 9,
+    eUserProfileDefaultMaxBikingHeartRate = 10,
+    eUserProfileDefaultMaxHeartRate = 11,
+    eUserProfileHrSetting = 12,
+    eUserProfileSpeedSetting = 13,
+    eUserProfileDistSetting = 14,
+    eUserProfilePowerSetting = 16,
+    eUserProfileActivityClass = 17,
+    eUserProfilePositionSetting = 18,
+    eUserProfileTemperatureSetting = 21,
+    eUserProfileLocalId = 22,
+    eUserProfileGlobalId = 23,
+    eUserProfileHeightSetting = 30
+} message_user_profile_e;
+
+typedef enum
+{
+    eHrmProfileMessageIndex = 254,
+    eHrmProfileEnabled = 0,
+    eHrmProfileHrmAntId = 1,
+    eHrmProfileLogHrv = 2,
+    eHrmProfileHrmAntIdTransType = 3
+} message_hrm_profile_e;
+
+typedef enum
+{
+    eSdmProfileMessageIndex = 254,
+    eSdmProfileEnabled = 0,
+    eSdmProfileSdmAntId = 1,
+    eSdmProfileSdmCalFactor = 2,
+    eSdmProfileOdometer = 3,
+    eSdmProfileSpeedSource = 4,
+    eSdmProfileSdmAntIdTransType = 5,
+    eSdmProfileOdometerRollover = 7
+} message_sdm_profile_e;
+
+typedef enum
+{
+    eBikeProfileMessageIndex = 254,
+    eBikeProfileName = 0,
+    eBikeProfileSport = 1,
+    eBikeProfileSubSport = 2,
+    eBikeProfileOdometer = 3,
+    eBikeProfileBikeSpdAntId = 4,
+    eBikeProfileBikeCadAntId = 5,
+    eBikeProfileBikeSpdcadAntId = 6,
+    eBikeProfileBikePowerAntId = 7,
+    eBikeProfileCustomWheelsize = 8,
+    eBikeProfileAutoWheelsize = 9,
+    eBikeProfileBikeWeight = 10,
+    eBikeProfilePowerCalFactor = 11,
+    eBikeProfileAutoWheelCal = 12,
+    eBikeProfileAutoPowerZero = 13,
+    eBikeProfileId = 14,
+    eBikeProfileSpdEnabled = 15,
+    eBikeProfileCadEnabled = 16,
+    eBikeProfileSpdcadEnabled = 17,
+    eBikeProfilePowerEnabled = 18,
+    eBikeProfileCrankLength = 19,
+    eBikeProfileEnabled = 20,
+    eBikeProfileBikeSpdAntIdTransType = 21,
+    eBikeProfileBikeCadAntIdTransType = 22,
+    eBikeProfileBikeSpdcadAntIdTransType = 23,
+    eBikeProfileBikePowerAntIdTransType = 24,
+    eBikeProfileOdometerRollover = 37,
+    eBikeProfileFrontGearNum = 38,
+    eBikeProfileFrontGear = 39,
+    eBikeProfileRearGearNum = 40,
+    eBikeProfileRearGear = 41,
+    eBikeProfileShimanoDi2Enabled = 44
+} message_bike_profile_e;
+
+typedef enum
+{
+    eZonesTargetMaxHeartRate = 1,
+    eZonesTargetThresholdHeartRate = 2,
+    eZonesTargetFunctionalThresholdPower = 3,
+    eZonesTargetHrCalcType = 5,
+    eZonesTargetPwrCalcType = 7
+} message_zones_target_e;
+
+typedef enum
+{
+    eSportSport = 0,
+    eSportSubSport = 1,
+    eSportName = 3
+} message_sport_e;
+
+typedef enum
+{
+    eHrZoneMessageIndex = 254,
+    eHrZoneHighBpm = 1,
+    eHrZoneName = 2
+} message_hr_zone_e;
+
+typedef enum
+{
+    eSpeedZoneMessageIndex = 254,
+    eSpeedZoneHighValue = 0,
+    eSpeedZoneName = 1
+} message_speed_zone_e;
+
+typedef enum
+{
+    eCadenceZoneMessageIndex = 254,
+    eCadenceZoneHighValue = 0,
+    eCadenceZoneName = 1
+} message_cadence_zone_e;
+
+typedef enum
+{
+    ePowerZoneMessageIndex = 254,
+    ePowerZoneHighValue = 1,
+    ePowerZoneName = 2
+} message_power_zone_e;
+
+typedef enum
+{
+    eMetZoneMessageIndex = 254,
+    eMetZoneHighBpm = 1,
+    eMetZoneCalories = 2,
+    eMetZoneFatCalories = 3
+} message_met_zone_e;
+
+typedef enum
+{
+    eGoalMessageIndex = 254,
+    eGoalSport = 0,
+    eGoalSubSport = 1,
+    eGoalStartDate = 2,
+    eGoalEndDate = 3,
+    eGoalType = 4,
+    eGoalValue = 5,
+    eGoalRepeat = 6,
+    eGoalTargetValue = 7,
+    eGoalRecurrence = 8,
+    eGoalRecurrenceValue = 9,
+    eGoalEnabled = 10
+} message_goal_e;
+
+typedef enum
+{
+    eActivityTimestamp = 253,
+    eActivityTotalTimerTime = 0,
+    eActivityNumSessions = 1,
+    eActivityType = 2,
+    eActivityEvent = 3,
+    eActivityEventType = 4,
+    eActivityLocalTimestamp = 5,
+    eActivityEventGroup = 6
+} message_activity_e;
+
+typedef enum
+{
+    eSessionMessageIndex = 254,
+    eSessionTimestamp = 253,
+    eSessionEvent = 0,
+    eSessionEventType = 1,
+    eSessionStartTime = 2,
+    eSessionStartPositionLat = 3,
+    eSessionStartPositionLong = 4,
+    eSessionSport = 5,
+    eSessionSubSport = 6,
+    eSessionTotalElapsedTime = 7,
+    eSessionTotalTimerTime = 8,
+    eSessionTotalDistance = 9,
+    eSessionTotalCycles = 10,
+    eSessionTotalCalories = 11,
+    eSessionTotalFatCalories = 13,
+    eSessionAvgSpeed = 14,
+    eSessionMaxSpeed = 15,
+    eSessionAvgHeartRate = 16,
+    eSessionMaxHeartRate = 17,
+    eSessionAvgCadence = 18,
+    eSessionMaxCadence = 19,
+    eSessionAvgPower = 20,
+    eSessionMaxPower = 21,
+    eSessionTotalAscent = 22,
+    eSessionTotalDescent = 23,
+    eSessionTotalTrainingEffect = 24,
+    eSessionFirstLapIndex = 25,
+    eSessionNumLaps = 26,
+    eSessionEventGroup = 27,
+    eSessionTrigger = 28,
+    eSessionNecLat = 29,
+    eSessionNecLong = 30,
+    eSessionSwcLat = 31,
+    eSessionSwcLong = 32,
+    eSessionNormalizedPower = 34,
+    eSessionTrainingStressScore = 35,
+    eSessionIntensityFactor = 36,
+    eSessionLeftRightBalance = 37,
+    eSessionAvgStrokeCount = 41,
+    eSessionAvgStrokeDistance = 42,
+    eSessionSwimStroke = 43,
+    eSessionPoolLength = 44,
+    eSessionThresholdPower = 45,
+    eSessionPoolLengthUnit = 46,
+    eSessionNumActiveLengths = 47,
+    eSessionTotalWork = 48,
+    eSessionAvgAltitude = 49,
+    eSessionMaxAltitude = 50,
+    eSessionGpsAccuracy = 51,
+    eSessionAvgGrade = 52,
+    eSessionAvgPosGrade = 53,
+    eSessionAvgNegGrade = 54,
+    eSessionMaxPosGrade = 55,
+    eSessionMaxNegGrade = 56,
+    eSessionAvgTemperature = 57,
+    eSessionMaxTemperature = 58,
+    eSessionTotalMovingTime = 59,
+    eSessionAvgPosVerticalSpeed = 60,
+    eSessionAvgNegVerticalSpeed = 61,
+    eSessionMaxPosVerticalSpeed = 62,
+    eSessionMaxNegVerticalSpeed = 63,
+    eSessionMinHeartRate = 64,
+    eSessionTimeInHrZone = 65,
+    eSessionTimeInSpeedZone = 66,
+    eSessionTimeInCadenceZone = 67,
+    eSessionTimeInPowerZone = 68,
+    eSessionAvgLapTime = 69,
+    eSessionBestLapIndex = 70,
+    eSessionMinAltitude = 71,
+    eSessionPlayerScore = 82,
+    eSessionOpponentScore = 83,
+    eSessionOpponentName = 84,
+    eSessionStrokeCount = 85,
+    eSessionZoneCount = 86,
+    eSessionMaxBallSpeed = 87,
+    eSessionAvgBallSpeed = 88,
+    eSessionAvgVerticalOscillation = 89,
+    eSessionAvgStanceTimePercent = 90,
+    eSessionAvgStanceTime = 91,
+    eSessionAvgFractionalCadence = 92,
+    eSessionMaxFractionalCadence = 93,
+    eSessionTotalFractionalCycles = 94,
+    eSessionAvgTotalHemoglobinConc = 95,
+    eSessionMinTotalHemoglobinConc = 96,
+    eSessionMaxTotalHemoglobinConc = 97,
+    eSessionAvgSaturatedHemoglobinPercent = 98,
+    eSessionMinSaturatedHemoglobinPercent = 99,
+    eSessionMaxSaturatedHemoglobinPercent = 100,
+    eSessionAvgLeftTorqueEffectiveness = 101,
+    eSessionAvgRightTorqueEffectiveness = 102,
+    eSessionAvgLeftPedalSmoothness = 103,
+    eSessionAvgRightPedalSmoothness = 104,
+    eSessionAvgCombinedPedalSmoothness = 105,
+    eSessionSportIndex = 111,
+    eSessionTimeStanding = 112,
+    eSessionStandCount = 113,
+    eSessionAvgLeftPco = 114,
+    eSessionAvgRightPco = 115,
+    eSessionAvgLeftPowerPhase = 116,
+    eSessionAvgLeftPowerPhasePeak = 117,
+    eSessionAvgRightPowerPhase = 118,
+    eSessionAvgRightPowerPhasePeak = 119,
+    eSessionAvgPowerPosition = 120,
+    eSessionMaxPowerPosition = 121,
+    eSessionAvgCadencePosition = 122,
+    eSessionMaxCadencePosition = 123,
+    eSessionEnhancedAvgSpeed = 124,
+    eSessionEnhancedMaxSpeed = 125,
+    eSessionEnhancedAvgAltitude = 126,
+    eSessionEnhancedMinAltitude = 127,
+    eSessionEnhancedMaxAltitude = 128,
+    eSessionAvgLevMotorPower = 129,
+    eSessionMaxLevMotorPower = 130,
+    eSessionLevBatteryConsumption = 131
+} message_session_e;
+
+typedef enum
+{
+    eLapMessageIndex = 254,
+    eLapTimestamp = 253,
+    eLapEvent = 0,
+    eLapEventType = 1,
+    eLapStartTime = 2,
+    eLapStartPositionLat = 3,
+    eLapStartPositionLong = 4,
+    eLapEndPositionLat = 5,
+    eLapEndPositionLong = 6,
+    eLapTotalElapsedTime = 7,
+    eLapTotalTimerTime = 8,
+    eLapTotalDistance = 9,
+    eLapTotalCycles = 10,
+    eLapTotalCalories = 11,
+    eLapTotalFatCalories = 12,
+    eLapAvgSpeed = 13,
+    eLapMaxSpeed = 14,
+    eLapAvgHeartRate = 15,
+    eLapMaxHeartRate = 16,
+    eLapAvgCadence = 17,
+    eLapMaxCadence = 18,
+    eLapAvgPower = 19,
+    eLapMaxPower = 20,
+    eLapTotalAscent = 21,
+    eLapTotalDescent = 22,
+    eLapIntensity = 23,
+    eLapLapTrigger = 24,
+    eLapSport = 25,
+    eLapEventGroup = 26,
+    eLapNumLengths = 32,
+    eLapNormalizedPower = 33,
+    eLapLeftRightBalance = 34,
+    eLapFirstLengthIndex = 35,
+    eLapAvgStrokeDistance = 37,
+    eLapSwimStroke = 38,
+    eLapSubSport = 39,
+    eLapNumActiveLengths = 40,
+    eLapTotalWork = 41,
+    eLapAvgAltitude = 42,
+    eLapMaxAltitude = 43,
+    eLapGpsAccuracy = 44,
+    eLapAvgGrade = 45,
+    eLapAvgPosGrade = 46,
+    eLapAvgNegGrade = 47,
+    eLapMaxPosGrade = 48,
+    eLapMaxNegGrade = 49,
+    eLapAvgTemperature = 50,
+    eLapMaxTemperature = 51,
+    eLapTotalMovingTime = 52,
+    eLapAvgPosVerticalSpeed = 53,
+    eLapAvgNegVerticalSpeed = 54,
+    eLapMaxPosVerticalSpeed = 55,
+    eLapMaxNegVerticalSpeed = 56,
+    eLapTimeInHrZone = 57,
+    eLapTimeInSpeedZone = 58,
+    eLapTimeInCadenceZone = 59,
+    eLapTimeInPowerZone = 60,
+    eLapRepetitionNum = 61,
+    eLapMinAltitude = 62,
+    eLapMinHeartRate = 63,
+    eLapWktStepIndex = 71,
+    eLapOpponentScore = 74,
+    eLapStrokeCount = 75,
+    eLapZoneCount = 76,
+    eLapAvgVerticalOscillation = 77,
+    eLapAvgStanceTimePercent = 78,
+    eLapAvgStanceTime = 79,
+    eLapAvgFractionalCadence = 80,
+    eLapMaxFractionalCadence = 81,
+    eLapTotalFractionalCycles = 82,
+    eLapPlayerScore = 83,
+    eLapAvgTotalHemoglobinConc = 84,
+    eLapMinTotalHemoglobinConc = 85,
+    eLapMaxTotalHemoglobinConc = 86,
+    eLapAvgSaturatedHemoglobinPercent = 87,
+    eLapMinSaturatedHemoglobinPercent = 88,
+    eLapMaxSaturatedHemoglobinPercent = 89,
+    eLapAvgLeftTorqueEffectiveness = 91,
+    eLapAvgRightTorqueEffectiveness = 92,
+    eLapAvgLeftPedalSmoothness = 93,
+    eLapAvgRightPedalSmoothness = 94,
+    eLapAvgCombinedPedalSmoothness = 95,
+    eLapTimeStanding = 98,
+    eLapStandCount = 99,
+    eLapAvgLeftPco = 100,
+    eLapAvgRightPco = 101,
+    eLapAvgLeftPowerPhase = 102,
+    eLapAvgLeftPowerPhasePeak = 103,
+    eLapAvgRightPowerPhase = 104,
+    eLapAvgRightPowerPhasePeak = 105,
+    eLapAvgPowerPosition = 106,
+    eLapMaxPowerPosition = 107,
+    eLapAvgCadencePosition = 108,
+    eLapMaxCadencePosition = 109,
+    eLapEnhancedAvgSpeed = 110,
+    eLapEnhancedMaxSpeed = 111,
+    eLapEnhancedAvgAltitude = 112,
+    eLapEnhancedMinAltitude = 113,
+    eLapEnhancedMaxAltitude = 114,
+    eLapAvgLevMotorPower = 115,
+    eLapMaxLevMotorPower = 116,
+    eLapLevBatteryConsumption = 117
+} message_lap_e;
+
+typedef enum
+{
+    eLengthMessageIndex = 254,
+    eLengthTimestamp = 253,
+    eLengthEvent = 0,
+    eLengthEventType = 1,
+    eLengthStartTime = 2,
+    eLengthTotalElapsedTime = 3,
+    eLengthTotalTimerTime = 4,
+    eLengthTotalStrokes = 5,
+    eLengthAvgSpeed = 6,
+    eLengthSwimStroke = 7,
+    eLengthAvgSwimmingCadence = 9,
+    eLengthEventGroup = 10,
+    eLengthTotalCalories = 11,
+    eLengthLengthType = 12,
+    eLengthPlayerScore = 18,
+    eLengthOpponentScore = 19,
+    eLengthStrokeCount = 20,
+    eLengthZoneCount = 21
+} message_length_e;
+
+typedef enum
+{
+    eRecordTimestamp = 253,
+    eRecordPositionLat = 0,
+    eRecordPositionLong = 1,
+    eRecordAltitude = 2,
+    eRecordHeartRate = 3,
+    eRecordCadence = 4,
+    eRecordDistance = 5,
+    eRecordSpeed = 6,
+    eRecordPower = 7,
+    eRecordCompressedSpeedDistance = 8,
+    eRecordGrade = 9,
+    eRecordResistance = 10,
+    eRecordTimeFromCourse = 11,
+    eRecordCycleLength = 12,
+    eRecordTemperature = 13,
+    eRecordSpeed1s = 17,
+    eRecordCycles = 18,
+    eRecordTotalCycles = 19,
+    eRecordCompressedAccumulatedPower = 28,
+    eRecordAccumulatedPower = 29,
+    eRecordLeftRightBalance = 30,
+    eRecordGpsAccuracy = 31,
+    eRecordVerticalSpeed = 32,
+    eRecordCalories = 33,
+    eRecordVerticalOscillation = 39,
+    eRecordStanceTimePercent = 40,
+    eRecordStanceTime = 41,
+    eRecordActivityType = 42,
+    eRecordLeftTorqueEffectiveness = 43,
+    eRecordRightTorqueEffectiveness = 44,
+    eRecordLeftPedalSmoothness = 45,
+    eRecordRightPedalSmoothness = 46,
+    eRecordCombinedPedalSmoothness = 47,
+    eRecordTime128 = 48,
+    eRecordStrokeType = 49,
+    eRecordZone = 50,
+    eRecordBallSpeed = 51,
+    eRecordCadence256 = 52,
+    eRecordFractionalCadence = 53,
+    eRecordTotalHemoglobinConc = 54,
+    eRecordTotalHemoglobinConcMin = 55,
+    eRecordTotalHemoglobinConcMax = 56,
+    eRecordSaturatedHemoglobinPercent = 57,
+    eRecordSaturatedHemoglobinPercentMin = 58,
+    eRecordSaturatedHemoglobinPercentMax = 59,
+    eRecordDeviceIndex = 62,
+    eRecordLeftPco = 67,
+    eRecordRightPco = 68,
+    eRecordLeftPowerPhase = 69,
+    eRecordLeftPowerPhasePeak = 70,
+    eRecordRightPowerPhase = 71,
+    eRecordRightPowerPhasePeak = 72,
+    eRecordEnhancedSpeed = 73,
+    eRecordEnhancedAltitude = 78,
+    eRecordBatterySoc = 81,
+    eRecordMotorPower = 82
+} message_record_e;
+
+typedef enum
+{
+    eEventTimestamp = 253,
+    eEventEvent = 0,
+    eEventEventType = 1,
+    eEventData16 = 2,
+    eEventData = 3,
+    eEventEventGroup = 4,
+    eEventScore = 7,
+    eEventOpponentScore = 8,
+    eEventFrontGearNum = 9,
+    eEventFrontGear = 10,
+    eEventRearGearNum = 11,
+    eEventRearGear = 12,
+    eEventDeviceIndex = 13
+} message_event_e;
+
+typedef enum
+{
+    eDeviceInfoTimestamp = 253,
+    eDeviceInfoDeviceIndex = 0,
+    eDeviceInfoDeviceType = 1,
+    eDeviceInfoManufacturer = 2,
+    eDeviceInfoSerialNumber = 3,
+    eDeviceInfoProduct = 4,
+    eDeviceInfoSoftwareVersion = 5,
+    eDeviceInfoHardwareVersion = 6,
+    eDeviceInfoCumOperatingTime = 7,
+    eDeviceInfoBatteryVoltage = 10,
+    eDeviceInfoBatteryStatus = 11,
+    eDeviceInfoSensorPosition = 18,
+    eDeviceInfoDescriptor = 19,
+    eDeviceInfoAntTransmissionType = 20,
+    eDeviceInfoAntDeviceNumber = 21,
+    eDeviceInfoAntNetwork = 22,
+    eDeviceInfoSourceType = 25,
+    eDeviceInfoProductName = 27
+} message_device_info_e;
+
+typedef enum
+{
+    eTrainingFileTimestamp = 253,
+    eTrainingFileType = 0,
+    eTrainingFileManufacturer = 1,
+    eTrainingFileProduct = 2,
+    eTrainingFileSerialNumber = 3,
+    eTrainingFileTimeCreated = 4
+} message_training_file_e;
+
+typedef enum
+{
+    eHrvTime = 0
+} message_hrv_e;
+
+typedef enum
+{
+    eCameraEventTimestamp = 253,
+    eCameraEventTimestampMs = 0,
+    eCameraEventCameraEventType = 1,
+    eCameraEventCameraFileUuid = 2,
+    eCameraEventCameraOrientation = 3
+} message_camera_event_e;
+
+typedef enum
+{
+    eGyroscopeDataTimestamp = 253,
+    eGyroscopeDataTimestampMs = 0,
+    eGyroscopeDataSampleTimeOffset = 1,
+    eGyroscopeDataGyroX = 2,
+    eGyroscopeDataGyroY = 3,
+    eGyroscopeDataGyroZ = 4,
+    eGyroscopeDataCalibratedGyroX = 5,
+    eGyroscopeDataCalibratedGyroY = 6,
+    eGyroscopeDataCalibratedGyroZ = 7
+} message_gyroscope_data_e;
+
+typedef enum
+{
+    eAccelerometerDataTimestamp = 253,
+    eAccelerometerDataTimestampMs = 0,
+    eAccelerometerDataSampleTimeOffset = 1,
+    eAccelerometerDataAccelX = 2,
+    eAccelerometerDataAccelY = 3,
+    eAccelerometerDataAccelZ = 4,
+    eAccelerometerDataCalibratedAccelX = 5,
+    eAccelerometerDataCalibratedAccelY = 6,
+    eAccelerometerDataCalibratedAccelZ = 7
+} message_accelerometer_data_e;
+
+typedef enum
+{
+    eThreeDSensorCalibrationTimestamp = 253,
+    eThreeDSensorCalibrationSensorType = 0,
+    eThreeDSensorCalibrationCalibrationFactor = 1,
+    eThreeDSensorCalibrationCalibrationDivisor = 2,
+    eThreeDSensorCalibrationLevelShift = 3,
+    eThreeDSensorCalibrationOffsetCal = 4,
+    eThreeDSensorCalibrationOrientationMatrix = 5
+} message_three_d_sensor_calibration_e;
+
+typedef enum
+{
+    eVideoFrameTimestamp = 253,
+    eVideoFrameTimestampMs = 0,
+    eVideoFrameFrameNumber = 1
+} message_video_frame_e;
+
+typedef enum
+{
+    eObdiiDataTimestamp = 253,
+    eObdiiDataTimestampMs = 0,
+    eObdiiDataTimeOffset = 1,
+    eObdiiDataPid = 2,
+    eObdiiDataRawData = 3,
+    eObdiiDataPidDataSize = 4,
+    eObdiiDataSystemTime = 5,
+    eObdiiDataStartTimestamp = 6,
+    eObdiiDataStartTimestampMs = 7
+} message_obdii_data_e;
+
+typedef enum
+{
+    eNmeaSentenceTimestamp = 253,
+    eNmeaSentenceTimestampMs = 0,
+    eNmeaSentenceSentence = 1
+} message_nmea_sentence_e;
+
+typedef enum
+{
+    eAviationAttitudeTimestamp = 253,
+    eAviationAttitudeTimestampMs = 0,
+    eAviationAttitudeSystemTime = 1,
+    eAviationAttitudePitch = 2,
+    eAviationAttitudeRoll = 3,
+    eAviationAttitudeAccelLateral = 4,
+    eAviationAttitudeAccelNormal = 5,
+    eAviationAttitudeTurnRate = 6,
+    eAviationAttitudeStage = 7,
+    eAviationAttitudeAttitudeStageComplete = 8,
+    eAviationAttitudeTrack = 9,
+    eAviationAttitudeValidity = 10
+} message_aviation_attitude_e;
+
+typedef enum
+{
+    eVideoUrl = 0,
+    eVideoHostingProvider = 1,
+    eVideoDuration = 2
+} message_video_e;
+
+typedef enum
+{
+    eVideoTitleMessageIndex = 254,
+    eVideoTitleMessageCount = 0,
+    eVideoTitleText = 1
+} message_video_title_e;
+
+typedef enum
+{
+    eVideoDescriptionMessageIndex = 254,
+    eVideoDescriptionMessageCount = 0,
+    eVideoDescriptionText = 1
+} message_video_description_e;
+
+typedef enum
+{
+    eVideoClipClipNumber = 0,
+    eVideoClipStartTimestamp = 1,
+    eVideoClipStartTimestampMs = 2,
+    eVideoClipEndTimestamp = 3,
+    eVideoClipEndTimestampMs = 4,
+    eVideoClipClipStart = 6,
+    eVideoClipClipEnd = 7
+} message_video_clip_e;
+
+typedef enum
+{
+    eCourseSport = 4,
+    eCourseName = 5,
+    eCourseCapabilities = 6
+} message_course_e;
+
+typedef enum
+{
+    eCoursePointMessageIndex = 254,
+    eCoursePointTimestamp = 1,
+    eCoursePointPositionLat = 2,
+    eCoursePointPositionLong = 3,
+    eCoursePointDistance = 4,
+    eCoursePointType = 5,
+    eCoursePointName = 6,
+    eCoursePointFavorite = 8
+} message_course_point_e;
+
+typedef enum
+{
+    eSegmentIdName = 0,
+    eSegmentIdUuid = 1,
+    eSegmentIdSport = 2,
+    eSegmentIdEnabled = 3,
+    eSegmentIdUserProfilePrimaryKey = 4,
+    eSegmentIdDeviceId = 5,
+    eSegmentIdDefaultRaceLeader = 6,
+    eSegmentIdDeleteStatus = 7,
+    eSegmentIdSelectionType = 8
+} message_segment_id_e;
+
+typedef enum
+{
+    eSegmentLeaderboardEntryMessageIndex = 254,
+    eSegmentLeaderboardEntryName = 0,
+    eSegmentLeaderboardEntryType = 1,
+    eSegmentLeaderboardEntryGroupPrimaryKey = 2,
+    eSegmentLeaderboardEntryActivityId = 3,
+    eSegmentLeaderboardEntrySegmentTime = 4,
+    eSegmentLeaderboardEntryActivityIdString = 5
+} message_segment_leaderboard_entry_e;
+
+typedef enum
+{
+    eSegmentPointMessageIndex = 254,
+    eSegmentPointPositionLat = 1,
+    eSegmentPointPositionLong = 2,
+    eSegmentPointDistance = 3,
+    eSegmentPointAltitude = 4,
+    eSegmentPointLeaderTime = 5
+} message_segment_point_e;
+
+typedef enum
+{
+    eSegmentLapMessageIndex = 254,
+    eSegmentLapTimestamp = 253,
+    eSegmentLapEvent = 0,
+    eSegmentLapEventType = 1,
+    eSegmentLapStartTime = 2,
+    eSegmentLapStartPositionLat = 3,
+    eSegmentLapStartPositionLong = 4,
+    eSegmentLapEndPositionLat = 5,
+    eSegmentLapEndPositionLong = 6,
+    eSegmentLapTotalElapsedTime = 7,
+    eSegmentLapTotalTimerTime = 8,
+    eSegmentLapTotalDistance = 9,
+    eSegmentLapTotalCycles = 10,
+    eSegmentLapTotalCalories = 11,
+    eSegmentLapTotalFatCalories = 12,
+    eSegmentLapAvgSpeed = 13,
+    eSegmentLapMaxSpeed = 14,
+    eSegmentLapAvgHeartRate = 15,
+    eSegmentLapMaxHeartRate = 16,
+    eSegmentLapAvgCadence = 17,
+    eSegmentLapMaxCadence = 18,
+    eSegmentLapAvgPower = 19,
+    eSegmentLapMaxPower = 20,
+    eSegmentLapTotalAscent = 21,
+    eSegmentLapTotalDescent = 22,
+    eSegmentLapSport = 23,
+    eSegmentLapEventGroup = 24,
+    eSegmentLapNecLat = 25,
+    eSegmentLapNecLong = 26,
+    eSegmentLapSwcLat = 27,
+    eSegmentLapSwcLong = 28,
+    eSegmentLapName = 29,
+    eSegmentLapNormalizedPower = 30,
+    eSegmentLapLeftRightBalance = 31,
+    eSegmentLapSubSport = 32,
+    eSegmentLapTotalWork = 33,
+    eSegmentLapAvgAltitude = 34,
+    eSegmentLapMaxAltitude = 35,
+    eSegmentLapGpsAccuracy = 36,
+    eSegmentLapAvgGrade = 37,
+    eSegmentLapAvgPosGrade = 38,
+    eSegmentLapAvgNegGrade = 39,
+    eSegmentLapMaxPosGrade = 40,
+    eSegmentLapMaxNegGrade = 41,
+    eSegmentLapAvgTemperature = 42,
+    eSegmentLapMaxTemperature = 43,
+    eSegmentLapTotalMovingTime = 44,
+    eSegmentLapAvgPosVerticalSpeed = 45,
+    eSegmentLapAvgNegVerticalSpeed = 46,
+    eSegmentLapMaxPosVerticalSpeed = 47,
+    eSegmentLapMaxNegVerticalSpeed = 48,
+    eSegmentLapTimeInHrZone = 49,
+    eSegmentLapTimeInSpeedZone = 50,
+    eSegmentLapTimeInCadenceZone = 51,
+    eSegmentLapTimeInPowerZone = 52,
+    eSegmentLapRepetitionNum = 53,
+    eSegmentLapMinAltitude = 54,
+    eSegmentLapMinHeartRate = 55,
+    eSegmentLapActiveTime = 56,
+    eSegmentLapWktStepIndex = 57,
+    eSegmentLapSportEvent = 58,
+    eSegmentLapAvgLeftTorqueEffectiveness = 59,
+    eSegmentLapAvgRightTorqueEffectiveness = 60,
+    eSegmentLapAvgLeftPedalSmoothness = 61,
+    eSegmentLapAvgRightPedalSmoothness = 62,
+    eSegmentLapAvgCombinedPedalSmoothness = 63,
+    eSegmentLapStatus = 64,
+    eSegmentLapUuid = 65,
+    eSegmentLapAvgFractionalCadence = 66,
+    eSegmentLapMaxFractionalCadence = 67,
+    eSegmentLapTotalFractionalCycles = 68,
+    eSegmentLapFrontGearShiftCount = 69,
+    eSegmentLapRearGearShiftCount = 70,
+    eSegmentLapTimeStanding = 71,
+    eSegmentLapStandCount = 72,
+    eSegmentLapAvgLeftPco = 73,
+    eSegmentLapAvgRightPco = 74,
+    eSegmentLapAvgLeftPowerPhase = 75,
+    eSegmentLapAvgLeftPowerPhasePeak = 76,
+    eSegmentLapAvgRightPowerPhase = 77,
+    eSegmentLapAvgRightPowerPhasePeak = 78,
+    eSegmentLapAvgPowerPosition = 79,
+    eSegmentLapMaxPowerPosition = 80,
+    eSegmentLapAvgCadencePosition = 81,
+    eSegmentLapMaxCadencePosition = 82
+} message_segment_lap_e;
+
+typedef enum
+{
+    eSegmentFileMessageIndex = 254,
+    eSegmentFileFileUuid = 1,
+    eSegmentFileEnabled = 3,
+    eSegmentFileUserProfilePrimaryKey = 4,
+    eSegmentFileLeaderType = 7,
+    eSegmentFileLeaderGroupPrimaryKey = 8,
+    eSegmentFileLeaderActivityId = 9,
+    eSegmentFileLeaderActivityIdString = 10
+} message_segment_file_e;
+
+typedef enum
+{
+    eWorkoutSport = 4,
+    eWorkoutCapabilities = 5,
+    eWorkoutNumValidSteps = 6,
+    eWorkoutWktName = 8
+} message_workout_e;
+
+typedef enum
+{
+    eWorkoutStepMessageIndex = 254,
+    eWorkoutStepWktStepName = 0,
+    eWorkoutStepDurationType = 1,
+    eWorkoutStepDurationValue = 2,
+    eWorkoutStepTargetType = 3,
+    eWorkoutStepTargetValue = 4,
+    eWorkoutStepCustomTargetValueLow = 5,
+    eWorkoutStepCustomTargetValueHigh = 6,
+    eWorkoutStepIntensity = 7
+} message_workout_step_e;
+
+typedef enum
+{
+    eScheduleManufacturer = 0,
+    eScheduleProduct = 1,
+    eScheduleSerialNumber = 2,
+    eScheduleTimeCreated = 3,
+    eScheduleCompleted = 4,
+    eScheduleType = 5,
+    eScheduleScheduledTime = 6
+} message_schedule_e;
+
+typedef enum
+{
+    eTotalsMessageIndex = 254,
+    eTotalsTimestamp = 253,
+    eTotalsTimerTime = 0,
+    eTotalsDistance = 1,
+    eTotalsCalories = 2,
+    eTotalsSport = 3,
+    eTotalsElapsedTime = 4,
+    eTotalsSessions = 5,
+    eTotalsActiveTime = 6,
+    eTotalsSportIndex = 9
+} message_totals_e;
+
+typedef enum
+{
+    eWeightScaleTimestamp = 253,
+    eWeightScaleWeight = 0,
+    eWeightScalePercentFat = 1,
+    eWeightScalePercentHydration = 2,
+    eWeightScaleVisceralFatMass = 3,
+    eWeightScaleBoneMass = 4,
+    eWeightScaleMuscleMass = 5,
+    eWeightScaleBasalMet = 7,
+    eWeightScalePhysiqueRating = 8,
+    eWeightScaleActiveMet = 9,
+    eWeightScaleMetabolicAge = 10,
+    eWeightScaleVisceralFatRating = 11,
+    eWeightScaleUserProfileIndex = 12
+} message_weight_scale_e;
+
+typedef enum
+{
+    eBloodPressureTimestamp = 253,
+    eBloodPressureSystolicPressure = 0,
+    eBloodPressureDiastolicPressure = 1,
+    eBloodPressureMeanArterialPressure = 2,
+    eBloodPressureMap3SampleMean = 3,
+    eBloodPressureMapMorningValues = 4,
+    eBloodPressureMapEveningValues = 5,
+    eBloodPressureHeartRate = 6,
+    eBloodPressureHeartRateType = 7,
+    eBloodPressureStatus = 8,
+    eBloodPressureUserProfileIndex = 9
+} message_blood_pressure_e;
+
+typedef enum
+{
+    eMonitoringInfoTimestamp = 253,
+    eMonitoringInfoLocalTimestamp = 0,
+    eMonitoringInfoActivityType = 1,
+    eMonitoringInfoCyclesToDistance = 3,
+    eMonitoringInfoCyclesToCalories = 4,
+    eMonitoringInfoRestingMetabolicRate = 5
+} message_monitoring_info_e;
+
+typedef enum
+{
+    eMonitoringTimestamp = 253,
+    eMonitoringDeviceIndex = 0,
+    eMonitoringCalories = 1,
+    eMonitoringDistance = 2,
+    eMonitoringCycles = 3,
+    eMonitoringActiveTime = 4,
+    eMonitoringActivityType = 5,
+    eMonitoringActivitySubtype = 6,
+    eMonitoringActivityLevel = 7,
+    eMonitoringDistance16 = 8,
+    eMonitoringCycles16 = 9,
+    eMonitoringActiveTime16 = 10,
+    eMonitoringLocalTimestamp = 11,
+    eMonitoringTemperature = 12,
+    eMonitoringTemperatureMin = 14,
+    eMonitoringTemperatureMax = 15,
+    eMonitoringActivityTime = 16,
+    eMonitoringActiveCalories = 19,
+    eMonitoringCurrentActivityTypeIntensity = 24,
+    eMonitoringTimestampMin8 = 25,
+    eMonitoringTimestamp16 = 26,
+    eMonitoringHeartRate = 27,
+    eMonitoringIntensity = 28,
+    eMonitoringDurationMin = 29,
+    eMonitoringDuration = 30
+} message_monitoring_e;
+
+typedef enum
+{
+    eMemoGlobPartIndex = 250,
+    eMemoGlobMemo = 0,
+    eMemoGlobMessageNumber = 1,
+    eMemoGlobMessageIndex = 2
+} message_memo_glob_e;
+// ----------- end generated code -----------
+#endif // FIT_FIELDS_H
diff --git a/src/gis/fit/defs/profiles.sh b/src/gis/fit/defs/profiles.sh
new file mode 100755
index 0000000..c0847f8
--- /dev/null
+++ b/src/gis/fit/defs/profiles.sh
@@ -0,0 +1,316 @@
+#!/usr/local/bin/bash
+# /bin/bash
+
+tmp_array=()
+
+function splitField()
+{
+	local  in=$1
+	in=${in#"\""}
+	in=${in%"\""}
+	in=${in//,/ }
+	OLDIFS=$IFS
+	IFS=" "
+	tmp_array=($in)
+	IFS=$OLDIFS
+}
+
+function zeroIfNull()
+{
+    local  __resultvar=$1
+    local  result=$2
+    if [[ "$result" == "" ]]; then
+        result="0"
+    fi
+    
+    eval $__resultvar="'$result'"
+}
+
+
+function titleCase()
+{
+    local __resultvar=$1
+    local string=$2
+    
+    string=${string//_/ }
+    titleCasev=$(echo "$string" | perl -ane ' foreach $wrd ( @F ) { print ucfirst($wrd)." "; } print "\n" ; ')
+    titleCasev=${titleCasev// /}
+
+    eval $__resultvar="'$titleCasev'"
+}
+
+
+function createFieldEnums()
+{
+	COUNT=0
+	lastTypeName=""
+	lastTypeNameCamel=""
+	lastValue=""
+	ENUM_FILE=gen-fit_enums.h
+	rm $ENUM_FILE
+
+	while read typeName baseType valueName value comment
+	do
+		if [[ $COUNT -gt 0 ]]; then
+			if [[ "$typeName" != "" ]]; then
+				lastTypeName=$typeName
+				titleCase lastTypeNameCamel $typeName
+				lastValue=""
+				
+				echo "typedef enum {" >> $ENUM_FILE
+			fi
+			
+			if [[ "$lastValue" != "" && "$valueName" != "" ]]; then
+					echo " $lastValue," >> $ENUM_FILE
+			fi
+			if [[ "$lastTypeName" != "" && "$valueName" == "" && "$typeName" == "" ]]; then
+				echo " $lastValue" >> $ENUM_FILE
+			echo "} ${lastTypeName}_e;"  >> $ENUM_FILE
+				echo "" >> $ENUM_FILE
+			fi
+			
+			if [[ "$valueName" != "" ]]; then 
+				titleCase valueName $valueName
+				lastValue="e$lastTypeNameCamel$valueName = $value"
+			fi
+		fi
+		COUNT=$[$COUNT +1]
+	done < $IN_TYPES
+	echo " $lastValue" >> $ENUM_FILE
+	echo "} ${lastTypeName}_e;"  >> $ENUM_FILE
+}
+
+
+function baseType()
+{
+    local __resultvar=$1
+    local ctype=$2
+    
+    if [[ "$ctype" == "uint8" ]]; then
+        conv="fitUint8Type"
+    elif [[ "$ctype" == "uint16" ]]; then
+        conv="fitUint16Type"
+    elif [[ "$ctype" == "uint32" ]]; then
+        conv="fitUint32Type"
+    elif [[ "$ctype" == "sint8" ]]; then
+        conv="fitSint8Type"
+    elif [[ "$ctype" == "sint16" ]]; then
+        conv="fitSint16Type"
+    elif [[ "$ctype" == "sint32" ]]; then
+        conv="fitSint32Type"
+    elif [[ "$ctype" == "string" ]]; then
+        conv="fitStringType"
+    elif [[ "$ctype" == "uint8z" ]]; then
+        conv="fitUint8zType"
+    elif [[ "$ctype" == "uint16z" ]]; then
+        conv="fitUint16zType"
+    elif [[ "$ctype" == "uint32z" ]]; then    
+        conv="fitUint32zType"
+    elif [[ "$ctype" == "float32" ]]; then
+        conv="fitFloat32Type"
+    elif [[ "$ctype" == "float64" ]]; then
+        conv="fitFloat64Type"
+    elif [[ "$ctype" == "byte" ]]; then
+        conv="fitByteType"
+    elif [[ "$ctype" == "bool" ]]; then
+        conv="fitEnumType"
+    else
+        conv="fitEnumType"
+    fi
+
+    eval $__resultvar="'$conv'"
+}
+
+function createMessageEnums()
+{
+	ENUM_PROFILES_FILE=gen-fit_fields.h
+	rm $ENUM_PROFILES_FILE
+	COUNT=0
+	lastName=""
+	valueName=""
+	lastTypeName=""
+	lastTypeNameCamel=""
+	while read messageName fieldDefNr fieldName fieldType array components scale offset units bits accumulate refFieldName refFieldValeu comment example
+	do
+		if [[ $COUNT -gt 1 ]]; then
+			if [[ "$messageName" != "" ]]; then
+				lastTypeName=$messageName
+				titleCase lastTypeNameCamel $lastTypeName
+				lastValue=""
+				
+				echo "typedef enum {" >> $ENUM_PROFILES_FILE
+			fi
+			
+			if [[ "$lastValue" != "" && "$fieldDefNr" != "" ]]; then
+				echo " $lastValue," >> $ENUM_PROFILES_FILE
+				lastValue=""    
+			fi
+			if [[ "$lastTypeName" != "" && "$fieldName" == "" && "$messageName" == "" && "$lastValue" != "" ]]; then
+				echo " $lastValue" >> $ENUM_PROFILES_FILE
+				echo "} message_${lastTypeName}_e;"  >> $ENUM_PROFILES_FILE
+				echo "" >> $ENUM_PROFILES_FILE
+				lastValue=""
+			fi
+			
+			if [[ "$fieldDefNr" != "" ]]; then 
+				titleCase fieldName $fieldName
+				lastValue="e$lastTypeNameCamel$fieldName = $fieldDefNr"
+			fi
+		fi
+		COUNT=$[$COUNT +1]
+	done < $IN_MESSAGES
+	echo " $lastValue" >> $ENUM_PROFILES_FILE
+	echo "} message_${lastTypeName}_e;"  >> $ENUM_PROFILES_FILE
+}
+
+
+function createProfiles()
+{
+	CODE_FILE=gen-CFitProfileLockup.cpp
+	CALL_FILE=gen-CFitProfileLockup-call.cpp
+	rm $CODE_FILE
+	rm $CALL_FILE
+	
+	COUNT=0
+	subcount=0
+	lastName=""
+	lastFieldDefNr=0
+	typeName=""
+	enumName=""
+	enumField=""
+	enumFieldValue=""
+	enumComponent=""
+	declare -A fieldNames
+	
+	# second run create the source code
+	while read messageName fieldDefNr fieldName fieldType array components scale offset units bits accumulate refFieldName refFieldValue comment example
+	do
+		if [ $COUNT -gt 1 ]; then
+			if [[ "$messageName" != "" ]]; then
+				# new message
+				if [ $COUNT -gt 3 ]; then
+					echo "profiles.insert($enumName, f);" >> $CODE_FILE
+					echo "}" >> $CODE_FILE
+					echo " " >> $CODE_FILE
+				fi
+				titleCase enumName $messageName
+				echo "init$enumName(profiles);" >> $CALL_FILE
+				echo "void init$enumName(QMap<quint16, CFitProfile*>& profiles)" >> $CODE_FILE
+				echo "{" >> $CODE_FILE
+				enumName=eMesgNum$enumName
+				echo "CFitProfile* f = new CFitProfile(\"$messageName\", $enumName);" >> $CODE_FILE
+				
+				lastName=$messageName
+				
+			elif [[ "$fieldName" != "" ]]; then
+				# new fields
+				baseType typeName $fieldType
+				fieldNames["$fieldName"]=$fieldType
+				
+				if [[ "$fieldDefNr" != "" &&  "$components" == "" ]]; then
+					# normal type
+					zeroIfNull scale $scale
+					zeroIfNull offset $offset
+					titleCase lastFieldDefNr "${lastName}_${fieldName}"
+					lastFieldDefNr="e$lastFieldDefNr"
+					echo "f->addField(\"$fieldName\", $typeName, $lastFieldDefNr, $scale, $offset, \"$units\");" >> $CODE_FILE
+					subcount=0
+					# end normal type
+				else
+					# sub type or component type
+					splitField $refFieldName
+					# ref field name is for all elements the same, so take the first one
+					refFieldName=$tmp_array
+					splitField $refFieldValue
+					refFieldValueArray=( "${tmp_array[@]}" )
+					
+					splitField $components
+					componentsArray=( "${tmp_array[@]}" )
+					splitField $scale
+					scaleArray=( "${tmp_array[@]}" )
+					splitField $offset
+					offsetArray=( "${tmp_array[@]}" )
+					splitField $units
+					unitsArray=( "${tmp_array[@]}" )
+					splitField $bits
+					bitsArray=( "${tmp_array[@]}" )
+					
+					if [[ "$fieldDefNr" == "" ]]; then
+						# sub type
+						titleCase enumField "${lastName}_${refFieldName}"
+						enumField=e$enumField
+						for i in "${!refFieldValueArray[@]}"; do
+							if [[ "$components" != "" ]]; then
+								# case it has components (scale, offset and units are undefined)
+								scale="0"
+								offset="0"
+								units=""
+							else
+								zeroIfNull scale ${scaleArray[i]}
+								zeroIfNull offset ${offsetArray[i]}
+								units=${unitsArray[i]}
+							fi
+							
+							titleCase enumFieldValue "${fieldNames[$refFieldName]}_${refFieldValueArray[i]}"
+							if [[ ${fieldNames[$refFieldName]} == "" ]]; then
+								titleCase enumFieldValue "${refFieldName}_${refFieldValueArray[i]}"
+							fi
+							enumFieldValue="e$enumFieldValue"
+							echo "f->addSubfield(\"$fieldName\", $typeName, $lastFieldDefNr, $scale, $offset, \"$units\", $enumField, $enumFieldValue);" >> $CODE_FILE 
+							subcount=$[$subcount +1]
+						done
+						#  end sub type
+					fi
+					if [[ "$components" != "" ]]; then
+						# component type
+						
+						if [[ "$fieldDefNr" != "" ]]; then
+							# a component needs always a parent field. add one
+							titleCase lastFieldDefNr "${lastName}_${fieldName}"
+							lastFieldDefNr="e$lastFieldDefNr"
+							echo "f->addField(\"$fieldName\", $typeName, $lastFieldDefNr, 0, 0, \"\");" >> $CODE_FILE
+							subaccessField=""
+						else
+							# parent field for component is sub field
+							i=$[$subcount -1]
+							subaccessField="$i,"
+						fi
+						for i in "${!componentsArray[@]}"; do
+							zeroIfNull scale ${scaleArray[i]}
+							zeroIfNull offset ${offsetArray[i]}
+							units=${unitsArray[i]}
+							bits=${bitsArray[i]}
+							compName=${componentsArray[i]}
+							titleCase enumComponent "${lastName}_${componentsArray[i]}"
+							enumComponent="e$enumComponent"
+							echo "f->addComponent($subaccessField \"$fieldName\", $typeName, $lastFieldDefNr, $scale, $offset, \"$units\", $enumComponent, $bits);" >> $CODE_FILE
+						done
+						# end component type
+					fi
+				fi
+			fi
+			#else
+			# empty line
+		fi
+		COUNT=$[$COUNT +1]
+	done < $IN_MESSAGES
+	echo "profiles.insert($enumName, f);" >> $CODE_FILE
+	echo "}" >> $CODE_FILE
+}
+
+
+# line ending unix 
+IN_TYPES=./Profile_Types.csv
+IN_MESSAGES=./Profile_Messages.csv
+
+OLDIFS=$IFS
+IFS=";"
+
+[ ! -f $IN_TYPES ] && { echo "$IN_TYPES file not found"; exit 99; }
+createFieldEnums
+
+[ ! -f $IN_MESSAGES ] && { echo "$IN_MESSAGES file not found"; exit 99; }
+createMessageEnums
+createProfiles
+
+IFS=$OLDIFS
diff --git a/src/gis/fit/serialization.cpp b/src/gis/fit/serialization.cpp
new file mode 100644
index 0000000..0c063e6
--- /dev/null
+++ b/src/gis/fit/serialization.cpp
@@ -0,0 +1,223 @@
+/**********************************************************************************************
+    Copyright (C) 2015 Ivo Kronenberg
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "CMainWindow.h"
+#include "gis/fit/CFitProject.h"
+#include "gis/fit/defs/fit_enums.h"
+#include "gis/fit/defs/fit_fields.h"
+#include "gis/rte/CGisItemRte.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/wpt/CGisItemWpt.h"
+
+static const qreal degrees = 180.0;
+static const qreal twoPow31 = qPow(2, 31);
+static const uint sec1970to1990 = QDateTime(QDate(1989, 12, 31), QTime(0, 0, 0),Qt::UTC).toTime_t();
+
+
+class CFitDataConverter
+{
+public:
+
+    /**
+     * converts the semicircle to the WGS-84 geoids (Degrees Decimal Minutes (DDD MM.MMM)).
+     * North latitude +, South latitute -
+     * East longitude +, West longitude -
+     *
+       return: the given semicircle value converted to degree.
+     */
+    static qreal toDegree(qint32 semicircles)
+    {
+        qreal degree = 0;
+        degree = semicircles * (degrees / twoPow31);
+        return degree;
+    }
+
+    /**
+       timestamp: seconds since UTC 00:00 Dec 31 1989
+     */
+    static QDateTime toDateTime(quint32 timestamp)
+    {
+        QDateTime dateTime;
+        dateTime.setTime_t(sec1970to1990 + timestamp);
+        dateTime.setTimeSpec(Qt::UTC);
+        return dateTime;
+    }
+};
+
+
+bool readFitRecord(const CFitMessage &mesg, IGisItem::wpt_t &pt)
+{
+    if(mesg.isFieldValueValid(eRecordPositionLong) && mesg.isFieldValueValid(eRecordPositionLat))
+    {
+        pt.lon = CFitDataConverter::toDegree(mesg.getFieldValue(eRecordPositionLong).toInt());
+        pt.lat = CFitDataConverter::toDegree(mesg.getFieldValue(eRecordPositionLat).toInt());
+        // QVariant.toInt() does not convert double to int but return 0.
+        pt.ele = (int) mesg.getFieldValue(eRecordEnhancedAltitude).toDouble();
+        pt.time = CFitDataConverter::toDateTime(mesg.getFieldValue(eRecordTimestamp).toUInt());
+
+        // see gis/trk/CKnownExtension for the keys of the extensions
+        if(mesg.isFieldValueValid(eRecordHeartRate))
+        {
+            pt.extensions["gpxtpx:TrackPointExtension|gpxtpx:hr"] = mesg.getFieldValue(eRecordHeartRate);
+        }
+        if(mesg.isFieldValueValid(eRecordTemperature))
+        {
+            pt.extensions["gpxtpx:TrackPointExtension|gpxtpx:atemp"] = mesg.getFieldValue(eRecordTemperature);
+        }
+
+        return true;
+    }
+    return false;
+}
+
+bool readFitRecord(const CFitMessage &mesg, CGisItemTrk::trkpt_t &pt)
+{
+    if(readFitRecord(mesg, (IGisItem::wpt_t &)pt))
+    {
+        pt.speed = mesg.getFieldValue(eRecordSpeed).toDouble();
+
+        // see gis/trk/CKnownExtension for the keys of the extensions
+        if(mesg.isFieldValueValid(eRecordHeartRate))
+        {
+            pt.extensions["gpxtpx:TrackPointExtension|gpxtpx:hr"] = mesg.getFieldValue(eRecordHeartRate);
+        }
+        if(mesg.isFieldValueValid(eRecordTemperature))
+        {
+            pt.extensions["gpxtpx:TrackPointExtension|gpxtpx:atemp"] = mesg.getFieldValue(eRecordTemperature);
+        }
+
+        pt.extensions.squeeze();
+        return true;
+    }
+    return false;
+}
+
+void readFitCoursePoint(const CFitMessage &mesg, IGisItem::wpt_t &wpt)
+{
+    if(mesg.isFieldValueValid(eCoursePointName))
+    {
+        wpt.name = mesg.getFieldValue(eCoursePointName).toString();
+    }
+    if(mesg.isFieldValueValid(eCoursePointTimestamp))
+    {
+        wpt.time = CFitDataConverter::toDateTime(mesg.getFieldValue(eCoursePointTimestamp).toUInt());
+    }
+
+    if(mesg.isFieldValueValid(eCoursePointPositionLong) && mesg.isFieldValueValid(eCoursePointPositionLat))
+    {
+        wpt.lon = CFitDataConverter::toDegree(mesg.getFieldValue(eCoursePointPositionLong).toInt());
+        wpt.lat = CFitDataConverter::toDegree(mesg.getFieldValue(eCoursePointPositionLat).toInt());
+    }
+    // TODO find appropriate icon for different CoursePointType (CoursePoint***)
+    // see WptIcons.initWptIcons() for all values
+    wpt.sym = "Waypoint";
+}
+
+void CGisItemTrk::readTrkFromFit(CFitStream &stream)
+{
+    const CFitMessage& mesg = stream.firstMesgOf(eMesgNumCourse);
+    if(mesg.isValid() && mesg.isFieldValueValid(eCourseName))
+    {
+        trk.name = mesg.getFieldValue(eCourseName).toString();
+    }
+    else
+    {
+        // course files can have a name but activities don't, so use just the filename
+        trk.name = QFileInfo(stream.getFileName()).baseName().replace("_", " ");
+    }
+
+    trk.name = QFileInfo(stream.getFileName()).baseName().replace("_", " ");
+    // note to the FIT specification: the specification alllows different ordering of the messages.
+    // Record messages can either be at the beginning or in chronological order within the record
+    // messages. Garmin devices uses the chronological ordering. We only consider the chronological
+    // order, otherwise timestamps (of records and events) must be compared to each other.
+    trkseg_t seg = trkseg_t();
+    do
+    {
+        const CFitMessage& mesg = stream.nextMesg();
+        if(mesg.getGlobalMesgNr() == eMesgNumRecord)
+        {
+            // for documentation: MesgNumActivity, MesgNumSession, MesgNumLap, MesgNumLength could also contain data
+            CGisItemTrk::trkpt_t pt = CGisItemTrk::trkpt_t();
+            if(readFitRecord(mesg, pt))
+            {
+                seg.pts.append(pt);
+            }
+        }
+        else if(mesg.getGlobalMesgNr() ==  eMesgNumEvent)
+        {
+            if(mesg.getFieldValue(eEventEvent).toUInt() == eEventTimer)
+            {
+                if(mesg.getFieldValue(eEventEventType).toUInt() == eEventTypeStop ||
+                   mesg.getFieldValue(eEventEventType).toUInt() == eEventTypeStopAll ||
+                   mesg.getFieldValue(eEventEventType).toUInt() == eEventTypeStopDisableAll)
+                {
+                    if(!seg.pts.isEmpty())
+                    {
+                        trk.segs.append(seg);
+                        seg = trkseg_t();
+                    }
+                }
+            }
+        }
+    }
+    while (stream.hasMoreMesg());
+
+    if(trk.segs.size() == 0 && !seg.pts.isEmpty())
+    {
+        // navigation course files do not have to have start / stop event, so add the segment now.
+        trk.segs.append(seg);
+    }
+    if(trk.segs.isEmpty())
+    {
+        throw tr("FIT file %1 contains no GPS data.").arg(stream.getFileName());
+    }
+}
+
+
+void CGisItemWpt::readWptFromFit(CFitStream &stream)
+{
+    const CFitMessage& mesg = stream.lastMesg();
+    readFitCoursePoint(mesg, wpt);
+}
+
+
+void CGisItemRte::readRteFromFit(CFitStream &stream)
+{
+    // a course file could be considered as a route...
+    const CFitMessage& mesg = stream.firstMesgOf(eMesgNumCourse);
+    if(mesg.isFieldValueValid(eCourseName))
+    {
+        rte.name = mesg.getFieldValue(eCourseName).toString();
+    }
+    do
+    {
+        const CFitMessage& mesg = stream.nextMesg();
+        if(mesg.getGlobalMesgNr() == eMesgNumRecord)
+        {
+            rtept_t pt = rtept_t();
+            if(readFitRecord(mesg, pt))
+            {
+                rte.pts.append(pt);
+            }
+        }
+    }
+    while (stream.hasMoreMesg());
+}
+
+
diff --git a/src/gis/gpx/CGpxProject.cpp b/src/gis/gpx/CGpxProject.cpp
index 6679f1e..3dc866a 100644
--- a/src/gis/gpx/CGpxProject.cpp
+++ b/src/gis/gpx/CGpxProject.cpp
@@ -80,23 +80,36 @@ CGpxProject::~CGpxProject()
 
 void CGpxProject::loadGpx(const QString& filename)
 {
-    // cerate file instance
+    try
+    {
+        loadGpx(filename, this);
+    }
+    catch(QString &errormsg)
+    {
+        QMessageBox::critical(CMainWindow::getBestWidgetForParent(),
+                              tr("Failed to load file %1...").arg(filename), errormsg, QMessageBox::Abort);
+        valid = false;
+    }
+}
+
+void CGpxProject::loadGpx(const QString &filename, CGpxProject *project)
+{
+    // create file instance
     QFile file(filename);
 
     // if the file does not exist, the filename is assumed to be a name for a new project
     if(!file.exists())
     {
-        IGisProject::filename.clear();
-        setupName(filename);
-        setToolTip(CGisListWks::eColumnName, getInfo());
-        valid = true;
+        project->filename.clear();
+        project->setupName(filename);
+        project->setToolTip(CGisListWks::eColumnName, project->getInfo());
+        project->valid = true;
         return;
     }
 
     if(!file.open(QIODevice::ReadOnly))
     {
-        QMessageBox::critical(CMainWindow::getBestWidgetForParent(), QObject::tr("Failed to open..."), QObject::tr("Failed to open %1").arg(filename), QMessageBox::Abort);
-        return;
+        throw tr("Failed to open %1").arg(filename);
     }
 
 
@@ -108,8 +121,7 @@ void CGpxProject::loadGpx(const QString& filename)
     if(!xml.setContent(&file, false, &msg, &line, &column))
     {
         file.close();
-        QMessageBox::critical(CMainWindow::getBestWidgetForParent(), QObject::tr("Failed to read..."), QObject::tr("Failed to read: %1\nline %2, column %3:\n %4").arg(filename).arg(line).arg(column).arg(msg), QMessageBox::Abort);
-        return;
+        throw tr("Failed to read: %1\nline %2, column %3:\n %4").arg(filename).arg(line).arg(column).arg(msg);
     }
     file.close();
 
@@ -117,30 +129,29 @@ void CGpxProject::loadGpx(const QString& filename)
     QDomElement xmlGpx = xml.documentElement();
     if(xmlGpx.tagName() != "gpx")
     {
-        QMessageBox::critical(CMainWindow::getBestWidgetForParent(), QObject::tr("Failed to read..."), QObject::tr("Not a GPX file: ") + filename, QMessageBox::Abort);
-        return;
+        throw tr("Not a GPX file: %1").arg(filename);
     }
 
     const QDomElement& xmlExtension = xmlGpx.namedItem("extensions").toElement();
     if(xmlExtension.namedItem("ql:key").isElement())
     {
-        key = xmlExtension.namedItem("ql:key").toElement().text();
+        project->key = xmlExtension.namedItem("ql:key").toElement().text();
     }
 
     if(xmlExtension.namedItem("ql:sorting").isElement())
     {
-        sorting = sorting_e(xmlExtension.namedItem("ql:sorting").toElement().text().toInt());
+        project->sorting = sorting_e(xmlExtension.namedItem("ql:sorting").toElement().text().toInt());
     }
 
     if(xmlExtension.namedItem("ql:correlation").isElement())
     {
-        noCorrelation = bool(xmlExtension.namedItem("ql:correlation").toElement().text().toInt() == 0);
+        project->noCorrelation = bool(xmlExtension.namedItem("ql:correlation").toElement().text().toInt() == 0);
     }
 
     const QDomNode& xmlMetadata = xmlGpx.namedItem("metadata");
     if(xmlMetadata.isElement())
     {
-        readMetadata(xmlMetadata, metadata);
+        project->readMetadata(xmlMetadata, project->metadata);
     }
 
 
@@ -152,7 +163,7 @@ void CGpxProject::loadGpx(const QString& filename)
     for(int n = 0; n < N; ++n)
     {
         const QDomNode& xmlTrk = xmlTrks.item(n);
-        new CGisItemTrk(xmlTrk, this);
+        new CGisItemTrk(xmlTrk, project);
     }
 
     const QDomNodeList& xmlRtes = xmlGpx.elementsByTagName("rte");
@@ -160,7 +171,7 @@ void CGpxProject::loadGpx(const QString& filename)
     for(int n = 0; n < N; ++n)
     {
         const QDomNode& xmlRte = xmlRtes.item(n);
-        new CGisItemRte(xmlRte, this);
+        new CGisItemRte(xmlRte, project);
     }
 
     const QDomNodeList& xmlWpts = xmlGpx.elementsByTagName("wpt");
@@ -168,14 +179,14 @@ void CGpxProject::loadGpx(const QString& filename)
     for(int n = 0; n < N; ++n)
     {
         const QDomNode& xmlWpt = xmlWpts.item(n);
-        CGisItemWpt * wpt = new CGisItemWpt(xmlWpt, this);
+        CGisItemWpt * wpt = new CGisItemWpt(xmlWpt, project);
 
         /*
             Special care for waypoints stored on Garmin devices. Images attached
             to the waypoint are stored in the file system of the device and written
             as links to the waypoint. Let the device object take care of this.
          */
-        IDevice * device = dynamic_cast<IDevice*>(parent());
+        IDevice * device = dynamic_cast<IDevice*>(project->parent());
         if(device)
         {
             device->loadImages(*wpt);
@@ -187,73 +198,14 @@ void CGpxProject::loadGpx(const QString& filename)
     for(int n = 0; n < N; ++n)
     {
         const QDomNode& xmlArea = xmlAreas.item(n);
-        new CGisItemOvlArea(xmlArea, this);
-    }
-
-    setupName(QFileInfo(filename).baseName().replace("_", " "));
-    setToolTip(CGisListWks::eColumnName, getInfo());
-    valid = true;
-}
-
-bool CGpxProject::save()
-{
-    if(filename.isEmpty())
-    {
-        return saveAs();
-    }
-    else
-    {
-        if(saveAs(filename, *this))
-        {
-            markAsSaved();
-        }
-    }
-
-    return true;
-}
-
-bool CGpxProject::saveAs()
-{
-    SETTINGS;
-    QString path = cfg.value("Paths/lastGisPath", QDir::homePath()).toString();
-    path += "/" + getName() + ".gpx";
-
-    QString filter = filedialogFilterGPX;
-    QString fn = QFileDialog::getSaveFileName(CMainWindow::getBestWidgetForParent(), QObject::tr("Save GIS data to..."), path, filedialogSaveFilters, &filter);
-
-    if(fn.isEmpty())
-    {
-        return false;
-    }
-
-    bool res = false;
-    if(filter == filedialogFilterGPX)
-    {
-        filename = fn;
-        metadata.name.clear();
-        setupName(QFileInfo(filename).baseName());
-
-        res = saveAs(fn, *this);
-        if(res)
-        {
-            markAsSaved();
-        }
-    }
-    else if(filter == filedialogFilterQMS)
-    {
-        res = CQmsProject::saveAs(fn, *this);
-    }
-    else
-    {
-        return false;
+        new CGisItemOvlArea(xmlArea, project);
     }
 
-    path = QFileInfo(fn).absolutePath();
-    cfg.setValue("Paths/lastGisPath", path);
-    return res;
+    project->setupName(QFileInfo(filename).baseName().replace("_", " "));
+    project->setToolTip(CGisListWks::eColumnName, project->getInfo());
+    project->valid = true;
 }
 
-
 bool CGpxProject::saveAs(const QString& fn, IGisProject& project)
 {
     QString _fn_ = fn;
@@ -283,13 +235,13 @@ bool CGpxProject::saveAs(const QString& fn, IGisProject& project)
 
         if(!createdByQMS)
         {
-            int res = QMessageBox::warning(CMainWindow::getBestWidgetForParent(),QObject::tr("File exists ...")
-                                           ,QObject::tr("The file exists and it has not been created by QMapShack. "
-                                                        "If you press 'yes' all data in this file will be lost. "
-                                                        "Even if this file contains GPX data and has been loaded by QMapShack, "
-                                                        "QMapShack might not be able to load and store all elements of this file.  "
-                                                        "Those elements will be lost. I recommend to use another file. "
-                                                        "<b>Do you really want to overwrite the file?</b>")
+            int res = QMessageBox::warning(CMainWindow::getBestWidgetForParent(),tr("File exists ...")
+                                           ,tr("The file exists and it has not been created by QMapShack. "
+                                               "If you press 'yes' all data in this file will be lost. "
+                                               "Even if this file contains GPX data and has been loaded by QMapShack, "
+                                               "QMapShack might not be able to load and store all elements of this file.  "
+                                               "Those elements will be lost. I recommend to use another file. "
+                                               "<b>Do you really want to overwrite the file?</b>")
                                            ,QMessageBox::Yes|QMessageBox::No,QMessageBox::No);
             if(res == QMessageBox::No)
             {
@@ -314,8 +266,8 @@ bool CGpxProject::saveAs(const QString& fn, IGisProject& project)
 
     for(int i = 0; i < project.childCount(); i++)
     {
-        CGisItemWpt * item = dynamic_cast<CGisItemWpt*>(project.child(i));
-        if(item == 0)
+        CGisItemWpt *item = dynamic_cast<CGisItemWpt*>(project.child(i));
+        if(nullptr == item)
         {
             continue;
         }
@@ -334,8 +286,8 @@ bool CGpxProject::saveAs(const QString& fn, IGisProject& project)
     }
     for(int i = 0; i < project.childCount(); i++)
     {
-        CGisItemRte * item = dynamic_cast<CGisItemRte*>(project.child(i));
-        if(item == 0)
+        CGisItemRte *item = dynamic_cast<CGisItemRte*>(project.child(i));
+        if(nullptr == item)
         {
             continue;
         }
@@ -343,8 +295,8 @@ bool CGpxProject::saveAs(const QString& fn, IGisProject& project)
     }
     for(int i = 0; i < project.childCount(); i++)
     {
-        CGisItemTrk * item = dynamic_cast<CGisItemTrk*>(project.child(i));
-        if(item == 0)
+        CGisItemTrk *item = dynamic_cast<CGisItemTrk*>(project.child(i));
+        if(nullptr == item)
         {
             continue;
         }
@@ -356,7 +308,7 @@ bool CGpxProject::saveAs(const QString& fn, IGisProject& project)
     for(int i = 0; i < project.childCount(); i++)
     {
         CGisItemOvlArea * item = dynamic_cast<CGisItemOvlArea*>(project.child(i));
-        if(item == 0)
+        if(nullptr == item)
         {
             continue;
         }
@@ -392,7 +344,7 @@ bool CGpxProject::saveAs(const QString& fn, IGisProject& project)
     {
         if(!file.open(QIODevice::WriteOnly))
         {
-            throw QObject::tr("Failed to create file '%1'").arg(_fn_);
+            throw tr("Failed to create file '%1'").arg(_fn_);
         }
         QTextStream out(&file);
         out.setCodec("UTF-8");
@@ -402,12 +354,12 @@ bool CGpxProject::saveAs(const QString& fn, IGisProject& project)
         file.close();
         if(file.error() != QFile::NoError)
         {
-            throw QObject::tr("Failed to write file '%1'").arg(_fn_);
+            throw tr("Failed to write file '%1'").arg(_fn_);
         }
     }
     catch(const QString& msg)
     {
-        QMessageBox::warning(CMainWindow::getBestWidgetForParent(), QObject::tr("Saving GIS data failed..."), msg, QMessageBox::Abort);
+        QMessageBox::warning(CMainWindow::getBestWidgetForParent(), tr("Saving GIS data failed..."), msg, QMessageBox::Abort);
         res = false;
     }
     project.umount();
diff --git a/src/gis/gpx/CGpxProject.h b/src/gis/gpx/CGpxProject.h
index 9646e0e..1495013 100644
--- a/src/gis/gpx/CGpxProject.h
+++ b/src/gis/gpx/CGpxProject.h
@@ -21,26 +21,37 @@
 
 #include "gis/prj/IGisProject.h"
 
-#include <QDateTime>
-#include <QDomElement>
-#include <QUrl>
-
 class CGisListWks;
 class CGisDraw;
 
 class CGpxProject : public IGisProject
 {
+    Q_DECLARE_TR_FUNCTIONS(CGpsProject)
 public:
     CGpxProject(const QString &filename, CGisListWks * parent);
     CGpxProject(const QString &filename, IDevice * parent);
     CGpxProject(const QString &filename, const IGisProject * project, IDevice * parent);
     virtual ~CGpxProject();
 
-    bool save();
-    bool saveAs();
+    const QString getFileDialogFilter() const override
+    {
+        return IGisProject::filedialogFilterGPX;
+    }
+
+    const QString getFileExtension() const override
+    {
+        return "gpx";
+    }
+
+    bool canSave() const override
+    {
+        return true;
+    }
 
     static bool saveAs(const QString& fn, IGisProject& project);
 
+    static void loadGpx(const QString &filename, CGpxProject *project);
+
 private:
     void loadGpx(const QString& filename);
 };
diff --git a/src/gis/gpx/serialization.cpp b/src/gis/gpx/serialization.cpp
index 18f08b7..50a8710 100644
--- a/src/gis/gpx/serialization.cpp
+++ b/src/gis/gpx/serialization.cpp
@@ -16,11 +16,13 @@
 
 **********************************************************************************************/
 
+#include "device/CDeviceGarmin.h"
 #include "gis/WptIcons.h"
 #include "gis/ovl/CGisItemOvlArea.h"
 #include "gis/prj/IGisProject.h"
 #include "gis/rte/CGisItemRte.h"
 #include "gis/trk/CGisItemTrk.h"
+#include "gis/trk/CKnownExtension.h"
 #include "gis/wpt/CGisItemWpt.h"
 #include "version.h"
 
@@ -36,6 +38,7 @@ const QString IGisProject::rmc_ns    = "urn:net:trekbuddy:1.0:nmea:rmc";
 const QString IGisProject::ql_ns     = "http://www.qlandkarte.org/xmlschemas/v1.1";
 const QString IGisProject::gs_ns     = "http://www.groundspeak.com/cache/1/0";
 
+
 static void readXml(const QDomNode& xml, const QString& tag, qint32& value)
 {
     if(xml.namedItem(tag).isElement())
@@ -337,7 +340,10 @@ static void writeXml(QDomNode& ext, const QHash<QString, QVariant>& extensions)
     QDomDocument doc = ext.ownerDocument();
 
     QStringList keys = extensions.keys();
-    keys.sort();
+    qSort(keys.begin(), keys.end(), [] (const QString &k1, const QString &k2) {
+        return CKnownExtension::get(k1).order < CKnownExtension::get(k2).order;
+    });
+
     foreach(const QString &key, keys)
     {
         QStringList tags = key.split('|', QString::SkipEmptyParts);
@@ -447,8 +453,8 @@ QDomNode IGisProject::writeMetadata(QDomDocument& doc)
                              + gpx_ns    + " http://www.topografix.com/GPX/1/1/gpx.xsd "
                              + gpxx_ns   + " http://www.garmin.com/xmlschemas/GpxExtensionsv3.xsd "
                              + gpxtpx_ns + " http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd "
-                             + wptx1_ns  + " http://www.garmin.com/xmlschemas/WaypointExtensionv1.xsd"
-                             + ql_ns     + " http://www.qlandkarte.org/xmlschemas/v1.1/ql-extensions.xsd";
+                             + wptx1_ns  + " http://www.garmin.com/xmlschemas/WaypointExtensionv1.xsd "
+                             + ql_ns     + " http://www.qlandkarte.org/xmlschemas/v1.1/ql-extensions.xsd ";
 
     gpx.setAttribute("xsi:schemaLocation", schemaLocation);
 
@@ -456,7 +462,7 @@ QDomNode IGisProject::writeMetadata(QDomDocument& doc)
     gpx.appendChild(xmlMetadata);
 
     writeXml(xmlMetadata,"name", metadata.name);
-    writeXml(xmlMetadata,"desc", metadata.desc);
+    writeXml(xmlMetadata,"desc", html2Dev(metadata.desc));
 
     if(!metadata.author.name.isEmpty())
     {
@@ -579,15 +585,15 @@ void CGisItemWpt::readGcExt(const QDomNode& xmlCache)
     geocache.available  = attr.namedItem("available").nodeValue().toLocal8Bit() == "True";
     if(geocache.archived)
     {
-        geocache.status = QObject::tr("Archived");
+        geocache.status = tr("Archived");
     }
     else if(geocache.available)
     {
-        geocache.status = QObject::tr("Available");
+        geocache.status = tr("Available");
     }
     else
     {
-        geocache.status = QObject::tr("Not Available");
+        geocache.status = tr("Not Available");
     }
 
     readXml(xmlCache, "groundspeak:name",              geocache.name);
@@ -740,13 +746,6 @@ void CGisItemTrk::readTrk(const QDomNode& xml, trk_t& trk)
         const QDomNode& gpxx = ext.namedItem("gpxx:TrackExtension");
         readXml(gpxx, "gpxx:DisplayColor", trk.color);
         setColor(str2color(trk.color));
-
-        const QDomNode &extColoring = ext.namedItem("ql:coloring");
-        QString source;
-        readXml(extColoring, "ql:source",    source);
-        setColorizeSource(source);
-        readXml(extColoring, "ql:limitLow",  limitLow);
-        readXml(extColoring, "ql:limitHigh", limitHigh);
     }
 
     deriveSecondaryData();
@@ -762,8 +761,8 @@ void CGisItemTrk::save(QDomNode& gpx)
     gpx.appendChild(xmlTrk);
 
     writeXml(xmlTrk, "name",   trk.name);
-    writeXml(xmlTrk, "cmt",    trk.cmt);
-    writeXml(xmlTrk, "desc",   trk.desc);
+    writeXml(xmlTrk, "cmt",    html2Dev(trk.cmt));
+    writeXml(xmlTrk, "desc",   html2Dev(trk.desc));
     writeXml(xmlTrk, "src",    trk.src);
     writeXml(xmlTrk, "link",   trk.links);
     writeXml(xmlTrk, "number", trk.number);
@@ -776,16 +775,6 @@ void CGisItemTrk::save(QDomNode& gpx)
     writeXml(xmlExt, "ql:flags", flags);
     writeXml(xmlExt, history);
 
-    // write source for coloring tracks
-    if(!colorSource.isEmpty())
-    {
-        QDomElement xmlExtColoring = doc.createElement("ql:coloring");
-        xmlExt.appendChild(xmlExtColoring);
-        writeXml(xmlExtColoring, "ql:source",    colorSource);
-        writeXml(xmlExtColoring, "ql:limitLow",  limitLow);
-        writeXml(xmlExtColoring, "ql:limitHigh", limitHigh);
-    }
-
     // write other well known extensions
     QDomElement gpxx  = doc.createElement("gpxx:TrackExtension");
     xmlExt.appendChild(gpxx);
@@ -848,8 +837,8 @@ void CGisItemRte::save(QDomNode& gpx)
     gpx.appendChild(xmlRte);
 
     writeXml(xmlRte, "name",   rte.name);
-    writeXml(xmlRte, "cmt",    rte.cmt);
-    writeXml(xmlRte, "desc",   rte.desc);
+    writeXml(xmlRte, "cmt",    html2Dev(rte.cmt));
+    writeXml(xmlRte, "desc",   html2Dev(rte.desc));
     writeXml(xmlRte, "src",    rte.src);
     writeXml(xmlRte, "link",   rte.links);
     writeXml(xmlRte, "number", rte.number);
@@ -984,8 +973,8 @@ void IGisItem::writeWpt(QDomElement& xml, const wpt_t& wpt)
     writeXml(xml, "magvar",        wpt.magvar);
     writeXml(xml, "geoidheight",   wpt.geoidheight);
     writeXml(xml, "name",          wpt.name);
-    writeXml(xml, "cmt",           IGisItem::removeHtml(wpt.cmt));
-    writeXml(xml, "desc",          IGisItem::removeHtml(wpt.desc));
+    writeXml(xml, "cmt",           html2Dev(wpt.cmt));
+    writeXml(xml, "desc",          html2Dev(wpt.desc));
     writeXml(xml, "src",           wpt.src);
     writeXml(xml, "link",          wpt.links);
     writeXml(xml, "sym",           wpt.sym);
@@ -998,3 +987,106 @@ void IGisItem::writeWpt(QDomElement& xml, const wpt_t& wpt)
     writeXml(xml, "ageofdgpsdata", wpt.ageofdgpsdata);
     writeXml(xml, "dgpsid",        wpt.dgpsid);
 }
+
+
+void CDeviceGarmin::createAdventureFromProject(IGisProject * project, const QString& gpxFilename)
+{
+    if(pathAdventures.isEmpty())
+    {
+        return;
+    }
+
+    QDomDocument doc;
+
+    QDomElement adventure = doc.createElement("Adventure");
+    doc.appendChild(adventure);
+    adventure.setAttribute("xmlns","http://www.garmin.com/xmlschemas/GarminAdventure/v1");
+
+    writeXml(adventure, "GlobalId", project->getKey());
+    writeXml(adventure, "Name", project->getName());
+
+    QDomElement item = doc.createElement("Item");
+    adventure.appendChild(item);
+    writeXml(item, "DataType", "GPSData");
+    writeXml(item, "Location", gpxFilename);
+
+    writeXml(adventure, "Description", IGisItem::removeHtml(project->getDescription()));
+
+    const int N = project->childCount();
+    for(int i = 0; i < N; i++)
+    {
+        CGisItemTrk * track = dynamic_cast<CGisItemTrk*>(project->child(i));
+        if(track != nullptr)
+        {
+            const CGisItemTrk::trk_t& trk = track->getTrackData();
+            if(trk.segs.isEmpty())
+            {
+                continue;
+            }
+
+            if(trk.segs.first().pts.isEmpty())
+            {
+                continue;
+            }
+
+            const CGisItemTrk::trkpt_t& origin = trk.segs.first().pts.first();
+
+            QDomElement startPosition = doc.createElement("StartPosition");
+            adventure.appendChild(startPosition);
+            writeXml(startPosition, "Lat", origin.lat);
+            writeXml(startPosition, "Lon", origin.lon);
+
+            writeXml(adventure, "Activity", tr("Unknown"));
+            writeXml(adventure, "Distance", track->getTotalDistance());
+            writeXml(adventure, "Duration", track->getTotalElapsedSecondsMoving());
+            writeXml(adventure, "Ascent", track->getTotalAscend());
+            writeXml(adventure, "Descent", track->getTotalDescend());
+            writeXml(adventure, "Difficulty", 1);
+            writeXml(adventure, "NumRatings", 0);
+            writeXml(adventure, "MainTrackId", track->getName());
+
+            QDomElement waypointOrder = doc.createElement("WaypointOrder");
+            adventure.appendChild(waypointOrder);
+
+            foreach(const CGisItemTrk::trkseg_t& seg, trk.segs)
+            {
+                foreach(const CGisItemTrk::trkpt_t& trkpt, seg.pts)
+                {
+                    if(trkpt.keyWpt.item.isEmpty())
+                    {
+                        continue;
+                    }
+
+                    const CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(project->getItemByKey(trkpt.keyWpt));
+                    if(wpt == nullptr)
+                    {
+                        continue;
+                    }
+
+                    QDomElement waypoints = doc.createElement("Waypoints");
+                    waypointOrder.appendChild(waypoints);
+
+                    writeXml(waypoints, "ID", wpt->getName());
+                    writeXml(waypoints, "DistanceFromOrigin", trkpt.distance);
+                }
+            }
+
+
+            break;
+        }
+    }
+
+
+    const QDir dirAdventures(dir.absoluteFilePath(pathAdventures));
+    QString filename = dirAdventures.absoluteFilePath(project->getKey() + ".adv");
+    QFile file(filename);
+
+    mount();
+    file.open(QIODevice::WriteOnly);
+    QTextStream out(&file);
+    out.setCodec("UTF-8");
+    out << "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>" << endl;
+    out << doc.toString();
+    file.close();
+    umount();
+}
diff --git a/src/gis/ovl/CDetailsOvlArea.cpp b/src/gis/ovl/CDetailsOvlArea.cpp
index 31df5f8..eca9d6a 100644
--- a/src/gis/ovl/CDetailsOvlArea.cpp
+++ b/src/gis/ovl/CDetailsOvlArea.cpp
@@ -31,13 +31,13 @@ CDetailsOvlArea::CDetailsOvlArea(CGisItemOvlArea &area, QWidget * parent)
     setupUi(this);
 
     QPixmap icon(64,24);
-    for(int i=0; i < OVL_N_COLORS; ++i)
+    for(size_t i = 0; i < CGisItemOvlArea::colorMapSize; ++i)
     {
-        icon.fill(CGisItemOvlArea::lineColors[i]);
-        comboColor->addItem(icon,"",CGisItemOvlArea::lineColors[i]);
+        icon.fill(CGisItemOvlArea::colorMap[i].color);
+        comboColor->addItem(icon,"", CGisItemOvlArea::colorMap[i].color);
     }
 
-    for(int i = 0; i < OVL_N_STYLES; i++)
+    for(int i = 0; i < OVL_N_STYLES; ++i)
     {
         icon.fill(Qt::white);
         QPainter p(&icon);
@@ -49,7 +49,7 @@ CDetailsOvlArea::CDetailsOvlArea(CGisItemOvlArea &area, QWidget * parent)
     }
 
 
-    for(int i = 0; i < OVL_N_WIDTHS; i++)
+    for(int i = 0; i < OVL_N_WIDTHS; ++i)
     {
         comboBorderWidth->addItem(CGisItemOvlArea::lineWidths[i].string, CGisItemOvlArea::lineWidths[i].width);
     }
@@ -62,15 +62,16 @@ CDetailsOvlArea::CDetailsOvlArea(CGisItemOvlArea &area, QWidget * parent)
     }
 
 
-    connect(comboColor, SIGNAL(currentIndexChanged(int)), this, SLOT(slotSetColor(int)));
-    connect(comboBorderWidth, SIGNAL(currentIndexChanged(int)), this, SLOT(slotSetWidth(int)));
-    connect(comboStyle, SIGNAL(currentIndexChanged(int)), this, SLOT(slotSetStyle(int)));
-    connect(checkOpacity, SIGNAL(toggled(bool)), this, SLOT(slotOpyacity(bool)));
-    connect(toolLock, SIGNAL(toggled(bool)), this, SLOT(slotChangeReadOnlyMode(bool)));
-    connect(textCmtDesc, SIGNAL(anchorClicked(QUrl)), this, SLOT(slotLinkActivated(QUrl)));
-    connect(labelName, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
+    connect(comboColor,       static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &CDetailsOvlArea::slotSetColor);
+    connect(comboBorderWidth, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &CDetailsOvlArea::slotSetWidth);
+    connect(comboStyle,       static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &CDetailsOvlArea::slotSetStyle);
 
-    connect(listHistory, SIGNAL(sigChanged()), this, SLOT(setupGui()));
+    connect(checkOpacity,     &QCheckBox::toggled,             this, &CDetailsOvlArea::slotOpyacity);
+    connect(toolLock,         &QToolButton::toggled,           this, &CDetailsOvlArea::slotChangeReadOnlyMode);
+    connect(textCmtDesc,      &QTextBrowser::anchorClicked,    this, static_cast<void (CDetailsOvlArea::*)(const QUrl&)>(&CDetailsOvlArea::slotLinkActivated));
+    connect(lineName,         &CLineEdit::textEdited,          this, &CDetailsOvlArea::slotNameChanged);
+    connect(lineName,         &CLineEdit::editingFinished,     this, &CDetailsOvlArea::slotNameChangeFinished);
+    connect(listHistory,      &CHistoryListWidget::sigChanged, this, &CDetailsOvlArea::setupGui);
 }
 
 CDetailsOvlArea::~CDetailsOvlArea()
@@ -127,26 +128,31 @@ void CDetailsOvlArea::slotChangeReadOnlyMode(bool on)
     setupGui();
 }
 
-void CDetailsOvlArea::slotLinkActivated(const QString& link)
+void CDetailsOvlArea::slotNameChanged(const QString &name)
 {
-    if(link == "name")
+    const QString shownName = name.isEmpty() ? IGisItem::noName : QString(name).replace('&', "&&");
+    setWindowTitle(shownName);
+}
+
+void CDetailsOvlArea::slotNameChangeFinished()
+{
+    lineName->clearFocus();
+
+    const QString& name = lineName->text();
+    slotNameChanged(name);
+
+    if(name != area.getName())
     {
-        QString name = QInputDialog::getText(this, tr("Edit name..."), tr("Enter new area name."), QLineEdit::Normal, area.getName());
-        if(name.isEmpty())
-        {
-            return;
-        }
         area.setName(name);
+        setupGui();
     }
-
-    setupGui();
 }
 
 void CDetailsOvlArea::slotLinkActivated(const QUrl& url)
 {
     if(url.toString() == "comment")
     {
-        CTextEditWidget dlg(0);
+        CTextEditWidget dlg(nullptr);
         dlg.setHtml(area.getComment());
         if(dlg.exec() == QDialog::Accepted)
         {
@@ -156,7 +162,7 @@ void CDetailsOvlArea::slotLinkActivated(const QUrl& url)
     }
     else if(url.toString() == "description")
     {
-        CTextEditWidget dlg(0);
+        CTextEditWidget dlg(nullptr);
         dlg.setHtml(area.getDescription());
         if(dlg.exec() == QDialog::Accepted)
         {
@@ -192,26 +198,20 @@ void CDetailsOvlArea::setupGui()
     bool isReadOnly = area.isReadOnly();
     setWindowTitle(area.getName());
 
-    if(area.isTainted())
-    {
-        labelTainted->show();
-    }
-    else
-    {
-        labelTainted->hide();
-    }
-
+    labelTainted->setVisible(area.isTainted());
+    lineName->setText(area.getName());
+    lineName->setReadOnly(isReadOnly);
 
-    labelName->setText(IGisItem::toLink(isReadOnly, "name", area.getName(), ""));
-
-    comboColor->setCurrentIndex(area.getColorIdx());
-    comboColor->setEnabled(!isReadOnly);
+    comboColor->setCurrentIndex      (area.getColorIdx());
     comboBorderWidth->setCurrentIndex(comboBorderWidth->findData(area.getWidth()));
+    comboStyle->setCurrentIndex      (comboStyle->findData      (area.getStyle()));
+
+    comboColor->setEnabled      (!isReadOnly);
     comboBorderWidth->setEnabled(!isReadOnly);
-    comboStyle->setCurrentIndex(comboStyle->findData(area.getStyle()));
-    comboStyle->setEnabled(!isReadOnly);
+    comboStyle->setEnabled      (!isReadOnly);
+    checkOpacity->setEnabled    (!isReadOnly);
+
     checkOpacity->setChecked(area.getOpacity());
-    checkOpacity->setEnabled(!isReadOnly);
 
     textCmtDesc->document()->clear();
     textCmtDesc->append(IGisItem::createText(isReadOnly, area.getComment(), area.getDescription(), area.getLinks()));
@@ -223,12 +223,12 @@ void CDetailsOvlArea::setupGui()
     const CGisItemOvlArea::area_t& a = area.getAreaData();
     foreach(const CGisItemOvlArea::pt_t& pt, a.pts)
     {
-        QString str;
         QTreeWidgetItem * item = new QTreeWidgetItem();
 
         item->setText(eColNum,QString::number(idx++));
 
         // position
+        QString str;
         IUnit::degToStr(pt.lon, pt.lat, str);
         item->setText(eColPosition,str);
         items << item;
diff --git a/src/gis/ovl/CDetailsOvlArea.h b/src/gis/ovl/CDetailsOvlArea.h
index c508fac..c4db47f 100644
--- a/src/gis/ovl/CDetailsOvlArea.h
+++ b/src/gis/ovl/CDetailsOvlArea.h
@@ -33,12 +33,13 @@ public:
 
 private slots:
     void slotSetColor(int idx);
+    void slotNameChanged(const QString &name);
+    void slotNameChangeFinished();
     void slotSetWidth(int idx);
     void slotSetStyle(int idx);
     void slotOpyacity(bool yes);
     void slotChangeReadOnlyMode(bool on);
     void slotLinkActivated(const QUrl& url);
-    void slotLinkActivated(const QString& link);
     void setupGui();
 
 private:
diff --git a/src/gis/ovl/CGisItemOvlArea.cpp b/src/gis/ovl/CGisItemOvlArea.cpp
index 0bdd33b..9c9fe92 100644
--- a/src/gis/ovl/CGisItemOvlArea.cpp
+++ b/src/gis/ovl/CGisItemOvlArea.cpp
@@ -31,72 +31,12 @@
 #define DEFAULT_COLOR       4
 #define MIN_DIST_CLOSE_TO   10
 
-
-const QColor CGisItemOvlArea::lineColors[OVL_N_COLORS] =
-{
-    Qt::black                     // 0
-    ,Qt::darkRed                 // 1
-    ,Qt::darkGreen               // 2
-    ,Qt::darkYellow              // 3
-    ,Qt::darkBlue                // 4
-    ,Qt::darkMagenta             // 5
-    ,Qt::darkCyan                // 6
-    ,Qt::gray                    // 7
-    ,Qt::darkGray                // 8
-    ,Qt::red                     // 9
-    ,Qt::green                   // 10
-    ,Qt::yellow                  // 11
-    ,Qt::blue                    // 12
-    ,Qt::magenta                 // 13
-    ,Qt::cyan                    // 14
-    ,Qt::white                   // 15
-    ,Qt::transparent             // 16
-};
-
-const QString CGisItemOvlArea::bulletColors[OVL_N_COLORS] =
-{
-    // 0
-    "://icons/8x8/bullet_black.png"
-    // 1
-    ,QString("://icons/8x8/bullet_dark_red.png")
-    // 2
-    ,QString("://icons/8x8/bullet_dark_green.png")
-    // 3
-    ,QString("://icons/8x8/bullet_dark_yellow.png")
-    // 4
-    ,QString("://icons/8x8/bullet_dark_blue.png")
-    // 5
-    ,QString("://icons/8x8/bullet_dark_magenta.png")
-    // 6
-    ,QString("://icons/8x8/bullet_dark_cyan.png")
-    // 7
-    ,QString("://icons/8x8/bullet_gray.png")
-    // 8
-    ,QString("://icons/8x8/bullet_dark_gray.png")
-    // 9
-    ,QString("://icons/8x8/bullet_red.png")
-    // 10
-    ,QString("://icons/8x8/bullet_green.png")
-    // 11
-    ,QString("://icons/8x8/bullet_yellow.png")
-    // 12
-    ,QString("://icons/8x8/bullet_blue.png")
-    // 13
-    ,QString("://icons/8x8/bullet_magenta.png")
-    // 14
-    ,QString("://icons/8x8/bullet_cyan.png")
-    // 15
-    ,QString("://icons/8x8/bullet_white.png")
-    ,QString("")                 // 16
-};
-
-
 const CGisItemOvlArea::width_t CGisItemOvlArea::lineWidths[OVL_N_WIDTHS] =
 {
-    {3, QObject::tr("thin")}
-    ,{5, QObject::tr("normal")}
-    ,{9, QObject::tr("wide")}
-    ,{13, QObject::tr("strong")}
+    {3,  tr("thin")}
+    ,{5,  tr("normal")}
+    ,{9,  tr("wide")}
+    ,{13, tr("strong")}
 };
 
 const Qt::BrushStyle CGisItemOvlArea::brushStyles[OVL_N_STYLES] =
@@ -135,7 +75,7 @@ CGisItemOvlArea::CGisItemOvlArea(const CGisItemOvlArea& parentArea, IGisProject
 
     if(clone)
     {
-        area.name += QObject::tr("_Clone");
+        area.name += tr("_Clone");
         key.clear();
         history.events.clear();
         setupHistory();
@@ -166,11 +106,15 @@ CGisItemOvlArea::CGisItemOvlArea(const QDomNode &xml, IGisProject *project)
     updateDecoration(eMarkNone, eMarkNone);
 }
 
-CGisItemOvlArea::CGisItemOvlArea(const history_t& hist, IGisProject * project)
+CGisItemOvlArea::CGisItemOvlArea(const history_t& hist, const QString &dbHash, IGisProject * project)
     : IGisItem(project, eTypeOvl, project->childCount())
 {
     history = hist;
     loadHistory(hist.histIdxCurrent);
+    if(!dbHash.isEmpty())
+    {
+        lastDatabaseHash = dbHash;
+    }
 }
 
 CGisItemOvlArea::CGisItemOvlArea(quint64 id, QSqlDatabase& db, IGisProject * project)
@@ -188,6 +132,17 @@ CGisItemOvlArea::~CGisItemOvlArea()
     }
 }
 
+IGisItem * CGisItemOvlArea::createClone()
+{
+    int idx = -1;
+    IGisProject * project = dynamic_cast<IGisProject*>(parent());
+    if(project)
+    {
+        idx = project->indexOfChild(this);
+    }
+    return new CGisItemOvlArea(*this, project, idx, true);
+}
+
 void CGisItemOvlArea::setSymbol()
 {
     setColor(str2color(area.color));
@@ -219,12 +174,7 @@ QPointF CGisItemOvlArea::getPointCloseBy(const QPoint& screenPos)
         i++;
     }
 
-    if(idx < 0)
-    {
-        return NOPOINTF;
-    }
-
-    return polygonArea[idx];
+    return (idx < 0) ? NOPOINTF : polygonArea[idx];
 }
 
 void CGisItemOvlArea::readAreaDataFromGisLine(const SGisLine &l)
@@ -260,7 +210,7 @@ void CGisItemOvlArea::readAreaDataFromGisLine(const SGisLine &l)
 
 void CGisItemOvlArea::edit()
 {
-    CDetailsOvlArea dlg(*this, 0);
+    CDetailsOvlArea dlg(*this, nullptr);
     dlg.exec();
 
     deriveSecondaryData();
@@ -277,19 +227,19 @@ void CGisItemOvlArea::deriveSecondaryData()
     {
         if(pt.lon < west)
         {
-            west    = pt.lon;
+            west  = pt.lon;
         }
         if(pt.lon > east)
         {
-            east    = pt.lon;
+            east  = pt.lon;
         }
         if(pt.lat < south)
         {
-            south   = pt.lat;
+            south = pt.lat;
         }
         if(pt.lat > north)
         {
-            north   = pt.lat;
+            north = pt.lat;
         }
     }
 
@@ -397,12 +347,11 @@ void CGisItemOvlArea::gainUserFocus(bool yes)
 
 QPointF CGisItemOvlArea::getPolygonCentroid(const QPolygonF& polygon)
 {
-    int i, len;
-    qreal x = 0, y = 0;
-
-    len = polygon.size();
+    qreal x = 0;
+    qreal y = 0;
+    int len = polygon.size();
 
-    for(i = 0; i < len; i++)
+    for(int i = 0; i < len; i++)
     {
         x = x + polygon[i].x();
         y = y + polygon[i].y();
@@ -428,7 +377,7 @@ QString CGisItemOvlArea::getInfo(bool allowEdit) const
     QString str = "<div style='font-weight: bold;'>" + getName() + "</div>";
 
     IUnit::self().meter2area(area.area, val, unit);
-    str += "<br/>\n" + QObject::tr("Area: %1%2").arg(val).arg(unit);
+    str += "<br/>\n" + tr("Area: %1%2").arg(val).arg(unit);
 
     QString desc = removeHtml(area.desc).simplified();
     if(desc.count())
@@ -490,7 +439,7 @@ void CGisItemOvlArea::setDataFromPolyline(const SGisLine& l)
 
     flags |= eFlagTainted;
 
-    changed(QObject::tr("Changed area shape."), "://icons/48x48/AreaMove.png");
+    changed(tr("Changed area shape."), "://icons/48x48/AreaMove.png");
     updateDecoration(eMarkChanged, eMarkNone);
 }
 
@@ -498,78 +447,76 @@ void CGisItemOvlArea::setName(const QString& str)
 {
     setText(CGisListWks::eColumnName, str);
     area.name = str;
-    changed(QObject::tr("Changed name."), "://icons/48x48/EditText.png");
+    changed(tr("Changed name."), "://icons/48x48/EditText.png");
 }
 
 void CGisItemOvlArea::setWidth(qint32 w)
 {
     area.width = w;
-    changed(QObject::tr("Changed border width."), "://icons/48x48/TextBold.png");
+    changed(tr("Changed border width."), "://icons/48x48/TextBold.png");
 }
 
 void CGisItemOvlArea::setStyle(qint32 s)
 {
     area.style = s;
-    changed(QObject::tr("Changed fill pattern."), "://icons/48x48/Pattern.png");
+    changed(tr("Changed fill pattern."), "://icons/48x48/Pattern.png");
 }
 
 void CGisItemOvlArea::setOpacity(bool yes)
 {
     area.opacity = yes;
-    changed(QObject::tr("Changed opacity."), "://icons/48x48/Opacity.png");
+    changed(tr("Changed opacity."), "://icons/48x48/Opacity.png");
 }
 
 void CGisItemOvlArea::setComment(const QString& str)
 {
     area.cmt = str;
-    changed(QObject::tr("Changed comment."), "://icons/48x48/EditText.png");
+    changed(tr("Changed comment."), "://icons/48x48/EditText.png");
 }
 
 void CGisItemOvlArea::setDescription(const QString& str)
 {
     area.desc = str;
-    changed(QObject::tr("Changed description."), "://icons/48x48/EditText.png");
+    changed(tr("Changed description."), "://icons/48x48/EditText.png");
 }
 
 void CGisItemOvlArea::setLinks(const QList<link_t>& links)
 {
     area.links = links;
-    changed(QObject::tr("Changed links"), "://icons/48x48/Link.png");
+    changed(tr("Changed links"), "://icons/48x48/Link.png");
 }
 
 
-void CGisItemOvlArea::setColor(int idx)
+void CGisItemOvlArea::setColor(size_t idx)
 {
-    int N = sizeof(lineColors)/sizeof(QColor);
-    if(idx >= N)
+    if(idx >= colorMapSize)
     {
         return;
     }
-    setColor(lineColors[idx]);
-    changed(QObject::tr("Changed color"), "://icons/48x48/SelectColor.png");
+    setColor(colorMap[idx].color);
+    changed(tr("Changed color"), "://icons/48x48/SelectColor.png");
 }
 
 void CGisItemOvlArea::setColor(const QColor& c)
 {
-    int n;
-    int N = sizeof(lineColors)/sizeof(QColor);
+    size_t n;
 
-    for(n = 0; n < N; n++)
+    for(n = 0; n < colorMapSize; n++)
     {
-        if(lineColors[n] == c)
+        if(colorMap[n].color == c)
         {
             colorIdx    = n;
-            color       = lineColors[n];
-            bullet      = QPixmap(bulletColors[n]);
+            color       = colorMap[n].color;
+            bullet      = QPixmap(colorMap[n].bullet);
             break;
         }
     }
 
-    if(n == N)
+    if(n == colorMapSize)
     {
         colorIdx    = DEFAULT_COLOR;
-        color       = lineColors[DEFAULT_COLOR];
-        bullet      = QPixmap(bulletColors[DEFAULT_COLOR]);
+        color       = colorMap[DEFAULT_COLOR].color;
+        bullet      = QPixmap(colorMap[DEFAULT_COLOR].bullet);
     }
 
     setIcon(color.name());
@@ -577,7 +524,7 @@ void CGisItemOvlArea::setColor(const QColor& c)
 
 void CGisItemOvlArea::setIcon(const QString& c)
 {
-    area.color   = c;
+    area.color  = c;
     icon        = QPixmap("://icons/48x48/Area.png");
 
     QPixmap mask( icon.size() );
diff --git a/src/gis/ovl/CGisItemOvlArea.h b/src/gis/ovl/CGisItemOvlArea.h
index f6366d6..745f7eb 100644
--- a/src/gis/ovl/CGisItemOvlArea.h
+++ b/src/gis/ovl/CGisItemOvlArea.h
@@ -29,25 +29,27 @@ class IGisProject;
 class CScrOptOvlArea;
 class IQlgtOverlay;
 
-#define OVL_N_COLORS 17
 #define OVL_N_WIDTHS 4
 #define OVL_N_STYLES 8
 
 class CGisItemOvlArea : public IGisItem, public IGisLine
 {
+    Q_DECLARE_TR_FUNCTIONS(CGisItemOvlArea)
 public:
     CGisItemOvlArea(const SGisLine& line, const QString &name, IGisProject * project, int idx);
     CGisItemOvlArea(const CGisItemOvlArea &parentArea, IGisProject * project, int idx, bool clone);
     CGisItemOvlArea(const QDomNode &xml, IGisProject *project);
-    CGisItemOvlArea(const history_t& hist, IGisProject * project);
+    CGisItemOvlArea(const history_t& hist, const QString& dbHash, IGisProject * project);
     CGisItemOvlArea(quint64 id, QSqlDatabase& db, IGisProject * project);
     CGisItemOvlArea(const IQlgtOverlay& ovl);
     virtual ~CGisItemOvlArea();
 
-    QDataStream& operator<<(QDataStream& stream);
-    QDataStream& operator>>(QDataStream& stream) const;
+    IGisItem * createClone() override;
 
-    const QString& getName() const
+    QDataStream& operator<<(QDataStream& stream) override;
+    QDataStream& operator>>(QDataStream& stream) const override;
+
+    const QString& getName() const override
     {
         return area.name.isEmpty() ? noName : area.name;
     }
@@ -56,17 +58,17 @@ public:
     {
         return colorIdx;
     }
-    QString getInfo(bool allowEdit = false) const;
-    void getPolylineFromData(SGisLine& l);
-    const QString& getComment() const
+    QString getInfo(bool allowEdit = false) const override;
+    void getPolylineFromData(SGisLine& l) override;
+    const QString& getComment() const override
     {
         return area.cmt;
     }
-    const QString& getDescription() const
+    const QString& getDescription() const override
     {
         return area.desc;
     }
-    const QList<link_t>& getLinks() const
+    const QList<link_t>& getLinks() const override
     {
         return area.links;
     }
@@ -84,27 +86,28 @@ public:
     }
 
     void setName(const QString& str);
-    void setColor(int idx);
-    void setDataFromPolyline(const SGisLine& l);
+    void setColor(size_t idx);
+    void setDataFromPolyline(const SGisLine& l) override;
     void setWidth(qint32 w);
     void setStyle(qint32 s);
     void setOpacity(bool yes);
-    void setComment(const QString& str);
-    void setDescription(const QString& str);
-    void setLinks(const QList<link_t>& links);
+    void setComment(const QString& str)       override;
+    void setDescription(const QString& str)   override;
+    void setLinks(const QList<link_t>& links) override;
 
-    void save(QDomNode& gpx);
-    void edit();
+    void save(QDomNode& gpx) override;
+    void edit() override;
 
-    void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis);
-    void drawLabel(QPainter& p, const QPolygonF& viewport,QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis);
-    void drawHighlight(QPainter& p);
+    using IGisItem::drawItem;
+    void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis) override;
+    void drawLabel(QPainter& p, const QPolygonF& viewport,QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis) override;
+    void drawHighlight(QPainter& p) override;
 
-    IScrOpt * getScreenOptions(const QPoint &origin, IMouse * mouse);
-    QPointF getPointCloseBy(const QPoint& screenPos);
-    bool isCloseTo(const QPointF& pos);
+    IScrOpt * getScreenOptions(const QPoint &origin, IMouse * mouse) override;
+    QPointF getPointCloseBy(const QPoint& screenPos) override;
+    bool isCloseTo(const QPointF& pos) override;
 
-    void gainUserFocus(bool yes);
+    void gainUserFocus(bool yes) override;
 
     struct width_t
     {
@@ -112,12 +115,10 @@ public:
         QString string;
     };
 
-    static const QColor lineColors[OVL_N_COLORS];
-    static const QString bulletColors[OVL_N_COLORS];
     static const width_t lineWidths[OVL_N_WIDTHS];
     static const Qt::BrushStyle brushStyles[OVL_N_STYLES];
 protected:
-    void setSymbol();
+    void setSymbol() override;
 
 
 public:
@@ -164,7 +165,7 @@ private:
 
     static key_t keyUserFocus;
 
-    QPen penForeground {Qt::blue, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin};
+    QPen penForeground {Qt::blue,  3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin};
     QPen penBackground {Qt::white, 5, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin};
 
     /// the track line color
@@ -172,7 +173,7 @@ private:
     /// the trackpoint bullet icon
     QPixmap bullet;
     /// the track line color by index
-    unsigned colorIdx;
+    unsigned colorIdx = 0;
 
     QPolygonF polygonArea;
 
diff --git a/src/gis/ovl/CScrOptOvlArea.cpp b/src/gis/ovl/CScrOptOvlArea.cpp
index 549b815..44e654f 100644
--- a/src/gis/ovl/CScrOptOvlArea.cpp
+++ b/src/gis/ovl/CScrOptOvlArea.cpp
@@ -42,15 +42,15 @@ CScrOptOvlArea::CScrOptOvlArea(CGisItemOvlArea *area, const QPoint &point, IMous
     move(anchor.toPoint() + QPoint(-width()/2,SCR_OPT_OFFSET));
     show();
 
-    connect(toolEditDetails, SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolDelete, SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolCopy, SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolEdit, SIGNAL(clicked()), this, SLOT(hide()));
-
-    connect(toolEditDetails, SIGNAL(clicked()), this, SLOT(slotEditDetails()));
-    connect(toolDelete, SIGNAL(clicked()), this, SLOT(slotDelete()));
-    connect(toolCopy, SIGNAL(clicked()), this, SLOT(slotCopy()));
-    connect(toolEdit, SIGNAL(clicked()), this, SLOT(slotEdit()));
+    connect(toolEditDetails, &QToolButton::clicked, this, &CScrOptOvlArea::hide);
+    connect(toolDelete,      &QToolButton::clicked, this, &CScrOptOvlArea::hide);
+    connect(toolCopy,        &QToolButton::clicked, this, &CScrOptOvlArea::hide);
+    connect(toolEdit,        &QToolButton::clicked, this, &CScrOptOvlArea::hide);
+
+    connect(toolEditDetails, &QToolButton::clicked, this, &CScrOptOvlArea::slotEditDetails);
+    connect(toolDelete,      &QToolButton::clicked, this, &CScrOptOvlArea::slotDelete);
+    connect(toolCopy,        &QToolButton::clicked, this, &CScrOptOvlArea::slotCopy);
+    connect(toolEdit,        &QToolButton::clicked, this, &CScrOptOvlArea::slotEdit);
 }
 
 CScrOptOvlArea::~CScrOptOvlArea()
@@ -84,7 +84,7 @@ void CScrOptOvlArea::slotEdit()
 void CScrOptOvlArea::draw(QPainter& p)
 {
     IGisItem * item = CGisWidget::self().getItemByKey(key);
-    if(item == 0)
+    if(nullptr == item)
     {
         QWidget::deleteLater();
         return;
diff --git a/src/gis/ovl/CScrOptOvlArea.h b/src/gis/ovl/CScrOptOvlArea.h
index bb9ebac..3d371d2 100644
--- a/src/gis/ovl/CScrOptOvlArea.h
+++ b/src/gis/ovl/CScrOptOvlArea.h
@@ -34,7 +34,7 @@ public:
     CScrOptOvlArea(CGisItemOvlArea * area, const QPoint &point, IMouse *parent);
     virtual ~CScrOptOvlArea();
 
-    void draw(QPainter& p);
+    void draw(QPainter& p) override;
 
 private slots:
     void slotEditDetails();
diff --git a/src/gis/ovl/IDetailsOvlArea.ui b/src/gis/ovl/IDetailsOvlArea.ui
index 6a3ced0..3a546a8 100644
--- a/src/gis/ovl/IDetailsOvlArea.ui
+++ b/src/gis/ovl/IDetailsOvlArea.ui
@@ -32,16 +32,79 @@
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
-      <widget class="QLabel" name="labelName">
+      <widget class="CLineEdit" name="lineName">
+       <property name="palette">
+        <palette>
+         <active>
+          <colorrole role="Base">
+           <brush brushstyle="SolidPattern">
+            <color alpha="0">
+             <red>0</red>
+             <green>0</green>
+             <blue>0</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Window">
+           <brush brushstyle="SolidPattern">
+            <color alpha="0">
+             <red>0</red>
+             <green>0</green>
+             <blue>0</blue>
+            </color>
+           </brush>
+          </colorrole>
+         </active>
+         <inactive>
+          <colorrole role="Base">
+           <brush brushstyle="SolidPattern">
+            <color alpha="0">
+             <red>0</red>
+             <green>0</green>
+             <blue>0</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Window">
+           <brush brushstyle="SolidPattern">
+            <color alpha="0">
+             <red>0</red>
+             <green>0</green>
+             <blue>0</blue>
+            </color>
+           </brush>
+          </colorrole>
+         </inactive>
+         <disabled>
+          <colorrole role="Base">
+           <brush brushstyle="SolidPattern">
+            <color alpha="0">
+             <red>0</red>
+             <green>0</green>
+             <blue>0</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Window">
+           <brush brushstyle="SolidPattern">
+            <color alpha="0">
+             <red>0</red>
+             <green>0</green>
+             <blue>0</blue>
+            </color>
+           </brush>
+          </colorrole>
+         </disabled>
+        </palette>
+       </property>
        <property name="font">
         <font>
-         <pointsize>15</pointsize>
          <weight>75</weight>
          <bold>true</bold>
         </font>
        </property>
-       <property name="text">
-        <string>-</string>
+       <property name="frame">
+        <bool>false</bool>
        </property>
       </widget>
      </item>
@@ -178,7 +241,7 @@
    <item>
     <widget class="QTabWidget" name="tabWidget">
      <property name="currentIndex">
-      <number>0</number>
+      <number>1</number>
      </property>
      <widget class="QWidget" name="tab_3">
       <attribute name="title">
@@ -280,7 +343,24 @@
    <extends>QListWidget</extends>
    <header>widgets/CHistoryListWidget.h</header>
   </customwidget>
+  <customwidget>
+   <class>CLineEdit</class>
+   <extends>QLineEdit</extends>
+   <header>widgets/CLineEdit.h</header>
+  </customwidget>
  </customwidgets>
+ <tabstops>
+  <tabstop>toolLock</tabstop>
+  <tabstop>lineName</tabstop>
+  <tabstop>tabWidget</tabstop>
+  <tabstop>comboColor</tabstop>
+  <tabstop>comboBorderWidth</tabstop>
+  <tabstop>comboStyle</tabstop>
+  <tabstop>checkOpacity</tabstop>
+  <tabstop>textCmtDesc</tabstop>
+  <tabstop>treeWidget</tabstop>
+  <tabstop>listHistory</tabstop>
+ </tabstops>
  <resources>
   <include location="../../resources.qrc"/>
  </resources>
diff --git a/src/gis/prj/CDetailsPrj.cpp b/src/gis/prj/CDetailsPrj.cpp
index 472fe58..0691360 100644
--- a/src/gis/prj/CDetailsPrj.cpp
+++ b/src/gis/prj/CDetailsPrj.cpp
@@ -21,10 +21,12 @@
 #include "gis/prj/CDetailsPrj.h"
 #include "gis/prj/IGisProject.h"
 #include "gis/rte/CGisItemRte.h"
+#include "gis/trk/CActivityTrk.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
 #include "helpers/CLinksDialog.h"
 #include "helpers/CProgressDialog.h"
+#include "helpers/Signals.h"
 #include "plot/CPlotProfile.h"
 #include "plot/CPlotTrack.h"
 #include "widgets/CTextEditWidget.h"
@@ -34,27 +36,48 @@
 
 CDetailsPrj::CDetailsPrj(IGisProject &prj, QWidget *parent)
     : QWidget(parent)
+    , INotifyTrk(CGisItemTrk::eVisualProject)
     , prj(prj)
 {
     setupUi(this);
 
-    connect(labelKeywords, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
-    connect(textDesc, SIGNAL(anchorClicked(QUrl)), this, SLOT(slotLinkActivated(QUrl)));
-    connect(toolPrint, SIGNAL(clicked()), this, SLOT(slotPrint()));
-    connect(toolReload, SIGNAL(clicked()), this, SLOT(slotSetupGui()));
-    connect(comboSort, SIGNAL(currentIndexChanged(int)), this, SLOT(slotSortMode(int)));
-    connect(toolLock, SIGNAL(clicked(bool)), this, SLOT(slotLock(bool)));
+    const int N = prj.childCount();
+    for(int i = 0; i < N; i++)
+    {
+        CGisItemTrk *trk = dynamic_cast<CGisItemTrk*>(prj.child(i));
+        if(nullptr != trk)
+        {
+            trk->registerVisual(this);
+        }
+    }
+
+    connect(labelKeywords, &QLabel::linkActivated,          this, static_cast<void (CDetailsPrj::*)(const QString&)>(&CDetailsPrj::slotLinkActivated));
+    connect(textDesc,      &QTextBrowser::anchorClicked,    this, static_cast<void (CDetailsPrj::*)(const QUrl&)   >(&CDetailsPrj::slotLinkActivated));
+    connect(toolPrint,     &QToolButton::clicked,           this, &CDetailsPrj::slotPrint);
+    connect(toolReload,    &QToolButton::clicked,           this, &CDetailsPrj::slotSetupGui);
+    connect(toolLock,      &QToolButton::clicked,           this, &CDetailsPrj::slotLock);
+
+    connect(comboSort,     static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &CDetailsPrj::slotSortMode);
 
     timerUpdateTime = new QTimer(this);
     timerUpdateTime->setSingleShot(true);
     timerUpdateTime->setInterval(20);
-    connect(timerUpdateTime, SIGNAL(timeout()), this, SLOT(slotSetupGui()));
+    connect(timerUpdateTime, &QTimer::timeout, this, &CDetailsPrj::slotSetupGui);
 
     timerUpdateTime->start();
 }
 
 CDetailsPrj::~CDetailsPrj()
 {
+    const int N = prj.childCount();
+    for(int i = 0; i < N; i++)
+    {
+        CGisItemTrk *trk = dynamic_cast<CGisItemTrk*>(prj.child(i));
+        if(nullptr != trk)
+        {
+            trk->unregisterVisual(this);
+        }
+    }
 }
 
 void CDetailsPrj::resizeEvent(QResizeEvent * e)
@@ -65,7 +88,7 @@ void CDetailsPrj::resizeEvent(QResizeEvent * e)
 
 void CDetailsPrj::getTrackProfile(CGisItemTrk * trk, QImage& image)
 {
-    CPlotProfile plot(trk, IPlot::eModeIcon, this);
+    CPlotProfile plot(trk, trk->limitsGraph1, IPlot::eModeIcon, this);
     plot.setSolid(true);
     plot.save(image);
 }
@@ -94,10 +117,12 @@ void CDetailsPrj::slotSetupGui()
         return;
     }
 
-    comboSort->blockSignals(true);
+    X______________BlockAllSignals______________X(this);
     comboSort->setCurrentIndex(prj.getSorting());
     if((prj.getSorting() > IGisProject::eSortTime) && !prj.doCorrelation())
     {
+        X_____________UnBlockAllSignals_____________X(this);
+
         QString msg = tr("You want to sort waypoints along a track, but you switched off track and waypoint correlation. Do you want to switch it on again?");
         int res = QMessageBox::question(this, tr("Correlation..."), msg, QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes);
         if(res == QMessageBox::Yes)
@@ -109,12 +134,11 @@ void CDetailsPrj::slotSetupGui()
             comboSort->setCurrentIndex(IGisProject::eSortNone);
         }
         timerUpdateTime->start();
+
         mutex.unlock();
         return;
     }
-    comboSort->blockSignals(false);
 
-    toolLock->blockSignals(true);
     const int N = prj.childCount();
     if(N == 0)
     {
@@ -135,7 +159,7 @@ void CDetailsPrj::slotSetupGui()
             }
         }
     }
-    toolLock->blockSignals(false);
+    X_____________UnBlockAllSignals_____________X(this);
 
     textDesc->document()->setTextWidth(textDesc->size().width() - 20);
     draw(*textDesc->document(), false);
@@ -147,10 +171,9 @@ void CDetailsPrj::slotSetupGui()
         if(idx != NOIDX)
         {
             setObjectName(prj.getName());
-            tabWidget->setTabText(idx, prj.getName());
+            tabWidget->setTabText(idx, prj.getName().replace("&", "&&"));
         }
     }
-
     mutex.unlock();
 }
 
@@ -224,8 +247,8 @@ void CDetailsPrj::draw(QTextDocument& doc, bool printable)
     fmtTableHidden.setBottomMargin(0);
 
     QVector<QTextLength> constraints2;
-    constraints2 << QTextLength(QTextLength::PercentageLength, 70);
-    constraints2 << QTextLength(QTextLength::PercentageLength, 30);
+    constraints2 << QTextLength(QTextLength::PercentageLength, 50);
+    constraints2 << QTextLength(QTextLength::PercentageLength, 50);
     fmtTableHidden.setColumnWidthConstraints(constraints2);
 
     fmtTableInfo.setBorder(0);
@@ -264,32 +287,32 @@ void CDetailsPrj::draw(QTextDocument& doc, bool printable)
     const int N = prj.childCount();
     for(int i = 0; i < N; i++)
     {
-        CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(prj.child(i));
-        if(trk != 0)
+        CGisItemTrk *trk = dynamic_cast<CGisItemTrk*>(prj.child(i));
+        if(nullptr != trk)
         {
             trks << trk;
             nItems++;
             continue;
         }
 
-        CGisItemRte * rte = dynamic_cast<CGisItemRte*>(prj.child(i));
-        if(rte != 0)
+        CGisItemRte *rte = dynamic_cast<CGisItemRte*>(prj.child(i));
+        if(nullptr != rte)
         {
             rtes << rte;
             nItems++;
             continue;
         }
 
-        CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(prj.child(i));
-        if(wpt != 0)
+        CGisItemWpt *wpt = dynamic_cast<CGisItemWpt*>(prj.child(i));
+        if(nullptr != wpt)
         {
             wpts << wpt;
             nItems++;
             continue;
         }
 
-        CGisItemOvlArea * area = dynamic_cast<CGisItemOvlArea*>(prj.child(i));
-        if(area != 0)
+        CGisItemOvlArea *area = dynamic_cast<CGisItemOvlArea*>(prj.child(i));
+        if(nullptr != area)
         {
             areas << area;
             nItems++;
@@ -379,6 +402,34 @@ void CDetailsPrj::drawTrackSummary(QTextCursor& cursor, const QList<CGisItemTrk*
     cursor1.insertHtml(str);
 }
 
+void CDetailsPrj::addIcon(QTextTable * table, int col, int row, IGisItem * item, bool printable)
+{
+    table->cellAt(row,col).firstCursorPosition().insertImage(item->getIcon().toImage().scaledToWidth(16, Qt::SmoothTransformation));
+
+    CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(item);
+    if(trk)
+    {
+        QSet<QString> icons;
+        foreach(const CActivityTrk::activity_range_t& range, trk->getActivities().getActivityRanges())
+        {
+            icons << range.icon;
+        }
+
+        foreach(const QString &icon, icons)
+        {
+            if(!icon.isEmpty())
+            {
+                table->cellAt(row,col).lastCursorPosition().insertHtml(QString("<p><br/><img src='%1'/></p>").arg(icon));
+            }
+        }
+    }
+
+    if(!(printable||item->isReadOnly()))
+    {
+        table->cellAt(row,col).lastCursorPosition().insertHtml(QString("<p><a href='edit?key=%1'><img src='://icons/16x16/EditDetails.png'/></a></p>").arg(item->getKey().item));
+    }
+}
+
 
 void CDetailsPrj::drawByGroup(QTextCursor &cursor, QList<CGisItemTrk*>& trks, QList<CGisItemWpt*>& wpts, CProgressDialog& progress, int& n, bool printable)
 {
@@ -407,7 +458,7 @@ void CDetailsPrj::drawByGroup(QTextCursor &cursor, QList<CGisItemTrk*>& trks, QL
         {
             PROGRESS(n++, return );
 
-            table->cellAt(cnt,eSym1).firstCursorPosition().insertImage(wpt->getIcon().toImage().scaledToWidth(16, Qt::SmoothTransformation));
+            addIcon(table, eSym1, cnt, wpt, printable);
             table->cellAt(cnt,eInfo1).firstCursorPosition().insertHtml(wpt->getInfo());
             table->cellAt(cnt,eComment1).firstCursorPosition().insertHtml(IGisItem::createText(wpt->isReadOnly()||printable, wpt->getComment(), wpt->getDescription(), wpt->getLinks(), wpt->getKey().item));
             cnt++;
@@ -434,7 +485,7 @@ void CDetailsPrj::drawByGroup(QTextCursor &cursor, QList<CGisItemTrk*>& trks, QL
         {
             PROGRESS(n++, return );
 
-            table->cellAt(cnt,eSym1).firstCursorPosition().insertImage(trk->getIcon().toImage().scaledToWidth(16, Qt::SmoothTransformation));
+            addIcon(table, eSym1, cnt, trk, printable);
 
             int w1 = qRound(w/3.5 > 300 ? 300 : w/3.5);
             int h1 = qRound(w1/2.0);
@@ -539,9 +590,9 @@ void CDetailsPrj::drawByTrack(QTextCursor& cursor, QList<CGisItemTrk *> &trks, Q
             PROGRESS(n++, return );
 
             CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(prj.getItemByKey(info.key));
-            if(wpt != 0)
+            if(wpt != nullptr)
             {
-                table->cellAt(cnt,eSym2).firstCursorPosition().insertImage(wpt->getIcon().toImage().scaledToWidth(16, Qt::SmoothTransformation));
+                addIcon(table, eSym2, cnt, wpt, printable);
                 table->cellAt(cnt,eInfo2).firstCursorPosition().insertHtml(wpt->getInfo());
 
                 QTextTable * table1 = table->cellAt(cnt,eData2).lastCursorPosition().insertTable(1, 2, fmtTableInfo);
@@ -587,7 +638,7 @@ void CDetailsPrj::drawByTrack(QTextCursor& cursor, QList<CGisItemTrk *> &trks, Q
             cnt++;
         }
 
-        table->cellAt(cnt,eSym2).firstCursorPosition().insertImage(trk->getIcon().toImage().scaledToWidth(16, Qt::SmoothTransformation));
+        addIcon(table, eSym1, cnt, trk, printable);
         table->cellAt(cnt,eInfo2).firstCursorPosition().insertHtml(trk->getInfo());
 
         QTextTable * table1 = table->cellAt(cnt,eData2).lastCursorPosition().insertTable(1, 2, fmtTableInfo);
@@ -627,7 +678,7 @@ void CDetailsPrj::drawArea(QTextCursor& cursor, QList<CGisItemOvlArea *> &areas,
     {
         PROGRESS(n++, return );
 
-        table->cellAt(cnt,eSym1).firstCursorPosition().insertImage(area->getIcon().toImage().scaledToWidth(16, Qt::SmoothTransformation));
+        addIcon(table, eSym1, cnt, area, printable);
         table->cellAt(cnt,eInfo1).firstCursorPosition().insertHtml(area->getInfo());
         table->cellAt(cnt,eComment1).firstCursorPosition().insertHtml(IGisItem::createText(area->isReadOnly()||printable, area->getComment(), area->getDescription(), area->getLinks(), area->getKey().item));
         cnt++;
@@ -657,7 +708,7 @@ void CDetailsPrj::drawRoute(QTextCursor& cursor, QList<CGisItemRte *> &rtes, CPr
     {
         PROGRESS(n++, return );
 
-        table->cellAt(cnt,eSym1).firstCursorPosition().insertImage(rte->getIcon().toImage().scaledToWidth(16, Qt::SmoothTransformation));
+        addIcon(table, eSym1, cnt, rte, printable);
         table->cellAt(cnt,eInfo1).firstCursorPosition().insertHtml(rte->getInfo());
         table->cellAt(cnt,eComment1).firstCursorPosition().insertHtml(IGisItem::createText(rte->isReadOnly()||printable, rte->getComment(), rte->getDescription(), rte->getLinks(), rte->getKey().item));
         cnt++;
@@ -702,7 +753,6 @@ void CDetailsPrj::slotLinkActivated(const QUrl& url)
         {
             prj.setName(name);
         }
-        slotSetupGui();
     }
     else if(url.path() == "description")
     {
@@ -730,14 +780,13 @@ void CDetailsPrj::slotLinkActivated(const QUrl& url)
         }
         else
         {
-            CTextEditWidget dlg(0);
+            CTextEditWidget dlg(nullptr);
             dlg.setHtml(prj.getDescription());
             if(dlg.exec() == QDialog::Accepted)
             {
                 prj.setDescription(dlg.getHtml());
             }
         }
-        slotSetupGui();
     }
     else if(url.path() == "comment")
     {
@@ -763,7 +812,6 @@ void CDetailsPrj::slotLinkActivated(const QUrl& url)
                 }
             }
         }
-        slotSetupGui();
     }
     else if(url.path() == "links")
     {
@@ -798,12 +846,30 @@ void CDetailsPrj::slotLinkActivated(const QUrl& url)
                 prj.setLinks(links);
             }
         }
-        slotSetupGui();
+    }
+    else if(url.path() == "edit")
+    {
+        IGisItem::key_t key;
+        key.project = prj.getKey();
+
+        QString query = url.query();
+        if(query.startsWith("key="))
+        {
+            key.item = query.mid(4);
+        }
+
+        IGisItem * item = prj.getItemByKey(key);
+        if(item)
+        {
+            item->edit();
+        }
     }
     else
     {
         QDesktopServices::openUrl(url);
+        return;
     }
+    slotSetupGui();
 }
 
 void CDetailsPrj::slotPrint()
@@ -851,3 +917,11 @@ void CDetailsPrj::slotSortMode(int idx)
     prj.setSorting(IGisProject::sorting_e(idx));
     slotSetupGui();
 }
+
+void CDetailsPrj::updateData()
+{
+    if(!prj.blockUpdateItems())
+    {
+        slotSetupGui();
+    }
+}
diff --git a/src/gis/prj/CDetailsPrj.h b/src/gis/prj/CDetailsPrj.h
index 84e8ccc..dcd4530 100644
--- a/src/gis/prj/CDetailsPrj.h
+++ b/src/gis/prj/CDetailsPrj.h
@@ -19,6 +19,7 @@
 #ifndef CDETAILSPRJ_H
 #define CDETAILSPRJ_H
 
+#include "gis/trk/CGisItemTrk.h"
 #include "ui_IDetailsPrj.h"
 #include <QMutex>
 #include <QPointer>
@@ -33,15 +34,21 @@ class CGisItemRte;
 class CProgressDialog;
 class QTimer;
 
-class CDetailsPrj : public QWidget, private Ui::IDetailsPrj
+class CDetailsPrj : public QWidget, public INotifyTrk, private Ui::IDetailsPrj
 {
     Q_OBJECT
 public:
     CDetailsPrj(IGisProject& prj, QWidget * parent);
     virtual ~CDetailsPrj();
 
+    void updateData() override;
+    void setMouseFocus(const CGisItemTrk::trkpt_t * pt) override {}
+    void setMouseRangeFocus(const CGisItemTrk::trkpt_t * pt1, const CGisItemTrk::trkpt_t * pt2) override {}
+    void setMouseClickFocus(const CGisItemTrk::trkpt_t * pt) override {}
+
+
 protected:
-    void resizeEvent(QResizeEvent * e);
+    void resizeEvent(QResizeEvent *e) override;
 
 private slots:
     void slotLinkActivated(const QString& link);
@@ -53,6 +60,7 @@ private slots:
     void slotSetScrollbar();
 
 private:
+    void addIcon(QTextTable *table, int col, int row, IGisItem * item, bool printable);
     void getTrackProfile(CGisItemTrk * trk, QImage& image);
     void getTrackOverview(CGisItemTrk * trk, QImage& image);
     void draw(QTextDocument& doc, bool printable);
diff --git a/src/gis/prj/IDetailsPrj.ui b/src/gis/prj/IDetailsPrj.ui
index 737635c..db1b26b 100644
--- a/src/gis/prj/IDetailsPrj.ui
+++ b/src/gis/prj/IDetailsPrj.ui
@@ -159,6 +159,9 @@
      <property name="openExternalLinks">
       <bool>true</bool>
      </property>
+     <property name="openLinks">
+      <bool>false</bool>
+     </property>
     </widget>
    </item>
   </layout>
diff --git a/src/gis/prj/IGisProject.cpp b/src/gis/prj/IGisProject.cpp
index 8c5a38e..b74e378 100644
--- a/src/gis/prj/IGisProject.cpp
+++ b/src/gis/prj/IGisProject.cpp
@@ -21,22 +21,29 @@
 #include "gis/CGisDraw.h"
 #include "gis/CGisListWks.h"
 #include "gis/IGisItem.h"
+#include "gis/fit/CFitProject.h"
+#include "gis/gpx/CGpxProject.h"
 #include "gis/ovl/CGisItemOvlArea.h"
 #include "gis/prj/CDetailsPrj.h"
 #include "gis/prj/IGisProject.h"
+#include "gis/qms/CQmsProject.h"
 #include "gis/rte/CGisItemRte.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
 #include "helpers/CProgressDialog.h"
 #include "helpers/CSelectCopyAction.h"
+#include "helpers/CSettings.h"
 
 #include <QtWidgets>
 
-const QString IGisProject::filedialogAllSupported = "All Supported (*.gpx *.qms)";
-const QString IGisProject::filedialogFilterGPX    = "GPS Exchange Format (*.gpx)";
+
+const QString IGisProject::filedialogAllSupported = "All Supported (*.gpx *.GPX *.qms *.slf *.fit)";
+const QString IGisProject::filedialogFilterGPX    = "GPS Exchange Format (*.gpx *.GPX)";
 const QString IGisProject::filedialogFilterQMS    = "QMapShack Binary (*.qms)";
+const QString IGisProject::filedialogFilterSLF    = "Sigma Log Format (*.slf)";
+const QString IGisProject::filedialogFilterFIT    = "Garmin FIT Format (*.fit)";
 const QString IGisProject::filedialogSaveFilters  = filedialogFilterGPX + ";; " + filedialogFilterQMS;
-const QString IGisProject::filedialogLoadFilters  = filedialogAllSupported +";; " + filedialogFilterGPX + ";; " + filedialogFilterQMS;
+const QString IGisProject::filedialogLoadFilters  = filedialogAllSupported +";; " + filedialogFilterGPX + ";; " + filedialogFilterQMS + ";; " + filedialogFilterSLF + ";;" + filedialogFilterFIT;
 
 
 
@@ -56,7 +63,7 @@ IGisProject::IGisProject(type_e type, const QString &filename, CGisListWks *pare
         for(int i = myIdx - 1; i >= 0; i--)
         {
             IDevice * device = dynamic_cast<IDevice*>(parent->topLevelItem(i));
-            if(device != 0)
+            if(device != nullptr)
             {
                 newIdx = i;
                 continue;
@@ -87,6 +94,10 @@ IGisProject::~IGisProject()
     delete dlgDetails;
 }
 
+QString IGisProject::html2Dev(const QString& str)
+{
+    return isOnDevice() == IDevice::eTypeGarmin ? IGisItem::removeHtml(str) : str;
+}
 
 bool IGisProject::askBeforClose()
 {
@@ -94,12 +105,21 @@ bool IGisProject::askBeforClose()
     if(isChanged())
     {
         CCanvas::setOverrideCursor(Qt::ArrowCursor, "askBeforClose");
-        res = QMessageBox::question(CMainWindow::getBestWidgetForParent(), QObject::tr("Save project?"), QObject::tr("<h3>%1</h3>The project was changed. Save before closing it?").arg(getName()), QMessageBox::Save|QMessageBox::No|QMessageBox::Abort, QMessageBox::No);
+
+        res = QMessageBox::question(CMainWindow::getBestWidgetForParent(), tr("Save project?"), tr("<h3>%1</h3>The project was changed. Save before closing it?").arg(getName()), QMessageBox::Save|QMessageBox::No|QMessageBox::Abort, QMessageBox::No);
         CCanvas::restoreOverrideCursor("askBeforClose");
 
         if(res == QMessageBox::Save)
         {
-            save();
+            // some project cannot be saved
+            if(canSave())
+            {
+                save();
+            }
+            else
+            {
+                saveAs();
+            }
         }
     }
 
@@ -112,7 +132,7 @@ bool IGisProject::isVisible() const
     return checkState(CGisListWks::eColumnDecoration) == Qt::Checked;
 }
 
-void IGisProject::genKey()
+void IGisProject::genKey() const
 {
     if(key.isEmpty())
     {
@@ -145,10 +165,10 @@ QPixmap IGisProject::getIcon() const
     return icon(CGisListWks::eColumnIcon).pixmap(22,22);
 }
 
-bool IGisProject::isOnDevice() const
+qint32 IGisProject::isOnDevice() const
 {
     IDevice * device = dynamic_cast<IDevice*>(parent());
-    return device != 0;
+    return device != nullptr ? device->type() : IDevice::eTypeNone;
 }
 
 bool IGisProject::isChanged() const
@@ -194,8 +214,12 @@ void IGisProject::setLinks(const QList<IGisItem::link_t>& links)
 
 void IGisProject::setSorting(sorting_e s)
 {
+    bool changed = s != sorting;
     sorting = s;
-    setChanged();
+    if(changed)
+    {
+        setChanged();
+    }
 }
 
 void IGisProject::setChanged()
@@ -234,7 +258,7 @@ void IGisProject::updateItems()
     quint32 total   = cntTrkPts * cntWpts;
     quint32 current = 0;
 
-    PROGRESS_SETUP(QObject::tr("%1: Correlate tracks and waypoints.").arg(getName()), 0, total, CMainWindow::getBestWidgetForParent());
+    PROGRESS_SETUP(tr("%1: Correlate tracks and waypoints.").arg(getName()), 0, total, CMainWindow::getBestWidgetForParent());
 
     for(int i = 0; i < childCount(); i++)
     {
@@ -244,8 +268,8 @@ void IGisProject::updateItems()
             trk->findWaypointsCloseBy(progress, current);
             if(progress.wasCanceled())
             {
-                QString msg = QObject::tr("<h3>%1</h3>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project in the future?").arg(getNameEx());
-                int res = QMessageBox::question(&progress, QObject::tr("Canceled correlation..."), msg, QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes);
+                QString msg = tr("<h3>%1</h3>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project in the future?").arg(getNameEx());
+                int res = QMessageBox::question(&progress, tr("Canceled correlation..."), msg, QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes);
                 noCorrelation = res == QMessageBox::Yes;
                 break;
             }
@@ -253,6 +277,79 @@ void IGisProject::updateItems()
     }
 }
 
+bool IGisProject::save()
+{
+    if(!canSave())
+    {
+        qWarning() << "This should never be called!";
+        return false;
+    }
+
+    return saveAs(filename, getFileDialogFilter());
+}
+
+bool IGisProject::saveAs(QString fn, QString filter)
+{
+    SETTINGS;
+
+    if(fn.isEmpty())
+    {
+        QString path = cfg.value("Paths/lastGisPath", QDir::homePath()).toString();
+
+        // guess the correct extension:
+        // by default use the extension provided by the current format,
+        // otherwise use gpx
+        QString ext = getFileExtension();
+        filter = getFileDialogFilter();
+        if(ext.isEmpty() || !canSave())
+        {
+            ext    = "gpx";
+            filter = IGisProject::filedialogFilterGPX;
+        }
+        path += "/" + getName() + "." + ext;
+
+
+        fn = QFileDialog::getSaveFileName(CMainWindow::getBestWidgetForParent(), tr("Save \"%1\" to...").arg(getName()), path, filedialogSaveFilters, &filter);
+
+        if(fn.isEmpty())
+        {
+            return false;
+        }
+    }
+
+    bool res = false;
+    if(filter == getFileDialogFilter())
+    {
+        filename = fn;
+        metadata.name.clear();
+        setupName(QFileInfo(fn).baseName());
+    }
+
+    if(filter == filedialogFilterGPX)
+    {
+        res = CGpxProject::saveAs(fn, *this);
+    }
+    else if(filter == filedialogFilterQMS)
+    {
+        res = CQmsProject::saveAs(fn, *this);
+    }
+    else
+    {
+        return false;
+    }
+
+    if(res && filter == getFileDialogFilter())
+    {
+        markAsSaved();
+    }
+
+    QString path = QFileInfo(fn).absolutePath();
+    cfg.setValue("Paths/lastGisPath", path);
+
+    return res;
+}
+
+
 void IGisProject::setupName(const QString &defaultName)
 {
     if(metadata.name.isEmpty())
@@ -268,7 +365,7 @@ void IGisProject::markAsSaved()
     for(int i = 0; i < childCount(); i++)
     {
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
-        if(item == 0)
+        if(nullptr == item)
         {
             continue;
         }
@@ -323,24 +420,24 @@ QString IGisProject::getInfo() const
 
     if(!filename.isEmpty())
     {
-        str += QObject::tr("<br/>\nFilename: %1").arg(filename);
+        str += tr("<br/>\nFilename: %1").arg(filename);
     }
 
     if(cntItemsByType[IGisItem::eTypeWpt])
     {
-        str += "<br/>\n" + QObject::tr("Waypoints: %1").arg(cntItemsByType[IGisItem::eTypeWpt]);
+        str += "<br/>\n" + tr("Waypoints: %1").arg(cntItemsByType[IGisItem::eTypeWpt]);
     }
     if(cntItemsByType[IGisItem::eTypeTrk])
     {
-        str += "<br/>\n" + QObject::tr("Tracks: %1").arg(cntItemsByType[IGisItem::eTypeTrk]);
+        str += "<br/>\n" + tr("Tracks: %1").arg(cntItemsByType[IGisItem::eTypeTrk]);
     }
     if(cntItemsByType[IGisItem::eTypeRte])
     {
-        str += "<br/>\n" + QObject::tr("Routes: %1").arg(cntItemsByType[IGisItem::eTypeRte]);
+        str += "<br/>\n" + tr("Routes: %1").arg(cntItemsByType[IGisItem::eTypeRte]);
     }
     if(cntItemsByType[IGisItem::eTypeOvl])
     {
-        str += "<br/>\n" + QObject::tr("Areas: %1").arg(cntItemsByType[IGisItem::eTypeOvl]);
+        str += "<br/>\n" + tr("Areas: %1").arg(cntItemsByType[IGisItem::eTypeOvl]);
     }
 
     return str;
@@ -350,8 +447,8 @@ IGisItem * IGisProject::getItemByKey(const IGisItem::key_t& key)
 {
     for(int i = 0; i < childCount(); i++)
     {
-        IGisItem * item = dynamic_cast<IGisItem*>(child(i));
-        if(item == 0)
+        IGisItem *item = dynamic_cast<IGisItem*>(child(i));
+        if(nullptr == item)
         {
             continue;
         }
@@ -361,7 +458,7 @@ IGisItem * IGisProject::getItemByKey(const IGisItem::key_t& key)
             return item;
         }
     }
-    return 0;
+    return nullptr;
 }
 
 void IGisProject::getItemsByPos(const QPointF& pos, QList<IGisItem *> &items)
@@ -374,7 +471,7 @@ void IGisProject::getItemsByPos(const QPointF& pos, QList<IGisItem *> &items)
     for(int i = 0; i < childCount(); i++)
     {
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
-        if(item == 0)
+        if(nullptr == item)
         {
             continue;
         }
@@ -396,7 +493,7 @@ void IGisProject::mouseMove(const QPointF& pos)
     for(int i = 0; i < childCount(); i++)
     {
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
-        if(item == 0)
+        if(nullptr == item)
         {
             continue;
         }
@@ -411,7 +508,7 @@ bool IGisProject::delItemByKey(const IGisItem::key_t& key, QMessageBox::Standard
     for(int i = childCount(); i > 0; i--)
     {
         IGisItem * item = dynamic_cast<IGisItem*>(child(i-1));
-        if(item == 0)
+        if(nullptr == item)
         {
             continue;
         }
@@ -420,8 +517,8 @@ bool IGisProject::delItemByKey(const IGisItem::key_t& key, QMessageBox::Standard
         {
             if(last != QMessageBox::YesToAll)
             {
-                QString msg = QObject::tr("Are you sure you want to delete '%1' from project '%2'?").arg(item->getName()).arg(text(CGisListWks::eColumnName));
-                last = QMessageBox::question(CMainWindow::getBestWidgetForParent(), QObject::tr("Delete..."), msg, QMessageBox::YesToAll|QMessageBox::Cancel|QMessageBox::Ok|QMessageBox::No, QMessageBox::Ok);
+                QString msg = tr("Are you sure you want to delete '%1' from project '%2'?").arg(item->getName()).arg(text(CGisListWks::eColumnName));
+                last = QMessageBox::question(CMainWindow::getBestWidgetForParent(), tr("Delete..."), msg, QMessageBox::YesToAll|QMessageBox::Cancel|QMessageBox::Ok|QMessageBox::No, QMessageBox::Ok);
                 if((last == QMessageBox::No) || (last == QMessageBox::Cancel))
                 {
                     // as each item in the project has to be unique, we can stop searching.
@@ -451,7 +548,7 @@ void IGisProject::editItemByKey(const IGisItem::key_t& key)
     for(int i = childCount(); i > 0; i--)
     {
         IGisItem * item = dynamic_cast<IGisItem*>(child(i-1));
-        if(item == 0)
+        if(nullptr == item)
         {
             continue;
         }
@@ -472,7 +569,7 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
     key.device  = getDeviceKey();
 
     IGisItem * item2 = getItemByKey(key);
-    if(item2 != 0)
+    if(item2 != nullptr)
     {
         int result = lastResult;
         if(lastResult == CSelectCopyAction::eResultNone)
@@ -518,7 +615,7 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
     case IGisItem::eTypeTrk:
     {
         CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(item);
-        if(trk != 0)
+        if(trk != nullptr)
         {
             CGisItemTrk * newTrk = new CGisItemTrk(*trk, this, off, clone);
             // if the track is on a device, remove hidden trackpoints
@@ -533,7 +630,7 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
     case IGisItem::eTypeWpt:
     {
         CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(item);
-        if(wpt != 0)
+        if(wpt != nullptr)
         {
             new CGisItemWpt(*wpt, this, off, clone);
         }
@@ -543,7 +640,7 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
     case IGisItem::eTypeRte:
     {
         CGisItemRte * rte = dynamic_cast<CGisItemRte*>(item);
-        if(rte != 0)
+        if(rte != nullptr)
         {
             new CGisItemRte(*rte, this, off, clone);
         }
@@ -553,7 +650,7 @@ void IGisProject::insertCopyOfItem(IGisItem * item, int off, int& lastResult)
     case IGisItem::eTypeOvl:
     {
         CGisItemOvlArea * area = dynamic_cast<CGisItemOvlArea*>(item);
-        if(area != 0)
+        if(area != nullptr)
         {
             new CGisItemOvlArea(*area, this, off, clone);
         }
@@ -577,7 +674,7 @@ void IGisProject::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
         }
 
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
-        if(item == 0)
+        if(nullptr == item)
         {
             continue;
         }
@@ -596,7 +693,7 @@ void IGisProject::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
     for(int i = 0; i < childCount(); i++)
     {
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
-        if(item == 0)
+        if(nullptr == item)
         {
             continue;
         }
@@ -621,7 +718,7 @@ void IGisProject::drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF
         }
 
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
-        if(item == 0)
+        if(nullptr == item)
         {
             continue;
         }
@@ -705,7 +802,7 @@ void IGisProject::updateItemCounters()
     for(int i = 0; i < childCount(); i++)
     {
         IGisItem * item = dynamic_cast<IGisItem*>(child(i));
-        if(item == 0)
+        if(nullptr == item)
         {
             continue;
         }
@@ -746,3 +843,25 @@ void IGisProject::blockUpdateItems(bool yes)
         updateItems();
     }
 }
+
+void IGisProject::updateDecoration()
+{
+    int N       = childCount();
+    bool saved  = true;
+
+    for(int i = 0; i < N; i++)
+    {
+        IGisItem * item = dynamic_cast<IGisItem*>(child(i));
+        if(nullptr == item)
+        {
+            continue;
+        }
+        if(item->isChanged())
+        {
+            saved = false;
+            break;
+        }
+    }
+
+    setText(CGisListWks::eColumnDecoration, saved ? "" : "*");
+}
diff --git a/src/gis/prj/IGisProject.h b/src/gis/prj/IGisProject.h
index e1ba843..990fa1e 100644
--- a/src/gis/prj/IGisProject.h
+++ b/src/gis/prj/IGisProject.h
@@ -20,12 +20,12 @@
 #define IGISPROJECT_H
 
 #include "gis/IGisItem.h"
+#include <QDebug>
 #include <QMessageBox>
 #include <QPointer>
 #include <QTreeWidgetItem>
 
 class CGisListWks;
-class IGisItem;
 class CGisDraw;
 class QDataStream;
 class CDetailsPrj;
@@ -33,6 +33,7 @@ class IDevice;
 
 class IGisProject : public QTreeWidgetItem
 {
+    Q_DECLARE_TR_FUNCTIONS(IGisProject)
 public:
     enum type_e
     {
@@ -42,6 +43,8 @@ public:
         , eTypeDb
         , eTypeLostFound
         , eTypeTwoNav
+        , eTypeSlf       // the Sigma Log Format
+        , eTypeFit
     };
 
     enum sorting_e
@@ -87,11 +90,13 @@ public:
     static const QString filedialogAllSupported;
     static const QString filedialogFilterGPX;
     static const QString filedialogFilterQMS;
+    static const QString filedialogFilterSLF;
+    static const QString filedialogFilterFIT;
     static const QString filedialogSaveFilters;
     static const QString filedialogLoadFilters;
 
-    IGisProject(type_e type, const QString& filename, CGisListWks * parent);
-    IGisProject(type_e type, const QString &filename, IDevice *parent);
+    IGisProject(type_e type, const QString &filename, CGisListWks *parent);
+    IGisProject(type_e type, const QString &filename, IDevice     *parent);
     virtual ~IGisProject();
 
     /**
@@ -116,13 +121,32 @@ public:
     void edit();
 
     /**
+       @brief Returns true if a project of given format can be saved, false if it cannot be saved (just as .slf atm)
+     */
+    virtual bool canSave() const
+    {
+        return false;
+    }
+
+    virtual const QString getFileDialogFilter() const
+    {
+        return QString();
+    }
+
+    virtual const QString getFileExtension() const
+    {
+        return QString();
+    }
+
+    /**
        @brief Save the project using it's native format.
      */
-    virtual bool save() = 0;
+    virtual bool save();
+
     /**
        @brief Save the project selecting one of the available formats.
      */
-    virtual bool saveAs() = 0;
+    bool saveAs(QString fn = QString(), QString filter = QString());
 
     virtual void setFilename(const QString& fn)
     {
@@ -151,7 +175,7 @@ public:
        @brief Get unique project key.
        @return A MD5 hash string
      */
-    const QString& getKey()
+    const QString& getKey() const
     {
         genKey();
         return key;
@@ -244,7 +268,7 @@ public:
     void getItemsByPos(const QPointF& pos, QList<IGisItem*>& items);
 
 
-    int getItemCountByType(IGisItem::type_e type)
+    int getItemCountByType(IGisItem::type_e type) const
     {
         return cntItemsByType[type];
     }
@@ -270,7 +294,7 @@ public:
         return totalElapsedSecondsMoving;
     }
 
-    bool doCorrelation()
+    bool doCorrelation() const
     {
         return !noCorrelation;
     }
@@ -320,7 +344,7 @@ public:
 
        @return True if project is valid
      */
-    bool  isValid() const
+    bool isValid() const
     {
         return valid;
     }
@@ -333,9 +357,9 @@ public:
 
     /**
        @brief Test if this project is handled by a device
-       @return True if handled by a device
+       @return The device type (IDevice::type_e). IDevice::eTypeNone if the project is not stored on a device.
      */
-    bool isOnDevice() const;
+    qint32 isOnDevice() const;
 
     /**
        @brief Test if project has been changed
@@ -365,7 +389,7 @@ public:
        @param stream the binary data stream
        @return The stream object.
      */
-    virtual QDataStream& operator>>(QDataStream& stream);
+    virtual QDataStream& operator>>(QDataStream& stream) const;
 
     /**
        @brief writeMetadata
@@ -417,12 +441,23 @@ public:
     }
 
 protected:
-    void genKey();
+    void genKey() const;
     virtual void setupName(const QString& defaultName);
     void markAsSaved();
     void readMetadata(const QDomNode& xml, metadata_t& metadata);
     void updateItems();
     void updateItemCounters();
+    void updateDecoration();
+
+    /**
+       @brief Converts a string with HTML tags to a string without HTML depending on the device
+
+       Some devices e.g. Garmin can not handle HTML.
+
+       @param str   a string
+       @return A string with HTML removed depending on the device
+     */
+    QString html2Dev(const QString& str);
 
     // Those are the URIs of the GPX extensions we support
     static const QString gpxx_ns;
@@ -435,29 +470,29 @@ protected:
     static const QString gpx_ns;
     static const QString xsi_ns;
 
+    QPointer<CDetailsPrj> dlgDetails;
+
     type_e type;
-    QString key;
+    mutable QString key;
     QString filename;
-    bool valid = false;
-    bool noUpdate = false;
+    bool valid         = false;
+    bool noUpdate      = false;
     bool noCorrelation = false;
 
     metadata_t metadata;
     QString nameSuffix;
 
-    QPointer<CDetailsPrj> dlgDetails;
-
     sorting_e sorting = eSortNone;
 
     qint32 cntItemsByType[IGisItem::eTypeMax];
 
-    qint32 cntTrkPts = 0;
-    qint32 cntWpts = 0;
+    qint32 cntTrkPts                 = 0;
+    qint32 cntWpts                   = 0;
 
-    qreal totalDistance = 0;
-    qreal totalAscend = 0;
-    qreal totalDescend = 0;
-    quint32 totalElapsedSeconds = 0;
+    qreal totalDistance             = 0;
+    qreal totalAscend               = 0;
+    qreal totalDescend              = 0;
+    quint32 totalElapsedSeconds       = 0;
     quint32 totalElapsedSecondsMoving = 0;
 
     QString hashTrkWpt[2];
diff --git a/src/gis/qms/CQmsProject.cpp b/src/gis/qms/CQmsProject.cpp
index c27342c..7d41705 100644
--- a/src/gis/qms/CQmsProject.cpp
+++ b/src/gis/qms/CQmsProject.cpp
@@ -45,7 +45,7 @@ CQmsProject::CQmsProject(const QString &filename, CGisListWks *parent)
 
     if(!file.open(QIODevice::ReadOnly))
     {
-        QMessageBox::critical(CMainWindow::getBestWidgetForParent(), QObject::tr("Failed to open..."), QObject::tr("Failed to open %1").arg(filename), QMessageBox::Abort);
+        QMessageBox::critical(CMainWindow::getBestWidgetForParent(), tr("Failed to open..."), tr("Failed to open %1").arg(filename), QMessageBox::Abort);
         return;
     }
 
@@ -67,66 +67,6 @@ CQmsProject::~CQmsProject()
 {
 }
 
-
-bool CQmsProject::save()
-{
-    if(filename.isEmpty())
-    {
-        return saveAs();
-    }
-    else
-    {
-        if(saveAs(filename, *this))
-        {
-            markAsSaved();
-        }
-    }
-
-    return true;
-}
-
-bool CQmsProject::saveAs()
-{
-    SETTINGS;
-    QString path = cfg.value("Paths/lastGisPath", QDir::homePath()).toString();
-    path += "/" + getName() + ".qms";
-
-    QString filter = filedialogFilterQMS;
-    QString fn = QFileDialog::getSaveFileName(CMainWindow::getBestWidgetForParent(), QObject::tr("Save GIS data to..."), path, filedialogSaveFilters, &filter);
-
-    if(fn.isEmpty())
-    {
-        return false;
-    }
-
-    bool res = false;
-    if(filter == filedialogFilterGPX)
-    {
-        res = CGpxProject::saveAs(fn, *this);
-    }
-    else if(filter == filedialogFilterQMS)
-    {
-        filename = fn;
-        metadata.name.clear();
-        setupName(QFileInfo(filename).baseName());
-
-        res = saveAs(fn, *this);
-        if(res)
-        {
-            markAsSaved();
-        }
-    }
-    else
-    {
-        return false;
-    }
-
-    path = QFileInfo(fn).absolutePath();
-    cfg.setValue("Paths/lastGisPath", path);
-
-    return res;
-}
-
 bool CQmsProject::saveAs(const QString& fn, IGisProject& project)
 {
     QString _fn_ = fn;
@@ -141,7 +81,7 @@ bool CQmsProject::saveAs(const QString& fn, IGisProject& project)
 
     if(!file.open(QIODevice::WriteOnly))
     {
-        QMessageBox::critical(CMainWindow::getBestWidgetForParent(), QObject::tr("Failed to open..."), QObject::tr("Failed to open %1").arg(_fn_), QMessageBox::Abort);
+        QMessageBox::critical(CMainWindow::getBestWidgetForParent(), tr("Failed to open..."), tr("Failed to open %1").arg(_fn_), QMessageBox::Abort);
         return false;
     }
     QDataStream out(&file);
diff --git a/src/gis/qms/CQmsProject.h b/src/gis/qms/CQmsProject.h
index 9772b2b..c7eceae 100644
--- a/src/gis/qms/CQmsProject.h
+++ b/src/gis/qms/CQmsProject.h
@@ -23,12 +23,25 @@
 
 class CQmsProject : public IGisProject
 {
+    Q_DECLARE_TR_FUNCTIONS(CQmsProject)
 public:
     CQmsProject(const QString& filename, CGisListWks * parent);
     virtual ~CQmsProject();
 
-    bool save();
-    bool saveAs();
+    const QString getFileDialogFilter() const override
+    {
+        return IGisProject::filedialogFilterQMS;
+    }
+
+    const QString getFileExtension() const override
+    {
+        return "qms";
+    }
+
+    bool canSave() const override
+    {
+        return true;
+    }
 
     static bool saveAs(const QString& fn, IGisProject& project);
 };
diff --git a/src/gis/qms/serialization.cpp b/src/gis/qms/serialization.cpp
index d668fde..0a97e2d 100644
--- a/src/gis/qms/serialization.cpp
+++ b/src/gis/qms/serialization.cpp
@@ -23,10 +23,12 @@
 #include "gis/rte/CGisItemRte.h"
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/wpt/CGisItemWpt.h"
+#include "helpers/CLimit.h"
+#include "helpers/CValue.h"
 
 #include <QtWidgets>
 
-#define VER_TRK         quint8(2)
+#define VER_TRK         quint8(5)
 #define VER_WPT         quint8(2)
 #define VER_RTE         quint8(2)
 #define VER_AREA        quint8(1)
@@ -43,8 +45,10 @@
 #define VER_COPYRIGHT   quint8(1)
 #define VER_PERSON      quint8(1)
 #define VER_HIST        quint8(1)
-#define VER_HIST_EVT    quint8(2)
-#define VER_ITEM        quint8(2)
+#define VER_HIST_EVT    quint8(3)
+#define VER_ITEM        quint8(3)
+#define VER_CVALUE      quint8(1)
+#define VER_CLIMIT      quint8(1)
 
 #define MAGIC_SIZE      10
 #define MAGIC_TRK       "QMTrk     "
@@ -129,6 +133,8 @@ QDataStream& operator<<(QDataStream& stream, const IGisItem::history_event_t& e)
     stream << e.comment;
     stream << e.data;
     stream << e.hash;
+    stream << e.who;
+
     return stream;
 }
 
@@ -144,6 +150,10 @@ QDataStream& operator>>(QDataStream& stream, IGisItem::history_event_t& e)
     {
         stream >> e.hash;
     }
+    if(version > 2)
+    {
+        stream >> e.who;
+    }
 
     return stream;
 }
@@ -442,6 +452,39 @@ QDataStream& operator>>(QDataStream& stream, IGisProject::person_t& p)
     return stream;
 }
 
+QDataStream& operator<<(QDataStream& stream, const CValue& v)
+{
+    stream << VER_CVALUE << quint8(v.mode) << v.valUser;
+    return stream;
+}
+
+QDataStream& operator>>(QDataStream& stream, CValue& v)
+{
+    quint8 version, mode;
+    stream >> version >> mode >> v.valUser;
+    // lame trick to update object on mode correctly without
+    // triggering a changed mark
+    v.mode = CValue::mode_e(mode);
+    v.setMode(CValue::mode_e(mode));
+    return stream;
+}
+
+QDataStream& operator<<(QDataStream& stream, const CLimit& l)
+{
+    stream << VER_CLIMIT << quint8(l.mode) << l.source << l.minUser << l.maxUser;
+    return stream;
+}
+
+QDataStream& operator>>(QDataStream& stream, CLimit& l)
+{
+    quint8 version, mode;
+
+    stream >> version >> mode >> l.source >> l.minUser >> l.maxUser;
+    l.mode = CLimit::mode_e(mode);
+
+    return stream;
+}
+
 
 // ---------------- main objects ---------------------------------
 
@@ -463,10 +506,13 @@ QDataStream& CGisItemTrk::operator>>(QDataStream& stream) const
     out << trk.type;
     out << trk.color;
 
-    out << colorSource;
-    out << limitLow;
-    out << limitHigh;
+    out << colorSourceLimit;
+    out << lineScale;
+    out << showArrows;
 
+    out << limitsGraph1;
+    out << limitsGraph2;
+    out << limitsGraph3;
     out << trk.segs;
 
     stream.writeRawData(MAGIC_TRK, MAGIC_SIZE);
@@ -510,13 +556,36 @@ QDataStream& CGisItemTrk::operator<<(QDataStream& stream)
     in >> trk.type;
     in >> trk.color;
 
-    // versions >= 2 contain colorized tracks
-    if(version >= 2)
+    if(version > 1 && version <= 4)
     {
-        QString source;
+        QString colorSource;
         in >> colorSource;
+
+        qreal limitLow, limitHigh;
         in >> limitLow;
         in >> limitHigh;
+
+        colorSourceLimit.source     = colorSource;
+        colorSourceLimit.mode       = CLimit::eModeAuto;
+        colorSourceLimit.minUser    = limitLow;
+        colorSourceLimit.maxUser    = limitHigh;
+    }
+    else if(version > 4)
+    {
+        in >> colorSourceLimit;
+    }
+
+    if(version > 2)
+    {
+        in >> lineScale;
+        in >> showArrows;
+    }
+
+    if(version > 3)
+    {
+        in >> limitsGraph1;
+        in >> limitsGraph2;
+        in >> limitsGraph3;
     }
 
     trk.segs.clear();
@@ -524,11 +593,8 @@ QDataStream& CGisItemTrk::operator<<(QDataStream& stream)
 
     deriveSecondaryData();
     setColor(str2color(trk.color));
-    setText(CGisListWks::eColumnName, trk.name);
+    setText(   CGisListWks::eColumnName, getName());
     setToolTip(CGisListWks::eColumnName, getInfo());
-
-    notifyChange();
-
     return stream;
 }
 
@@ -569,7 +635,7 @@ QDataStream& CGisItemWpt::operator<<(QDataStream& stream)
     }
 
     setIcon();
-    setText(CGisListWks::eColumnName, wpt.name);
+    setText   (CGisListWks::eColumnName, getName());
     setToolTip(CGisListWks::eColumnName, getInfo());
 
     return stream;
@@ -643,7 +709,7 @@ QDataStream& CGisItemRte::operator<<(QDataStream& stream)
 
     setSymbol();
     deriveSecondaryData();
-    setText(CGisListWks::eColumnName, rte.name);
+    setText   (CGisListWks::eColumnName, getName());
     setToolTip(CGisListWks::eColumnName, getInfo());
 
     return stream;
@@ -721,7 +787,7 @@ QDataStream& CGisItemOvlArea::operator<<(QDataStream& stream)
     deriveSecondaryData();
 
     setColor(str2color(area.color));
-    setText(CGisListWks::eColumnName, area.name);
+    setText   (CGisListWks::eColumnName, getName());
     setToolTip(CGisListWks::eColumnName, getInfo());
 
     return stream;
@@ -802,6 +868,7 @@ QDataStream& IGisProject::operator<<(QDataStream& stream)
 
     while(!stream.atEnd())
     {
+        QString lastDatabaseHash;
         IGisItem::history_t history;
         quint8 changed = 0;
         quint8 version, type;
@@ -813,23 +880,29 @@ QDataStream& IGisProject::operator<<(QDataStream& stream)
             stream >> changed;
         }
 
-        IGisItem * item = 0;
+        if(version > 2)
+        {
+            stream >> lastDatabaseHash;
+        }
+
+
+        IGisItem *item = nullptr;
         switch(type)
         {
         case IGisItem::eTypeWpt:
-            item = new CGisItemWpt(history, this);
+            item = new CGisItemWpt(history, lastDatabaseHash, this);
             break;
 
         case IGisItem::eTypeTrk:
-            item = new CGisItemTrk(history, this);
+            item = new CGisItemTrk(history, lastDatabaseHash, this);
             break;
 
         case IGisItem::eTypeRte:
-            item = new CGisItemRte(history, this);
+            item = new CGisItemRte(history, lastDatabaseHash, this);
             break;
 
         case IGisItem::eTypeOvl:
-            item = new CGisItemOvlArea(history, this);
+            item = new CGisItemOvlArea(history, lastDatabaseHash, this);
             break;
 
         default:
@@ -846,7 +919,7 @@ QDataStream& IGisProject::operator<<(QDataStream& stream)
     return stream;
 }
 
-QDataStream& IGisProject::operator>>(QDataStream& stream)
+QDataStream& IGisProject::operator>>(QDataStream& stream) const
 {
     stream.writeRawData(MAGIC_PROJ, MAGIC_SIZE);
     stream << VER_PROJECT;
@@ -867,7 +940,7 @@ QDataStream& IGisProject::operator>>(QDataStream& stream)
     for(int i = 0; i < childCount(); i++)
     {
         CGisItemTrk * item = dynamic_cast<CGisItemTrk*>(child(i));
-        if(item == 0)
+        if(nullptr == item)
         {
             continue;
         }
@@ -875,11 +948,12 @@ QDataStream& IGisProject::operator>>(QDataStream& stream)
         stream << quint8(item->type());
         stream << item->getHistory();
         stream << quint8(item->data(1,Qt::UserRole).toUInt() & IGisItem::eMarkChanged);
+        stream << item->getLastDatabaseHash();
     }
     for(int i = 0; i < childCount(); i++)
     {
         CGisItemRte * item = dynamic_cast<CGisItemRte*>(child(i));
-        if(item == 0)
+        if(nullptr == item)
         {
             continue;
         }
@@ -887,11 +961,12 @@ QDataStream& IGisProject::operator>>(QDataStream& stream)
         stream << quint8(item->type());
         stream << item->getHistory();
         stream << quint8(item->data(1,Qt::UserRole).toUInt() & IGisItem::eMarkChanged);
+        stream << item->getLastDatabaseHash();
     }
     for(int i = 0; i < childCount(); i++)
     {
         CGisItemWpt * item = dynamic_cast<CGisItemWpt*>(child(i));
-        if(item == 0)
+        if(nullptr == item)
         {
             continue;
         }
@@ -899,11 +974,12 @@ QDataStream& IGisProject::operator>>(QDataStream& stream)
         stream << quint8(item->type());
         stream << item->getHistory();
         stream << quint8(item->data(1,Qt::UserRole).toUInt() & IGisItem::eMarkChanged);
+        stream << item->getLastDatabaseHash();
     }
     for(int i = 0; i < childCount(); i++)
     {
         CGisItemOvlArea * item = dynamic_cast<CGisItemOvlArea*>(child(i));
-        if(item == 0)
+        if(nullptr == item)
         {
             continue;
         }
@@ -911,6 +987,7 @@ QDataStream& IGisProject::operator>>(QDataStream& stream)
         stream << quint8(item->type());
         stream << item->getHistory();
         stream << quint8(item->data(1,Qt::UserRole).toUInt() & IGisItem::eMarkChanged);
+        stream << item->getLastDatabaseHash();
     }
 
     return stream;
@@ -961,7 +1038,7 @@ QDataStream& CDBProject::operator<<(QDataStream& stream)
     return stream;
 }
 
-QDataStream& CDBProject::operator>>(QDataStream& stream)
+QDataStream& CDBProject::operator>>(QDataStream& stream) const
 {
     stream.writeRawData(MAGIC_PROJ, MAGIC_SIZE);
     stream << VER_PROJECT;
diff --git a/src/gis/rte/CCreateRouteFromWpt.cpp b/src/gis/rte/CCreateRouteFromWpt.cpp
index e1d084f..cb38a4f 100644
--- a/src/gis/rte/CCreateRouteFromWpt.cpp
+++ b/src/gis/rte/CCreateRouteFromWpt.cpp
@@ -36,8 +36,8 @@ CCreateRouteFromWpt::CCreateRouteFromWpt(const QList<IGisItem::key_t> &keys, QWi
 
     foreach(const IGisItem::key_t& key, keys)
     {
-        CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(CGisWidget::self().getItemByKey(key));
-        if(wpt == 0)
+        CGisItemWpt *wpt = dynamic_cast<CGisItemWpt*>(CGisWidget::self().getItemByKey(key));
+        if(nullptr == wpt)
         {
             continue;
         }
@@ -49,9 +49,9 @@ CCreateRouteFromWpt::CCreateRouteFromWpt(const QList<IGisItem::key_t> &keys, QWi
         item->setData(Qt::UserRole + 0, QPointF(wpt->getPosition()*DEG_TO_RAD));
     }
 
-    connect(listWidget, SIGNAL(itemSelectionChanged()), this, SLOT(slotSelectionChanged()));
-    connect(toolUp, SIGNAL(clicked()), this, SLOT(slotUp()));
-    connect(toolDown, SIGNAL(clicked()), this, SLOT(slotDown()));
+    connect(listWidget, &QListWidget::itemSelectionChanged, this, &CCreateRouteFromWpt::slotSelectionChanged);
+    connect(toolUp,     &QToolButton::clicked,              this, &CCreateRouteFromWpt::slotUp);
+    connect(toolDown,   &QToolButton::clicked,              this, &CCreateRouteFromWpt::slotDown);
 }
 
 CCreateRouteFromWpt::~CCreateRouteFromWpt()
@@ -62,14 +62,14 @@ void CCreateRouteFromWpt::accept()
 {
     QDialog::accept();
 
-    QString name = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), QObject::tr("Edit name..."), QObject::tr("Enter new route name."), QLineEdit::Normal, "");
+    QString name = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), tr("Edit name..."), tr("Enter new route name."), QLineEdit::Normal, "");
     if(name.isEmpty())
     {
         return;
     }
 
-    IGisProject * project = CGisWidget::self().selectProject();
-    if(project == 0)
+    IGisProject *project = CGisWidget::self().selectProject();
+    if(nullptr == project)
     {
         return;
     }
@@ -88,7 +88,7 @@ void CCreateRouteFromWpt::accept()
 void CCreateRouteFromWpt::slotSelectionChanged()
 {
     QListWidgetItem * item = listWidget->currentItem();
-    if(item != 0)
+    if(item != nullptr)
     {
         int row = listWidget->row(item);
         toolUp->setEnabled(row != 0);
diff --git a/src/gis/rte/CCreateRouteFromWpt.h b/src/gis/rte/CCreateRouteFromWpt.h
index ee98541..a4743ac 100644
--- a/src/gis/rte/CCreateRouteFromWpt.h
+++ b/src/gis/rte/CCreateRouteFromWpt.h
@@ -19,7 +19,7 @@
 #ifndef CCREATEROUTEFROMWPT_H
 #define CCREATEROUTEFROMWPT_H
 
-#include <gis/IGisItem.h>
+#include "gis/IGisItem.h"
 
 #include "ui_ICreateRouteFromWpt.h"
 #include <QDialog>
@@ -33,7 +33,7 @@ public:
     virtual ~CCreateRouteFromWpt();
 
 public slots:
-    void accept();
+    void accept() override;
 
 private slots:
     void slotSelectionChanged();
diff --git a/src/gis/rte/CDetailsRte.cpp b/src/gis/rte/CDetailsRte.cpp
index 9c02df6..547440a 100644
--- a/src/gis/rte/CDetailsRte.cpp
+++ b/src/gis/rte/CDetailsRte.cpp
@@ -37,11 +37,11 @@ CDetailsRte::CDetailsRte(CGisItemRte& rte, QWidget *parent)
         toolLock->setDisabled(true);
     }
 
-    connect(toolLock, SIGNAL(toggled(bool)), this, SLOT(slotChangeReadOnlyMode(bool)));
-    connect(textCmtDesc, SIGNAL(anchorClicked(QUrl)), this, SLOT(slotLinkActivated(QUrl)));
-    connect(labelInfo, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
-
-    connect(listHistory, SIGNAL(sigChanged()), this, SLOT(setupGui()));
+    connect(lineName,    &CLineEdit::textEdited,          this, &CDetailsRte::slotNameChanged);
+    connect(lineName,    &CLineEdit::editingFinished,     this, &CDetailsRte::slotNameChangeFinished);
+    connect(toolLock,    &QToolButton::toggled,           this, &CDetailsRte::slotChangeReadOnlyMode);
+    connect(textCmtDesc, &QTextBrowser::anchorClicked,    this, static_cast<void (CDetailsRte::*)(const QUrl&)>(&CDetailsRte::slotLinkActivated));
+    connect(listHistory, &CHistoryListWidget::sigChanged, this, &CDetailsRte::setupGui);
 }
 
 CDetailsRte::~CDetailsRte()
@@ -59,17 +59,12 @@ void CDetailsRte::setupGui()
     bool isReadOnly = rte.isReadOnly();
     setWindowTitle(rte.getName());
 
-    if(rte.isTainted())
-    {
-        labelTainted->show();
-    }
-    else
-    {
-        labelTainted->hide();
-    }
+    labelTainted->setVisible(rte.isTainted());
 
+    lineName->setText(rte.getName());
+    lineName->setReadOnly(isReadOnly);
 
-    labelInfo->setText(rte.getInfo(true));
+    labelInfo->setText(rte.getInfo(false));
 
     textCmtDesc->document()->clear();
     textCmtDesc->append(IGisItem::createText(isReadOnly, rte.getComment(), rte.getDescription(), rte.getLinks()));
@@ -112,19 +107,23 @@ void CDetailsRte::slotChangeReadOnlyMode(bool on)
     setupGui();
 }
 
-void CDetailsRte::slotLinkActivated(const QString& link)
+void CDetailsRte::slotNameChanged(const QString &name)
+{
+    setWindowTitle(name);
+}
+
+void CDetailsRte::slotNameChangeFinished()
 {
-    if(link == "name")
+    lineName->clearFocus();
+
+    const QString& name = lineName->text();
+    slotNameChanged(name);
+
+    if(name != rte.getName())
     {
-        QString name = QInputDialog::getText(this, tr("Edit name..."), tr("Enter new route name."), QLineEdit::Normal, rte.getName());
-        if(name.isEmpty())
-        {
-            return;
-        }
         rte.setName(name);
+        setupGui();
     }
-
-    setupGui();
 }
 
 void CDetailsRte::slotLinkActivated(const QUrl& url)
diff --git a/src/gis/rte/CDetailsRte.h b/src/gis/rte/CDetailsRte.h
index b6f3537..a2813c0 100644
--- a/src/gis/rte/CDetailsRte.h
+++ b/src/gis/rte/CDetailsRte.h
@@ -32,9 +32,10 @@ public:
     virtual ~CDetailsRte();
 
 private slots:
+    void slotNameChanged(const QString &name);
+    void slotNameChangeFinished();
     void slotChangeReadOnlyMode(bool on);
     void slotLinkActivated(const QUrl& url);
-    void slotLinkActivated(const QString& link);
     void setupGui();
 
 private:
diff --git a/src/gis/rte/CGisItemRte.cpp b/src/gis/rte/CGisItemRte.cpp
index e1e9da1..ac4bf21 100644
--- a/src/gis/rte/CGisItemRte.cpp
+++ b/src/gis/rte/CGisItemRte.cpp
@@ -60,7 +60,7 @@ CGisItemRte::CGisItemRte(const CGisItemRte& parentRte, IGisProject * project, in
 
     if(clone)
     {
-        rte.name += QObject::tr("_Clone");
+        rte.name += tr("_Clone");
         key.clear();
         history.events.clear();
     }
@@ -98,12 +98,16 @@ CGisItemRte::CGisItemRte(const QDomNode& xml, IGisProject *parent)
     updateDecoration(eMarkNone, eMarkNone);
 }
 
-CGisItemRte::CGisItemRte(const history_t& hist, IGisProject * project)
+CGisItemRte::CGisItemRte(const history_t& hist, const QString &dbHash, IGisProject * project)
     : IGisItem(project, eTypeRte, project->childCount())
 {
     history = hist;
     loadHistory(hist.histIdxCurrent);
     deriveSecondaryData();
+    if(!dbHash.isEmpty())
+    {
+        lastDatabaseHash = dbHash;
+    }
 }
 
 CGisItemRte::CGisItemRte(quint64 id, QSqlDatabase& db, IGisProject * project)
@@ -124,6 +128,18 @@ CGisItemRte::CGisItemRte(const SGisLine &l, const QString &name, IGisProject *pr
     updateDecoration(eMarkChanged, eMarkNone);
 }
 
+CGisItemRte::CGisItemRte(CFitStream& stream, IGisProject * project)
+    : IGisItem(project, eTypeRte, project->childCount())
+{
+    // --- start read and process data ----
+    readRteFromFit(stream);
+    // --- stop read and process data ----
+
+    setupHistory();
+    deriveSecondaryData();
+    updateDecoration(eMarkNone, eMarkNone);
+}
+
 CGisItemRte::~CGisItemRte()
 {
     // reset user focus if focused on this track
@@ -133,6 +149,18 @@ CGisItemRte::~CGisItemRte()
     }
 }
 
+IGisItem * CGisItemRte::createClone()
+{
+    int idx = -1;
+    IGisProject * project = dynamic_cast<IGisProject*>(parent());
+    if(project)
+    {
+        idx = project->indexOfChild(this);
+    }
+    return new CGisItemRte(*this, project, idx, true);
+}
+
+
 bool CGisItemRte::isCalculated()
 {
     bool yes = true;
@@ -218,71 +246,66 @@ void CGisItemRte::setName(const QString& str)
 {
     setText(CGisListWks::eColumnName, str);
     rte.name = str;
-    changed(QObject::tr("Changed name."), "://icons/48x48/EditText.png");
+    changed(tr("Changed name."), "://icons/48x48/EditText.png");
 }
 
 void CGisItemRte::setComment(const QString& str)
 {
     rte.cmt = str;
-    changed(QObject::tr("Changed comment"), "://icons/48x48/EditText.png");
+    changed(tr("Changed comment"), "://icons/48x48/EditText.png");
 }
 
 void CGisItemRte::setDescription(const QString& str)
 {
     rte.desc = str;
-    changed(QObject::tr("Changed description"), "://icons/48x48/EditText.png");
+    changed(tr("Changed description"), "://icons/48x48/EditText.png");
 }
 
 void CGisItemRte::setLinks(const QList<link_t>& links)
 {
     rte.links = links;
-    changed(QObject::tr("Changed links"), "://icons/48x48/Link.png");
+    changed(tr("Changed links"), "://icons/48x48/Link.png");
 }
 
 
 
-QString CGisItemRte::getInfo(bool allowEdit) const
+QString CGisItemRte::getInfo(bool showName) const
 {
     QString val1, unit1, val2, unit2;
     QString str = "<div>";
 
-    if(allowEdit)
+    if(showName)
     {
-        str += "<b>" + toLink(isReadOnly(), "name", getName(), "") + "</b>";
-    }
-    else
-    {
-        str += "<div style='font-weight: bold;'>" + getName() + "</div>";
+        str += "<b>" + getName() + "</b><br />";
     }
 
-    str += "<br/>\n";
     if(totalDistance != NOFLOAT)
     {
         IUnit::self().meter2distance(totalDistance, val1, unit1);
-        str += QObject::tr("Length: %1 %2").arg(val1).arg(unit1);
+        str += tr("Length: %1 %2").arg(val1).arg(unit1);
     }
     else
     {
-        str += QObject::tr("Length: -");
+        str += tr("Length: -");
     }
 
     str += "<br/>\n";
     if(totalTime != 0)
     {
         IUnit::self().seconds2time(totalTime, val1, unit1);
-        str += QObject::tr("Time: %1 %2").arg(val1).arg(unit1);
+        str += tr("Time: %1 %2").arg(val1).arg(unit1);
     }
     else
     {
-        str += QObject::tr("Time: -");
+        str += tr("Time: -");
     }
 
     if(!lastRoutedWith.isEmpty())
     {
         str += "<br/>\n";
-        str += QObject::tr("Last time routed:<br/>%1").arg(IUnit::datetime2string(lastRoutedTime, false, boundingRect.center()));
+        str += tr("Last time routed:<br/>%1").arg(IUnit::datetime2string(lastRoutedTime, false, boundingRect.center()));
         str += "<br/>\n";
-        str += QObject::tr("with %1").arg(lastRoutedWith);
+        str += tr("with %1").arg(lastRoutedWith);
     }
     return str;
 }
@@ -410,7 +433,7 @@ void CGisItemRte::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
 
     p.setPen(hasUserFocus() ? penForegroundFocus : penForeground);
     p.setBrush(hasUserFocus() ? penForegroundFocus.color() : penForeground.color());
-    CDraw::arrows(line, extViewport, p, 10, 80);
+    CDraw::arrows(line, extViewport, p, 10, 80, 1.0);
     p.drawPolyline(line);
 
     p.setPen(Qt::NoPen);
@@ -453,9 +476,9 @@ void CGisItemRte::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
 
         QString str, val, unit;
         IUnit::self().seconds2time(mouseMoveFocus->time, val, unit);
-        str += QObject::tr("Time: %1 %2").arg(val).arg(unit) + " ";
+        str += tr("Time: %1 %2").arg(val).arg(unit) + " ";
         IUnit::self().meter2distance(mouseMoveFocus->distance, val, unit);
-        str += QObject::tr("Distance: %1 %2").arg(val).arg(unit);
+        str += tr("Distance: %1 %2").arg(val).arg(unit);
         str += "\n" + mouseMoveFocus->instruction;
 
         // calculate bounding box of text
@@ -564,12 +587,12 @@ void CGisItemRte::readRouteDataFromGisLine(const SGisLine &l)
 void CGisItemRte::setDataFromPolyline(const SGisLine &l)
 {
     QMutexLocker lock(&mutexItems);
-    mouseMoveFocus = 0;
+    mouseMoveFocus = nullptr;
 
     readRouteDataFromGisLine(l);
 
     flags |= eFlagTainted;
-    changed(QObject::tr("Changed route points."), "://icons/48x48/LineMove.png");
+    changed(tr("Changed route points."), "://icons/48x48/LineMove.png");
 }
 
 void CGisItemRte::getPolylineFromData(SGisLine& l)
@@ -593,7 +616,7 @@ void CGisItemRte::getPolylineFromData(SGisLine& l)
 void CGisItemRte::calc()
 {
     QMutexLocker lock(&mutexItems);
-    mouseMoveFocus = 0;
+    mouseMoveFocus = nullptr;
     for(int i = 0; i < rte.pts.size(); i++)
     {
         rte.pts[i].subpts.clear();
@@ -611,7 +634,7 @@ void CGisItemRte::reset()
         pt.fakeSubpt = subpt_t();
     }
 
-    mouseMoveFocus  = 0;
+    mouseMoveFocus  = nullptr;
     totalDistance   = NOFLOAT;
     totalTime       = 0;
     lastRoutedTime  = QDateTime();
@@ -631,7 +654,7 @@ QPointF CGisItemRte::setMouseFocusByPoint(const QPoint& pt, focusmode_e fmode, c
 {
     QMutexLocker lock(&mutexItems);
 
-    const subpt_t * newPointOfFocus = 0;
+    const subpt_t * newPointOfFocus = nullptr;
     quint32 idx = 0;
 
     if(pt != NOPOINT && GPS_Math_DistPointPolyline(line, pt) < MIN_DIST_FOCUS)
@@ -655,7 +678,7 @@ QPointF CGisItemRte::setMouseFocusByPoint(const QPoint& pt, focusmode_e fmode, c
 
     if(newPointOfFocus && (newPointOfFocus->type == subpt_t::eTypeNone))
     {
-        newPointOfFocus = 0;
+        newPointOfFocus = nullptr;
     }
 
 
@@ -685,7 +708,7 @@ const CGisItemRte::subpt_t * CGisItemRte::getSubPtByIndex(quint32 idx)
         cnt++;
     }
 
-    return 0;
+    return nullptr;
 }
 
 void CGisItemRte::setResult(Routino_Output * route, const QString& options)
@@ -693,7 +716,7 @@ void CGisItemRte::setResult(Routino_Output * route, const QString& options)
     QMutexLocker lock(&mutexItems);
 
     qint32 idxRtept = -1;
-    rtept_t * rtept = 0;
+    rtept_t * rtept = nullptr;
 
     Routino_Output * next = route;
     while(next)
@@ -713,7 +736,7 @@ void CGisItemRte::setResult(Routino_Output * route, const QString& options)
             rtept->fakeSubpt.type      = subpt_t::eTypeWpt;
             rtept->fakeSubpt.instruction = QString(next->desc1) + ".\n" + QString(next->desc2) + ".";
         }
-        else if(rtept != 0)
+        else if(rtept != nullptr)
         {
             rtept->subpts << subpt_t();
             subpt_t& subpt  = rtept->subpts.last();
diff --git a/src/gis/rte/CGisItemRte.h b/src/gis/rte/CGisItemRte.h
index 941efa2..2d6c615 100644
--- a/src/gis/rte/CGisItemRte.h
+++ b/src/gis/rte/CGisItemRte.h
@@ -23,6 +23,7 @@
 #include "gis/IGisLine.h"
 #include <routino.h>
 
+#include "gis/fit/CFitStream.h"
 #include <QPen>
 #include <QPointer>
 
@@ -33,6 +34,7 @@ class CScrOptRte;
 
 class CGisItemRte : public IGisItem, public IGisLine
 {
+    Q_DECLARE_TR_FUNCTIONS(CGisItemRte)
 public:
 
     enum focusmode_e
@@ -95,29 +97,32 @@ public:
 
     CGisItemRte(const QDomNode &xml, IGisProject *parent);
     CGisItemRte(const CGisItemRte& parentRte, IGisProject *project, int idx, bool clone);
-    CGisItemRte(const history_t& hist, IGisProject * project);
+    CGisItemRte(const history_t& hist, const QString& dbHash, IGisProject * project);
     CGisItemRte(quint64 id, QSqlDatabase& db, IGisProject * project);
     CGisItemRte(const CQlgtRoute& rte1);
     CGisItemRte(const SGisLine& l, const QString &name, IGisProject *project, int idx);
+    CGisItemRte(CFitStream& stream, IGisProject * project);
     virtual ~CGisItemRte();
 
-    QDataStream& operator<<(QDataStream& stream);
-    QDataStream& operator>>(QDataStream& stream) const;
+    IGisItem * createClone() override;
 
-    const QString& getName() const
+    QDataStream& operator<<(QDataStream& stream) override;
+    QDataStream& operator>>(QDataStream& stream) const override;
+
+    const QString& getName() const override
     {
         return rte.name.isEmpty() ? noName : rte.name;
     }
 
-    QString getInfo(bool allowEdit = false) const;
-    IScrOpt * getScreenOptions(const QPoint &origin, IMouse * mouse);
-    QPointF getPointCloseBy(const QPoint& screenPos);
-    void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis);
-    void drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis);
-    void drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis);
-    void drawHighlight(QPainter& p);
-    void save(QDomNode& gpx);
-    bool isCloseTo(const QPointF& pos);
+    QString getInfo(bool showName = true) const override;
+    IScrOpt * getScreenOptions(const QPoint &origin, IMouse * mouse) override;
+    QPointF getPointCloseBy(const QPoint& screenPos) override;
+    void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis) override;
+    void drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis) override;
+    void drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis) override;
+    void drawHighlight(QPainter& p) override;
+    void save(QDomNode& gpx) override;
+    bool isCloseTo(const QPointF& pos) override;
     /**
        @brief Switch user focus on and off.
 
@@ -125,7 +130,7 @@ public:
 
        @param yes   set true to gain focus.
      */
-    void gainUserFocus(bool yes);
+    void gainUserFocus(bool yes) override;
     /**
        @brief Make sure the route has lost focus.
 
@@ -138,7 +143,7 @@ public:
 
        @return True if the route has user focus
      */
-    bool hasUserFocus() const
+    bool hasUserFocus() const override
     {
         return key == keyUserFocus;
     }
@@ -153,19 +158,19 @@ public:
         return keyUserFocus;
     }
 
-    void setDataFromPolyline(const SGisLine& l);
+    void setDataFromPolyline(const SGisLine& l) override;
 
-    void getPolylineFromData(SGisLine &l);
+    void getPolylineFromData(SGisLine &l) override;
 
-    const QString& getComment() const
+    const QString& getComment() const override
     {
         return rte.cmt;
     }
-    const QString& getDescription() const
+    const QString& getDescription() const override
     {
         return rte.desc;
     }
-    const QList<link_t>& getLinks() const
+    const QList<link_t>& getLinks() const override
     {
         return rte.links;
     }
@@ -176,15 +181,15 @@ public:
     }
 
     void setName(const QString& str);
-    void setComment(const QString& str);
-    void setDescription(const QString& str);
-    void setLinks(const QList<link_t>& links);
+    void setComment(const QString& str)       override;
+    void setDescription(const QString& str)   override;
+    void setLinks(const QList<link_t>& links) override;
 
     void calc();
 
     void reset();
 
-    void edit();
+    void edit() override;
 
     QPointF setMouseFocusByPoint(const QPoint& pt, focusmode_e fmode, const QString &owner);
 
@@ -195,8 +200,9 @@ public:
 
 private:
     void deriveSecondaryData();
-    void setSymbol();
+    void setSymbol() override;
     void readRte(const QDomNode& xml, rte_t& rte);
+    void readRteFromFit(CFitStream &stream);
     void readRouteDataFromGisLine(const SGisLine &l);
     const subpt_t * getSubPtByIndex(quint32 idx);
 
@@ -215,7 +221,7 @@ private:
     qreal totalDistance = NOFLOAT;
     quint32 totalTime = 0;
 
-    const subpt_t * mouseMoveFocus = 0;
+    const subpt_t * mouseMoveFocus = nullptr;
 
     QPointer<CScrOptRte>  scrOpt;
 };
diff --git a/src/gis/rte/CScrOptRte.cpp b/src/gis/rte/CScrOptRte.cpp
index 0ba5662..ec1b170 100644
--- a/src/gis/rte/CScrOptRte.cpp
+++ b/src/gis/rte/CScrOptRte.cpp
@@ -50,21 +50,21 @@ CScrOptRte::CScrOptRte(CGisItemRte *rte, const QPoint& point, IMouse *parent)
     move(anchor.toPoint() + QPoint(-width()/2,SCR_OPT_OFFSET));
     show();
 
-    connect(toolEditDetails, SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolDelete, SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolCopy, SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolCalc, SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolReset, SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolEdit, SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolInstruction, SIGNAL(toggled(bool)), this, SLOT(hide()));
-
-    connect(toolEditDetails, SIGNAL(clicked()), this, SLOT(slotEditDetails()));
-    connect(toolDelete, SIGNAL(clicked()), this, SLOT(slotDelete()));
-    connect(toolCopy, SIGNAL(clicked()), this, SLOT(slotCopy()));
-    connect(toolCalc, SIGNAL(clicked()), this, SLOT(slotCalc()));
-    connect(toolReset, SIGNAL(clicked()), this, SLOT(slotReset()));
-    connect(toolEdit, SIGNAL(clicked()), this, SLOT(slotEdit()));
-    connect(toolInstruction, SIGNAL(toggled(bool)), this, SLOT(slotInstruction(bool)));
+    connect(toolEditDetails, &QToolButton::clicked, this, &CScrOptRte::hide);
+    connect(toolDelete,      &QToolButton::clicked, this, &CScrOptRte::hide);
+    connect(toolCopy,        &QToolButton::clicked, this, &CScrOptRte::hide);
+    connect(toolCalc,        &QToolButton::clicked, this, &CScrOptRte::hide);
+    connect(toolReset,       &QToolButton::clicked, this, &CScrOptRte::hide);
+    connect(toolEdit,        &QToolButton::clicked, this, &CScrOptRte::hide);
+    connect(toolInstruction, &QToolButton::toggled, this, &CScrOptRte::hide);
+
+    connect(toolEditDetails, &QToolButton::clicked, this, &CScrOptRte::slotEditDetails);
+    connect(toolDelete,      &QToolButton::clicked, this, &CScrOptRte::slotDelete);
+    connect(toolCopy,        &QToolButton::clicked, this, &CScrOptRte::slotCopy);
+    connect(toolCalc,        &QToolButton::clicked, this, &CScrOptRte::slotCalc);
+    connect(toolReset,       &QToolButton::clicked, this, &CScrOptRte::slotReset);
+    connect(toolEdit,        &QToolButton::clicked, this, &CScrOptRte::slotEdit);
+    connect(toolInstruction, &QToolButton::toggled, this, &CScrOptRte::slotInstruction);
 }
 
 CScrOptRte::~CScrOptRte()
@@ -115,8 +115,8 @@ void CScrOptRte::slotInstruction(bool on)
 
 void CScrOptRte::draw(QPainter& p)
 {
-    IGisItem * item = CGisWidget::self().getItemByKey(key);
-    if(item == 0)
+    IGisItem *item = CGisWidget::self().getItemByKey(key);
+    if(nullptr == item)
     {
         QWidget::deleteLater();
         return;
diff --git a/src/gis/rte/CScrOptRte.h b/src/gis/rte/CScrOptRte.h
index 1d02464..2adb1f4 100644
--- a/src/gis/rte/CScrOptRte.h
+++ b/src/gis/rte/CScrOptRte.h
@@ -35,7 +35,7 @@ public:
     CScrOptRte(CGisItemRte * rte, const QPoint &point, IMouse *parent);
     virtual ~CScrOptRte();
 
-    void draw(QPainter& p);
+    void draw(QPainter& p) override;
 
 private slots:
     void slotEditDetails();
diff --git a/src/gis/rte/IDetailsRte.ui b/src/gis/rte/IDetailsRte.ui
index f60eddf..86821ce 100644
--- a/src/gis/rte/IDetailsRte.ui
+++ b/src/gis/rte/IDetailsRte.ui
@@ -52,111 +52,164 @@
         <number>3</number>
        </property>
        <item>
-        <layout class="QHBoxLayout" name="horizontalLayout_2">
+        <layout class="QHBoxLayout" name="horizontalLayout">
          <item>
-          <widget class="QLabel" name="labelInfo">
+          <widget class="CLineEdit" name="lineName">
+           <property name="palette">
+            <palette>
+             <active>
+              <colorrole role="Base">
+               <brush brushstyle="SolidPattern">
+                <color alpha="0">
+                 <red>0</red>
+                 <green>0</green>
+                 <blue>0</blue>
+                </color>
+               </brush>
+              </colorrole>
+              <colorrole role="Window">
+               <brush brushstyle="SolidPattern">
+                <color alpha="0">
+                 <red>0</red>
+                 <green>0</green>
+                 <blue>0</blue>
+                </color>
+               </brush>
+              </colorrole>
+             </active>
+             <inactive>
+              <colorrole role="Base">
+               <brush brushstyle="SolidPattern">
+                <color alpha="0">
+                 <red>0</red>
+                 <green>0</green>
+                 <blue>0</blue>
+                </color>
+               </brush>
+              </colorrole>
+              <colorrole role="Window">
+               <brush brushstyle="SolidPattern">
+                <color alpha="0">
+                 <red>0</red>
+                 <green>0</green>
+                 <blue>0</blue>
+                </color>
+               </brush>
+              </colorrole>
+             </inactive>
+             <disabled>
+              <colorrole role="Base">
+               <brush brushstyle="SolidPattern">
+                <color alpha="0">
+                 <red>0</red>
+                 <green>0</green>
+                 <blue>0</blue>
+                </color>
+               </brush>
+              </colorrole>
+              <colorrole role="Window">
+               <brush brushstyle="SolidPattern">
+                <color alpha="0">
+                 <red>0</red>
+                 <green>0</green>
+                 <blue>0</blue>
+                </color>
+               </brush>
+              </colorrole>
+             </disabled>
+            </palette>
+           </property>
+           <property name="font">
+            <font>
+             <weight>75</weight>
+             <bold>true</bold>
+            </font>
+           </property>
+           <property name="frame">
+            <bool>false</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QLabel" name="labelTainted">
            <property name="sizePolicy">
-            <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+            <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
              <horstretch>0</horstretch>
              <verstretch>0</verstretch>
             </sizepolicy>
            </property>
+           <property name="minimumSize">
+            <size>
+             <width>0</width>
+             <height>0</height>
+            </size>
+           </property>
+           <property name="maximumSize">
+            <size>
+             <width>25</width>
+             <height>25</height>
+            </size>
+           </property>
+           <property name="toolTip">
+            <string><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></string>
+           </property>
            <property name="text">
-            <string>-</string>
+            <string/>
+           </property>
+           <property name="pixmap">
+            <pixmap resource="../../resources.qrc">:/icons/32x32/Tainted.png</pixmap>
            </property>
-           <property name="alignment">
-            <set>Qt::AlignJustify|Qt::AlignTop</set>
+           <property name="scaledContents">
+            <bool>true</bool>
            </property>
           </widget>
          </item>
          <item>
-          <layout class="QVBoxLayout" name="verticalLayout_2">
-           <item>
-            <layout class="QHBoxLayout" name="horizontalLayout">
-             <item>
-              <widget class="QLabel" name="labelTainted">
-               <property name="sizePolicy">
-                <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
-                 <horstretch>0</horstretch>
-                 <verstretch>0</verstretch>
-                </sizepolicy>
-               </property>
-               <property name="minimumSize">
-                <size>
-                 <width>0</width>
-                 <height>0</height>
-                </size>
-               </property>
-               <property name="maximumSize">
-                <size>
-                 <width>25</width>
-                 <height>25</height>
-                </size>
-               </property>
-               <property name="toolTip">
-                <string><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></string>
-               </property>
-               <property name="text">
-                <string/>
-               </property>
-               <property name="pixmap">
-                <pixmap resource="../../resources.qrc">:/icons/32x32/Tainted.png</pixmap>
-               </property>
-               <property name="scaledContents">
-                <bool>true</bool>
-               </property>
-              </widget>
-             </item>
-             <item>
-              <widget class="QToolButton" name="toolLock">
-               <property name="toolTip">
-                <string>Toggle read only mode. You have to open the lock to edit the item.</string>
-               </property>
-               <property name="text">
-                <string>...</string>
-               </property>
-               <property name="icon">
-                <iconset resource="../../resources.qrc">
-                 <normaloff>:/icons/32x32/UnLock.png</normaloff>
-                 <normalon>:/icons/32x32/Lock.png</normalon>:/icons/32x32/UnLock.png</iconset>
-               </property>
-               <property name="iconSize">
-                <size>
-                 <width>22</width>
-                 <height>22</height>
-                </size>
-               </property>
-               <property name="checkable">
-                <bool>true</bool>
-               </property>
-               <property name="autoRaise">
-                <bool>true</bool>
-               </property>
-              </widget>
-             </item>
-            </layout>
-           </item>
-           <item>
-            <spacer name="verticalSpacer">
-             <property name="orientation">
-              <enum>Qt::Vertical</enum>
-             </property>
-             <property name="sizeType">
-              <enum>QSizePolicy::Minimum</enum>
-             </property>
-             <property name="sizeHint" stdset="0">
-              <size>
-               <width>20</width>
-               <height>40</height>
-              </size>
-             </property>
-            </spacer>
-           </item>
-          </layout>
+          <widget class="QToolButton" name="toolLock">
+           <property name="toolTip">
+            <string>Toggle read only mode. You have to open the lock to edit the item.</string>
+           </property>
+           <property name="text">
+            <string>...</string>
+           </property>
+           <property name="icon">
+            <iconset resource="../../resources.qrc">
+             <normaloff>:/icons/32x32/UnLock.png</normaloff>
+             <normalon>:/icons/32x32/Lock.png</normalon>:/icons/32x32/UnLock.png</iconset>
+           </property>
+           <property name="iconSize">
+            <size>
+             <width>22</width>
+             <height>22</height>
+            </size>
+           </property>
+           <property name="checkable">
+            <bool>true</bool>
+           </property>
+           <property name="autoRaise">
+            <bool>true</bool>
+           </property>
+          </widget>
          </item>
         </layout>
        </item>
        <item>
+        <widget class="QLabel" name="labelInfo">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="text">
+          <string>-</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignJustify|Qt::AlignTop</set>
+         </property>
+        </widget>
+       </item>
+       <item>
         <widget class="QTextBrowser" name="textCmtDesc">
          <property name="sizePolicy">
           <sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
@@ -206,6 +259,11 @@
    <extends>QListWidget</extends>
    <header>widgets/CHistoryListWidget.h</header>
   </customwidget>
+  <customwidget>
+   <class>CLineEdit</class>
+   <extends>QLineEdit</extends>
+   <header>widgets/CLineEdit.h</header>
+  </customwidget>
  </customwidgets>
  <resources>
   <include location="../../resources.qrc"/>
diff --git a/src/gis/rte/router/CRouterMapQuest.cpp b/src/gis/rte/router/CRouterMapQuest.cpp
index c6cfe8a..b1e8760 100644
--- a/src/gis/rte/router/CRouterMapQuest.cpp
+++ b/src/gis/rte/router/CRouterMapQuest.cpp
@@ -67,12 +67,12 @@ CRouterMapQuest::CRouterMapQuest(QWidget *parent)
     cfg.endGroup();
 
     networkAccessManager = new QNetworkAccessManager(this);
-    connect(networkAccessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(slotRequestFinished(QNetworkReply*)));
+    connect(networkAccessManager, &QNetworkAccessManager::finished, this, &CRouterMapQuest::slotRequestFinished);
 
     timerCloseStatusMsg = new QTimer(this);
     timerCloseStatusMsg->setSingleShot(true);
     timerCloseStatusMsg->setInterval(5000);
-    connect(timerCloseStatusMsg, SIGNAL(timeout()), this, SLOT(slotCloseStatusMsg()));
+    connect(timerCloseStatusMsg, &QTimer::timeout, this, &CRouterMapQuest::slotCloseStatusMsg);
 }
 
 CRouterMapQuest::~CRouterMapQuest()
@@ -187,8 +187,8 @@ void CRouterMapQuest::addMapQuestLocations(QDomDocument& xml, QDomElement& locat
 
 void CRouterMapQuest::calcRoute(const IGisItem::key_t& key)
 {
-    CGisItemRte * rte = dynamic_cast<CGisItemRte*>(CGisWidget::self().getItemByKey(key));
-    if(rte == 0)
+    CGisItemRte *rte = dynamic_cast<CGisItemRte*>(CGisWidget::self().getItemByKey(key));
+    if(nullptr == rte)
     {
         return;
     }
@@ -358,7 +358,7 @@ void CRouterMapQuest::slotRequestFinished(QNetworkReply* reply)
     time = QDateTime::currentDateTimeUtc().toMSecsSinceEpoch() - time;
 
     CGisItemRte * rte = dynamic_cast<CGisItemRte*>(CGisWidget::self().getItemByKey(key));
-    if(rte != 0)
+    if(rte != nullptr)
     {
         rte->setResult(xml, reply->property("options").toString() + tr("<br/>Calculation time: %1s").arg(time/1000.0, 0,'f',2));
     }
diff --git a/src/gis/rte/router/CRouterMapQuest.h b/src/gis/rte/router/CRouterMapQuest.h
index d9afb3e..13deac9 100644
--- a/src/gis/rte/router/CRouterMapQuest.h
+++ b/src/gis/rte/router/CRouterMapQuest.h
@@ -34,13 +34,13 @@ public:
     CRouterMapQuest(QWidget * parent);
     virtual ~CRouterMapQuest();
 
-    void calcRoute(const IGisItem::key_t& key);
-    int calcRoute(const QPointF& p1, const QPointF& p2, QPolygonF& coords)
+    void calcRoute(const IGisItem::key_t& key) override;
+    int calcRoute(const QPointF& p1, const QPointF& p2, QPolygonF& coords) override
     {
         return -1;
     }
 
-    QString getOptions();
+    QString getOptions() override;
 
 private slots:
     void slotRequestFinished(QNetworkReply* reply);
diff --git a/src/gis/rte/router/CRouterRoutino.cpp b/src/gis/rte/router/CRouterRoutino.cpp
index 77b2d3d..883b027 100644
--- a/src/gis/rte/router/CRouterRoutino.cpp
+++ b/src/gis/rte/router/CRouterRoutino.cpp
@@ -75,24 +75,24 @@ CRouterRoutino::CRouterRoutino(QWidget *parent)
         return;
     }
 
-    comboProfile->addItem(tr("Foot"), "foot");
-    comboProfile->addItem(tr("Horse"), "horse");
+    comboProfile->addItem(tr("Foot"),       "foot");
+    comboProfile->addItem(tr("Horse"),      "horse");
     comboProfile->addItem(tr("Wheelchair"), "wheelchair");
-    comboProfile->addItem(tr("Bicycle"), "bicycle");
-    comboProfile->addItem(tr("Moped"), "moped");
+    comboProfile->addItem(tr("Bicycle"),    "bicycle");
+    comboProfile->addItem(tr("Moped"),      "moped");
     comboProfile->addItem(tr("Motorcycle"), "motorcycle");
-    comboProfile->addItem(tr("Motorcar"), "motorcar");
-    comboProfile->addItem(tr("Goods"), "goods");
+    comboProfile->addItem(tr("Motorcar"),   "motorcar");
+    comboProfile->addItem(tr("Goods"),      "goods");
 
-    comboLanguage->addItem(tr("English"), "en");
-    comboLanguage->addItem(tr("German"), "de");
-    comboLanguage->addItem(tr("French"), "fr");
+    comboLanguage->addItem(tr("English"),   "en");
+    comboLanguage->addItem(tr("German"),    "de");
+    comboLanguage->addItem(tr("French"),    "fr");
     comboLanguage->addItem(tr("Hungarian"), "hu");
-    comboLanguage->addItem(tr("Dutch"), "nl");
-    comboLanguage->addItem(tr("Russian"), "ru");
-    comboLanguage->addItem(tr("Polish"), "pl");
+    comboLanguage->addItem(tr("Dutch"),     "nl");
+    comboLanguage->addItem(tr("Russian"),   "ru");
+    comboLanguage->addItem(tr("Polish"),    "pl");
 
-    connect(toolSetupPaths, SIGNAL(clicked()), this, SLOT(slotSetupPaths()));
+    connect(toolSetupPaths, &QToolButton::clicked, this, &CRouterRoutino::slotSetupPaths);
 
     SETTINGS;
     dbPaths = cfg.value("Route/routino/paths", dbPaths).toStringList();
@@ -158,7 +158,7 @@ QString CRouterRoutino::xlateRoutinoError(int err)
         return tr("The requested translation language does not exist in the loaded XML file.");
 
     case ROUTINO_ERROR_NO_NEARBY_HIGHWAY:
-        return tr("There is no highway near the coordinates to place a waypoint.");
+        return tr("In the routing database there is no highway near the coordinates to place a waypoint.");
 
     case ROUTINO_ERROR_PROFILE_DATABASE_ERR:
         return tr("The profile and database do not work together.");
@@ -231,15 +231,17 @@ void CRouterRoutino::buildDatabaseList()
                 continue;
             }
 
-#ifdef OS_WIN
+#ifdef Q_OS_WIN
             QFileInfo fi(dir.absoluteFilePath(filename));
             if(fi.size() > 0x0FFFFFFFFLL)
             {
                 QMessageBox::warning(this, tr("Warning..."), tr("%1: Due to limitations in the Windows POSIX API Routino can't handle files larger than 4GB.").arg(prefix), QMessageBox::Ok);
                 continue;
             }
-#endif
+            Routino_Database * data = Routino_LoadDatabase(dir.absolutePath().toLocal8Bit(), prefix.toLocal8Bit());
+#else
             Routino_Database * data = Routino_LoadDatabase(dir.absolutePath().toUtf8(), prefix.toUtf8());
+#endif
             if(data)
             {
                 comboDatabase->addItem(prefix.replace("_", " "), quint64(data));
@@ -288,22 +290,22 @@ void CRouterRoutino::calcRoute(const IGisItem::key_t& key)
         QTime time;
         time.start();
 
-        CGisItemRte * rte       = dynamic_cast<CGisItemRte*>(CGisWidget::self().getItemByKey(key));
-        if(rte == 0)
+        CGisItemRte * rte = dynamic_cast<CGisItemRte*>(CGisWidget::self().getItemByKey(key));
+        if(nullptr == rte)
         {
             throw QString();
         }
 
         Routino_Database * data = (Routino_Database*)comboDatabase->currentData(Qt::UserRole).toULongLong();
-        if(data == 0)
+        if(nullptr == data)
         {
             throw QString();
         }
 
         rte->reset();
 
-        QString strProfile      = comboProfile->currentData(Qt::UserRole).toString();
-        QString strLanguage     = comboLanguage->currentData(Qt::UserRole).toString();
+        QString strProfile  = comboProfile->currentData(Qt::UserRole).toString();
+        QString strLanguage = comboLanguage->currentData(Qt::UserRole).toString();
 
         Routino_Profile *profile         = Routino_GetProfile(strProfile.toUtf8());
         Routino_Translation *translation = Routino_GetTranslation(strLanguage.toUtf8());
@@ -332,7 +334,7 @@ void CRouterRoutino::calcRoute(const IGisItem::key_t& key)
         foreach(const IGisLine::point_t &pt, line)
         {
             waypoints[idx] = Routino_FindWaypoint(data, profile, pt.coord.y()*RAD_TO_DEG, pt.coord.x()*RAD_TO_DEG);
-            if(waypoints[idx] == NULL)
+            if(waypoints[idx] == nullptr)
             {
                 throw xlateRoutinoError(Routino_errno);
             }
@@ -345,7 +347,7 @@ void CRouterRoutino::calcRoute(const IGisItem::key_t& key)
 
         delete progress;
 
-        if(route != NULL)
+        if(nullptr != route)
         {
             rte->setResult(route, getOptions() + tr("<br/>Calculation time: %1s").arg(time.elapsed()/1000.0, 0,'f',2));
             Routino_DeleteRoute(route);
@@ -386,7 +388,7 @@ int CRouterRoutino::calcRoute(const QPointF& p1, const QPointF& p2, QPolygonF& c
     try
     {
         Routino_Database * data = (Routino_Database*)comboDatabase->currentData(Qt::UserRole).toULongLong();
-        if(data == 0)
+        if(nullptr == data)
         {
             throw QString();
         }
diff --git a/src/gis/rte/router/CRouterRoutino.h b/src/gis/rte/router/CRouterRoutino.h
index d4c4cee..793724b 100644
--- a/src/gis/rte/router/CRouterRoutino.h
+++ b/src/gis/rte/router/CRouterRoutino.h
@@ -34,12 +34,12 @@ public:
     CRouterRoutino(QWidget * parent);
     virtual ~CRouterRoutino();
 
-    void calcRoute(const IGisItem::key_t& key);
-    int calcRoute(const QPointF& p1, const QPointF& p2, QPolygonF& coords);
+    void calcRoute(const IGisItem::key_t& key) override;
+    int calcRoute(const QPointF& p1, const QPointF& p2, QPolygonF& coords) override;
 
-    bool hasFastRouting();
+    bool hasFastRouting() override;
 
-    QString getOptions();
+    QString getOptions() override;
 
     static QPointer<CProgressDialog> progress;
 
diff --git a/src/gis/rte/router/CRouterRoutinoPathSetup.cpp b/src/gis/rte/router/CRouterRoutinoPathSetup.cpp
index a1340d6..817cd82 100644
--- a/src/gis/rte/router/CRouterRoutinoPathSetup.cpp
+++ b/src/gis/rte/router/CRouterRoutinoPathSetup.cpp
@@ -27,9 +27,9 @@ CRouterRoutinoPathSetup::CRouterRoutinoPathSetup(QStringList &paths)
 {
     setupUi(this);
 
-    connect(toolAdd, SIGNAL(clicked()), this, SLOT(slotAddPath()));
-    connect(toolDelete, SIGNAL(clicked()), this, SLOT(slotDelPath()));
-    connect(listWidget, SIGNAL(itemSelectionChanged()), this, SLOT(slotItemSelectionChanged()));
+    connect(toolAdd,    &QToolButton::clicked,              this, &CRouterRoutinoPathSetup::slotAddPath);
+    connect(toolDelete, &QToolButton::clicked,              this, &CRouterRoutinoPathSetup::slotDelPath);
+    connect(listWidget, &QListWidget::itemSelectionChanged, this, &CRouterRoutinoPathSetup::slotItemSelectionChanged);
 
     foreach(const QString &path, paths)
     {
diff --git a/src/gis/rte/router/CRouterRoutinoPathSetup.h b/src/gis/rte/router/CRouterRoutinoPathSetup.h
index 974fbcc..5f3c2e6 100644
--- a/src/gis/rte/router/CRouterRoutinoPathSetup.h
+++ b/src/gis/rte/router/CRouterRoutinoPathSetup.h
@@ -30,7 +30,7 @@ public:
     virtual ~CRouterRoutinoPathSetup();
 
 public slots:
-    void accept();
+    void accept() override;
 
 private slots:
     void slotAddPath();
diff --git a/src/gis/rte/router/CRouterSetup.cpp b/src/gis/rte/router/CRouterSetup.cpp
index d9ce8b2..4a2e10f 100644
--- a/src/gis/rte/router/CRouterSetup.cpp
+++ b/src/gis/rte/router/CRouterSetup.cpp
@@ -25,7 +25,7 @@
 
 #include <QtWidgets>
 
-CRouterSetup * CRouterSetup::pSelf = 0;
+CRouterSetup * CRouterSetup::pSelf = nullptr;
 
 CRouterSetup::CRouterSetup(QWidget * parent)
     : QWidget(parent)
@@ -39,7 +39,7 @@ CRouterSetup::CRouterSetup(QWidget * parent)
     stackedWidget->addWidget(new CRouterRoutino(this));
     stackedWidget->addWidget(new CRouterMapQuest(this));
 
-    connect(comboRouter, SIGNAL(currentIndexChanged(int)), this, SLOT(slotSelectRouter(int)));
+    connect(comboRouter, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &CRouterSetup::slotSelectRouter);
 
     SETTINGS;
     comboRouter->setCurrentIndex(cfg.value("Route/current",0).toInt());
diff --git a/src/gis/search/CSearchGoogle.cpp b/src/gis/search/CSearchGoogle.cpp
index 260d6a4..79bc46b 100644
--- a/src/gis/search/CSearchGoogle.cpp
+++ b/src/gis/search/CSearchGoogle.cpp
@@ -43,12 +43,12 @@ CSearchGoogle::CSearchGoogle(CGisListWks * parent)
     edit = new QLineEdit(parent);
     actSymbol = edit->addAction(getWptIconByName(symName, focus), QLineEdit::TrailingPosition);
     actSymbol->setObjectName(symName);
-    connect(actSymbol, SIGNAL(triggered()), this, SLOT(slotChangeSymbol()));
+    connect(actSymbol, &QAction::triggered, this, &CSearchGoogle::slotChangeSymbol);
 
     parent->setItemWidget(this, CGisListWks::eColumnName, edit);
 
-    connect(edit, SIGNAL(returnPressed()), this, SLOT(slotStartSearch()));
-    connect(&networkAccessManager,SIGNAL(finished(QNetworkReply*)),this,SLOT(slotRequestFinished(QNetworkReply*)));
+    connect(edit, &QLineEdit::returnPressed, this, &CSearchGoogle::slotStartSearch);
+    connect(&networkAccessManager, &QNetworkAccessManager::finished, this, &CSearchGoogle::slotRequestFinished);
 
     setIcon(CGisListWks::eColumnDecoration, QIcon("://icons/32x32/SearchGoogle.png"));
 }
diff --git a/src/gis/search/CSearchGoogle.h b/src/gis/search/CSearchGoogle.h
index 28b903d..b48dc40 100644
--- a/src/gis/search/CSearchGoogle.h
+++ b/src/gis/search/CSearchGoogle.h
@@ -19,7 +19,7 @@
 #ifndef CSEARCHGOOGLE_H
 #define CSEARCHGOOGLE_H
 
-#include <gis/prj/IGisProject.h>
+#include "gis/prj/IGisProject.h"
 
 #include <QNetworkAccessManager>
 #include <QObject>
@@ -34,15 +34,6 @@ public:
     CSearchGoogle(CGisListWks * parent);
     virtual ~CSearchGoogle();
 
-    bool save()
-    {
-        return false;
-    }
-    bool saveAs()
-    {
-        return false;
-    }
-
 private slots:
     void slotChangeSymbol();
     void slotStartSearch();
diff --git a/src/gis/slf/CSlfProject.cpp b/src/gis/slf/CSlfProject.cpp
new file mode 100644
index 0000000..8399218
--- /dev/null
+++ b/src/gis/slf/CSlfProject.cpp
@@ -0,0 +1,57 @@
+/**********************************************************************************************
+    Copyright (C) 2015 Christian Eichler code at christian-eichler.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "CMainWindow.h"
+#include "gis/CGisListWks.h"
+#include "gis/slf/CSlfProject.h"
+#include "gis/slf/CSlfReader.h"
+
+#include <QtWidgets>
+
+CSlfProject::CSlfProject(const QString &filename, bool readFile)
+    : IGisProject(eTypeSlf, filename, (CGisListWks*)nullptr)
+{
+    setIcon(CGisListWks::eColumnIcon, QIcon("://icons/32x32/SlfProject.png"));
+    blockUpdateItems(true);
+
+    valid = true;
+    if(readFile)
+    {
+        try
+        {
+            CSlfReader::readFile(filename, this);
+        }
+        catch(QString &errormsg)
+        {
+            QMessageBox::critical(CMainWindow::getBestWidgetForParent(),
+                                  tr("Failed to load file %1...").arg(filename), errormsg, QMessageBox::Abort);
+            valid = false;
+        }
+    }
+    else
+    {
+        IGisProject::filename.clear();
+    }
+    blockUpdateItems(false);
+    setupName(QFileInfo(filename).baseName().replace("_", " "));
+}
+
+CSlfProject::~CSlfProject()
+{
+}
+
diff --git a/src/helpers/INotifiable.h b/src/gis/slf/CSlfProject.h
similarity index 62%
rename from src/helpers/INotifiable.h
rename to src/gis/slf/CSlfProject.h
index 5654ebc..fac8fe1 100644
--- a/src/helpers/INotifiable.h
+++ b/src/gis/slf/CSlfProject.h
@@ -16,15 +16,33 @@
 
 **********************************************************************************************/
 
-#ifndef INOTIFIABLE_H
-#define INOTIFIABLE_H
+#ifndef CSLFPROJECT_H
+#define CSLFPROJECT_H
 
-class INotifiable
+#include "gis/prj/IGisProject.h"
+
+class CSlfProject : public IGisProject
 {
+    Q_DECLARE_TR_FUNCTIONS(CSlfProject)
 public:
-    virtual ~INotifiable() {};
-    virtual void notify() = 0;
+    CSlfProject(const QString &filename, bool readFile = true);
+    virtual ~CSlfProject();
+
+    const QString getFileDialogFilter() const override
+    {
+        return IGisProject::filedialogFilterSLF;
+    }
+
+    const QString getFileExtension() const override
+    {
+        return "slf";
+    }
+
+private:
+    void loadSlf(const QString &filename);
+
+    friend class CSlfReader;
 };
 
-#endif // INOTIFIABLE_H
+#endif // CSLFPROJECT_H
 
diff --git a/src/gis/slf/CSlfReader.cpp b/src/gis/slf/CSlfReader.cpp
new file mode 100644
index 0000000..8223610
--- /dev/null
+++ b/src/gis/slf/CSlfReader.cpp
@@ -0,0 +1,288 @@
+/**********************************************************************************************
+    Copyright (C) 2015 Christian Eichler code at christian-eichler.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/slf/CSlfReader.h"
+
+#include <QDateTime>
+#include <QDebug>
+#include <QFile>
+#include <QFileInfo>
+#include <QTextStream>
+
+#include "gis/slf/CSlfProject.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/wpt/CGisItemWpt.h"
+
+void CSlfReader::readFile(const QString &file, CSlfProject *proj)
+{
+    CSlfReader reader(file, proj);
+}
+
+static QDateTime parseSlfTimestamp(const QString &ts)
+{
+    int posOfGMT = ts.indexOf("GMT");
+    int deltaGMT = 0;
+    if(' ' != ts[posOfGMT + 3])
+    {
+        QString deltaGMTStr = ts.mid(posOfGMT + 3);
+        QTextStream(&deltaGMTStr) >> deltaGMT;
+    }
+
+    QString pts = ts.left(posOfGMT - 1) + ts.mid(posOfGMT + 8);
+    const QDateTime &baseTime = QDateTime::fromString(pts, "ddd MMM d HH:mm:ss yyyy");
+
+    return baseTime.addSecs( (deltaGMT / 100) * 60 * 60 );
+}
+
+CSlfReader::CSlfReader(const QString &filename, CSlfProject *proj) : proj(proj)
+{
+    QFile file(filename);
+
+    // if the file does not exist, the filename is assumed to be a name for a new project
+    if(!file.exists())
+    {
+        throw tr("%1 does not exist").arg(filename);
+    }
+
+    if(!file.open(QIODevice::ReadOnly))
+    {
+        throw tr("Failed to open %1").arg(filename);
+    }
+
+    // load file content to xml document
+    QDomDocument xml;
+    QString msg;
+    int line;
+    int column;
+    if(!xml.setContent(&file, false, &msg, &line, &column))
+    {
+        file.close();
+        throw tr("Failed to read: %1\nline %2, column %3:\n %4").arg(filename).arg(line).arg(column).arg(msg);
+    }
+    file.close();
+
+    QDomElement xmlAct = xml.documentElement();
+    if(xmlAct.tagName() != "Activity")
+    {
+        throw tr("Not a SLF file: %1").arg(filename);
+    }
+
+    // Ensure we only open files with the correct version (only revision 400 supported atm)
+    const int revision = xmlAct.attributes().namedItem("revision").nodeValue().toInt();
+    if(400 != revision)
+    {
+        throw tr("Unsupported revision %1: %2").arg(revision).arg(filename);
+    }
+
+    // Parse the file's dateCode
+    // This is a crucial step, as all the other timestamps are relative to this one
+    const QString &dateCode = xmlAct.namedItem("Computer").attributes().namedItem("dateCode").nodeValue();
+    baseTime = parseSlfTimestamp(dateCode);
+
+    const QDomNode& xmlGI = xmlAct.namedItem("GeneralInformation");
+    if(xmlGI.isElement())
+    {
+        readMetadata(xmlGI, proj->metadata);
+    }
+
+    // Read all the Markers
+    // This needs to be done prior to reading the Entries, as they contain the
+    // locations at which we need to split the track into segments
+    readMarkers(xmlAct.namedItem("Markers"));
+
+    // Now read the "Entries"
+    // Entries are the actual waypoints, which make up the track(s)
+    readEntries(xmlAct.namedItem("Entries"));
+}
+
+void CSlfReader::readMarkers(const QDomNode& xml)
+{
+    const QDomNodeList& xmlMrks = xml.childNodes();
+    long markerTimeSum = 0;
+
+    // iterate over all markers and add them to a QMap (this will sort them by timeAbsolute)
+    QMap<long, QDomNode> markers;
+    for(int i = 0; i < xmlMrks.count(); i++)
+    {
+        const QDomNode &marker = xmlMrks.item(i);
+        const QDomNamedNodeMap& attr = marker.attributes();
+
+        long time = attr.namedItem("timeAbsolute").nodeValue().toLong();
+
+        markers.insert(time, marker);
+    }
+
+    offsetsTime.append(0);
+    foreach(const QDomNode &marker, markers)
+    {
+        const QDomNamedNodeMap& attr = marker.attributes();
+
+        bool ok;
+        long markerTime = attr.namedItem("duration").nodeValue().toLong(&ok);
+        if(ok)
+        {
+            markerTimeSum += markerTime;
+        }
+
+        // type="l" indicates a marker, which is used to separate two laps
+        const QString &type = attr.namedItem("type").nodeValue();
+        if("l" == type || "p" == type)
+        {
+            // filter out duplicate (and invalid) laps
+            long time = attr.namedItem("timeAbsolute").nodeValue().toLong();
+            if(laps.isEmpty() || (laps.last() < time))
+            {
+                laps.append(time);
+                offsetsTime.append(markerTimeSum);
+            }
+        }
+        if("p" == type || "l" == type)
+        {
+            qreal lat = attr.namedItem("latitude" ).nodeValue().toDouble();
+            qreal lon = attr.namedItem("longitude").nodeValue().toDouble();
+
+            QString name = attr.namedItem("title").nodeValue();
+            if(name.isEmpty())
+            {
+                if("p" == type)
+                {
+                    name = tr("Break %1").arg(attr.namedItem("number").nodeValue());
+                }
+                if("l" == type)
+                {
+                    name = tr("Lap %1").arg(attr.namedItem("number").nodeValue());
+                }
+            }
+
+            qreal ele             = attr.namedItem("altitude"   ).nodeValue().toDouble() / 1000.;
+            const QDateTime &time = baseTime.addSecs(attr.namedItem("timeAbsolute").nodeValue().toDouble() / 100.);
+            new CGisItemWpt(QPointF(lon, lat), ele, time, name, "", proj);
+        }
+    }
+
+    // the last lap ends at positive infinite
+    laps.append(std::numeric_limits<long>::max());
+}
+
+void CSlfReader::readEntries(const QDomNode& xml)
+{
+    const QDomNodeList& xmlEntrs = xml.childNodes();
+
+    // .slf does not know extensions, but we are using them internally.
+    // This makes saving as .gpx easy and conforms to the internal way of doing
+    // things.
+    const QHash<QString, QString> attrToExt =
+    {
+        {"temperature", "gpxtpx:TrackPointExtension|gpxtpx:atemp"},
+        {"heartrate",   "gpxtpx:TrackPointExtension|gpxtpx:hr"   },
+        {"cadence",     "gpxtpx:TrackPointExtension|gpxtpx:cad"  },
+        {"speed",       "speed"}
+    };
+
+    // Iterate over all entries and search for 0-only attributes.
+    // Sigma Data Center seems to store even non-used values (as 0),
+    // but we do not want to include that within our extensions
+    QSet<QString> usedAttr;
+    for(int i = 0; i < xmlEntrs.count(); i++)
+    {
+        const QDomNamedNodeMap &attr = xmlEntrs.item(i).attributes();
+
+        foreach(const QString &key, attrToExt.keys())
+        {
+            if(attr.contains(key) && ("0" != attr.namedItem(key).nodeValue()))
+            {
+                usedAttr.insert(key);
+            }
+        }
+    }
+
+    // Now generate the track / segments
+    int lap = 0;
+
+    CGisItemTrk::trk_t trk;
+    trk.segs.resize(laps.count() + 1);
+
+    CGisItemTrk::trkseg_t *seg = &(trk.segs[0]);
+    long breakTime = offsetsTime[0];
+
+    qreal prevLon = NOFLOAT;
+    qreal prevLat = NOFLOAT;
+    for(int i = 0; i < xmlEntrs.count(); i++)
+    {
+        CGisItemTrk::trkpt_t trkpt;
+
+        const QDomNamedNodeMap& attr = xmlEntrs.item(i).attributes();
+        trkpt.lat = attr.namedItem("latitude" ).nodeValue().toDouble();
+        trkpt.lon = attr.namedItem("longitude").nodeValue().toDouble();
+
+        if((0. == trkpt.lat && 0. == trkpt.lon) || (prevLat == trkpt.lat && prevLon == trkpt.lon))
+        {
+            continue;
+        }
+        prevLat = trkpt.lat;
+        prevLon = trkpt.lon;
+
+        trkpt.ele  = attr.namedItem("altitude" ).nodeValue().toDouble() / 1000.;
+
+        foreach(const QString &key, usedAttr)
+        {
+            if(attr.contains(key))
+            {
+                trkpt.extensions[attrToExt[key]] = attr.namedItem(key).nodeValue().toDouble();
+            }
+        }
+
+        const long trainingTime = attr.namedItem("trainingTimeAbsolute").nodeValue().toLong();
+        while(trainingTime > laps[lap])
+        {
+            lap++;
+            seg       = &(trk.segs[lap]);
+            breakTime = offsetsTime[lap];
+        }
+
+        trkpt.time = baseTime.addSecs( (breakTime + trainingTime) / 100.);
+
+        seg->pts.append(trkpt);
+    }
+
+    // Remove empty segments
+    for(int i = 0; i < trk.segs.count(); i++)
+    {
+        if(trk.segs[i].pts.isEmpty())
+        {
+            trk.segs.remove(i);
+            i--;
+        }
+    }
+
+    new CGisItemTrk(trk, proj);
+    proj->updateItemCounters();
+}
+
+void CSlfReader::readMetadata(const QDomNode& xml, IGisProject::metadata_t& metadata)
+{
+    metadata.name     = xml.namedItem("name"       ).firstChild().nodeValue();
+    metadata.desc     = xml.namedItem("description").firstChild().nodeValue();
+    metadata.keywords = xml.namedItem("sport"      ).firstChild().nodeValue();
+}
+
+CSlfProject* CSlfReader::getProject()
+{
+    return proj;
+}
+
diff --git a/src/widgets/CColorLegend.h b/src/gis/slf/CSlfReader.h
similarity index 51%
copy from src/widgets/CColorLegend.h
copy to src/gis/slf/CSlfReader.h
index 0f13743..f1f3c99 100644
--- a/src/widgets/CColorLegend.h
+++ b/src/gis/slf/CSlfReader.h
@@ -16,45 +16,37 @@
 
 **********************************************************************************************/
 
-#ifndef CCOLORLEGEND_H
-#define CCOLORLEGEND_H
+#ifndef CSLFREADER_H
+#define CSLFREADER_H
 
-#include "gis/trk/CGisItemTrk.h"
-#include "helpers/INotifiable.h"
-#include <QWidget>
+#include <QDateTime>
+#include <QDomNode>
+#include <QString>
 
-class CColorLegend : public QWidget, public INotifiable
+#include "gis/prj/IGisProject.h"
+
+class CSlfProject;
+
+class CSlfReader
 {
-    Q_OBJECT
+    Q_DECLARE_TR_FUNCTIONS(CSlfReader)
 public:
-    CColorLegend(QWidget *parent, CGisItemTrk *trk = nullptr);
-    ~CColorLegend();
-
-    void setMinimum(qreal min);
-    void setMaximum(qreal max);
+    static void readFile(const QString &file, CSlfProject *proj);
 
-    void setUnit(const QString &unit);
+private:
+    CSlfReader(const QString &filename, CSlfProject *proj);
 
-    void notify();
+    void readMarkers(const QDomNode& xml);
+    void readEntries(const QDomNode& xml);
+    void readMetadata(const QDomNode& xml, IGisProject::metadata_t& metadata);
 
-protected:
-    void paintEvent(QPaintEvent *event);
-    void resizeEvent(QResizeEvent *event);
+    CSlfProject* getProject();
 
-private:
-    int paintLabel(QPainter &p, qreal value);
-
-    const int colorWidth  =  18;
-    const int colorHeight = 256;
-
-    QRect colorRect;
-    QString unit;
-    qreal minimum;
-    qreal maximum;
-    bool background = false;
-    int xOffset    = 1;
-    CGisItemTrk *trk = nullptr;
+    CSlfProject   *proj = nullptr; /// the resulting project after construction
+    QDateTime baseTime;            /// the time all entries refer to
+    QList<long>    offsetsTime;    /// an additional offset, required to take breaks into account
+    QList<long>    laps;           /// the distances a new lap starts at (a lap is a .slf segment)
 };
 
-#endif // CCOLORLEGEND_H
+#endif // CSLFREADER_H
 
diff --git a/src/gis/tnv/CTwoNavProject.cpp b/src/gis/tnv/CTwoNavProject.cpp
index 1ebe019..2ce14d7 100644
--- a/src/gis/tnv/CTwoNavProject.cpp
+++ b/src/gis/tnv/CTwoNavProject.cpp
@@ -84,7 +84,7 @@ bool CTwoNavProject::save()
         QFile fileKey(dir.absoluteFilePath(QString("%1.key").arg(getKey())));
         if(!fileKey.open(QIODevice::WriteOnly))
         {
-            QMessageBox::critical(CMainWindow::getBestWidgetForParent(), QObject::tr("Error..."), QObject::tr("Failed to open %1.").arg(fileKey.fileName()), QMessageBox::Abort);
+            QMessageBox::critical(CMainWindow::getBestWidgetForParent(), tr("Error..."), tr("Failed to open %1.").arg(fileKey.fileName()), QMessageBox::Abort);
             throw -1;
         }
         fileKey.close();
@@ -156,7 +156,7 @@ bool CTwoNavProject::saveAs()
     QString path = cfg.value("Paths/lastGisPath", QDir::homePath()).toString();
 
     QString filter = filedialogFilterGPX;
-    QString fn = QFileDialog::getSaveFileName(CMainWindow::getBestWidgetForParent(), QObject::tr("Save GIS data to..."), path, filedialogSaveFilters, &filter);
+    QString fn = QFileDialog::getSaveFileName(CMainWindow::getBestWidgetForParent(), tr("Save GIS data to..."), path, filedialogSaveFilters, &filter);
 
     if(fn.isEmpty())
     {
@@ -188,7 +188,7 @@ bool CTwoNavProject::saveWpts(QList<CGisItemWpt*>& wpts, const QString& filename
     QFile file(filename);
     if(!file.open(QIODevice::WriteOnly))
     {
-        QMessageBox::critical(CMainWindow::getBestWidgetForParent(), QObject::tr("Error..."), QObject::tr("Failed to open %1.").arg(filename), QMessageBox::Abort);
+        QMessageBox::critical(CMainWindow::getBestWidgetForParent(), tr("Error..."), tr("Failed to open %1.").arg(filename), QMessageBox::Abort);
         return false;
     }
     QTextStream out(&file);
diff --git a/src/gis/tnv/CTwoNavProject.h b/src/gis/tnv/CTwoNavProject.h
index fe0076b..91a7137 100644
--- a/src/gis/tnv/CTwoNavProject.h
+++ b/src/gis/tnv/CTwoNavProject.h
@@ -28,6 +28,7 @@ class QDir;
 
 class CTwoNavProject : public IGisProject
 {
+    Q_DECLARE_TR_FUNCTIONS(CTwoNavProject)
 public:
     CTwoNavProject(const QString &filename, const IGisProject * project, IDevice * parent);
     CTwoNavProject(const QString &filename, IDevice * parent);
@@ -65,7 +66,7 @@ public:
     };
 
 
-    bool save();
+    bool save()   override;
     bool saveAs();
 
 private:
diff --git a/src/gis/tnv/serialization.cpp b/src/gis/tnv/serialization.cpp
index d7de76f..d77fa5f 100644
--- a/src/gis/tnv/serialization.cpp
+++ b/src/gis/tnv/serialization.cpp
@@ -208,7 +208,7 @@ bool CGisItemTrk::saveTwoNav(const QString &filename)
     QFile file(filename);
     if(!file.open(QIODevice::WriteOnly))
     {
-        QMessageBox::critical(CMainWindow::getBestWidgetForParent(), QObject::tr("Error..."), QObject::tr("Failed to open %1.").arg(filename), QMessageBox::Abort);
+        QMessageBox::critical(CMainWindow::getBestWidgetForParent(), tr("Error..."), tr("Failed to open %1.").arg(filename), QMessageBox::Abort);
         return false;
     }
 
@@ -344,7 +344,7 @@ bool CGisItemTrk::readTwoNav(const QString& filename)
     QFile file(filename);
     if(!file.open(QIODevice::ReadOnly))
     {
-        QMessageBox::information(CMainWindow::getBestWidgetForParent(),QObject::tr("Error..."), QObject::tr("Failed to open %1.").arg(filename),QMessageBox::Abort,QMessageBox::Abort);
+        QMessageBox::information(CMainWindow::getBestWidgetForParent(),tr("Error..."), tr("Failed to open %1.").arg(filename),QMessageBox::Abort,QMessageBox::Abort);
         return false;
     }
     QTextStream in(&file);
@@ -373,7 +373,7 @@ bool CGisItemTrk::readTwoNav(const QString& filename)
             QString name  = line.mid(1).simplified();
             if(name != "WGS 84")
             {
-                QMessageBox::information(CMainWindow::getBestWidgetForParent(),QObject::tr("Error..."), QObject::tr("Only support lon/lat WGS 84 format."),QMessageBox::Abort,QMessageBox::Abort);
+                QMessageBox::information(CMainWindow::getBestWidgetForParent(),tr("Error..."), tr("Only support lon/lat WGS 84 format."),QMessageBox::Abort,QMessageBox::Abort);
                 return false;
             }
             break;
@@ -384,7 +384,7 @@ bool CGisItemTrk::readTwoNav(const QString& filename)
             QString name  = line.mid(1).simplified();
             if(name != "1")
             {
-                QMessageBox::information(CMainWindow::getBestWidgetForParent(),QObject::tr("Error..."), QObject::tr("Only support lon/lat WGS 84 format."),QMessageBox::Abort,QMessageBox::Abort);
+                QMessageBox::information(CMainWindow::getBestWidgetForParent(),tr("Error..."), tr("Only support lon/lat WGS 84 format."),QMessageBox::Abort,QMessageBox::Abort);
                 return false;
             }
             break;
@@ -417,7 +417,7 @@ bool CGisItemTrk::readTwoNav(const QString& filename)
 
             if(values.size() < 8)
             {
-                QMessageBox::information(CMainWindow::getBestWidgetForParent(),QObject::tr("Error..."), QObject::tr("Failed to read data."),QMessageBox::Abort,QMessageBox::Abort);
+                QMessageBox::information(CMainWindow::getBestWidgetForParent(),tr("Error..."), tr("Failed to read data."),QMessageBox::Abort,QMessageBox::Abort);
                 return false;
             }
 
@@ -557,7 +557,7 @@ bool CTwoNavProject::loadWpts(const QString& filename, const QDir& dir)
     QFile file(filename);
     if(!file.open(QIODevice::ReadOnly))
     {
-        QMessageBox::information(CMainWindow::getBestWidgetForParent(),QObject::tr("Error..."), QObject::tr("Failed to open %1.").arg(filename),QMessageBox::Abort,QMessageBox::Abort);
+        QMessageBox::information(CMainWindow::getBestWidgetForParent(),tr("Error..."), tr("Failed to open %1.").arg(filename),QMessageBox::Abort,QMessageBox::Abort);
         return false;
     }
     QTextStream in(&file);
@@ -585,7 +585,7 @@ bool CTwoNavProject::loadWpts(const QString& filename, const QDir& dir)
             QString name  = line.mid(1).simplified();
             if(name != "WGS 84")
             {
-                QMessageBox::information(CMainWindow::getBestWidgetForParent(),QObject::tr("Error..."), QObject::tr("Only support lon/lat WGS 84 format."),QMessageBox::Abort,QMessageBox::Abort);
+                QMessageBox::information(CMainWindow::getBestWidgetForParent(),tr("Error..."), tr("Only support lon/lat WGS 84 format."),QMessageBox::Abort,QMessageBox::Abort);
                 return false;
             }
             break;
@@ -596,7 +596,7 @@ bool CTwoNavProject::loadWpts(const QString& filename, const QDir& dir)
             QString name  = line.mid(1).simplified();
             if(name != "1")
             {
-                QMessageBox::information(CMainWindow::getBestWidgetForParent(),QObject::tr("Error..."), QObject::tr("Only support lon/lat WGS 84 format."),QMessageBox::Abort,QMessageBox::Abort);
+                QMessageBox::information(CMainWindow::getBestWidgetForParent(),tr("Error..."), tr("Only support lon/lat WGS 84 format."),QMessageBox::Abort,QMessageBox::Abort);
                 return false;
             }
             break;
@@ -614,7 +614,7 @@ bool CTwoNavProject::loadWpts(const QString& filename, const QDir& dir)
 
             if(values.size() < 8)
             {
-                QMessageBox::information(CMainWindow::getBestWidgetForParent(),QObject::tr("Error..."), QObject::tr("Failed to read data."),QMessageBox::Abort,QMessageBox::Abort);
+                QMessageBox::information(CMainWindow::getBestWidgetForParent(),tr("Error..."), tr("Failed to read data."),QMessageBox::Abort,QMessageBox::Abort);
                 return false;
             }
 
@@ -642,7 +642,7 @@ bool CTwoNavProject::loadWpts(const QString& filename, const QDir& dir)
 
             if(values.size() < 10)
             {
-                QMessageBox::information(CMainWindow::getBestWidgetForParent(),QObject::tr("Error..."), QObject::tr("Failed to read data."),QMessageBox::Abort,QMessageBox::Abort);
+                QMessageBox::information(CMainWindow::getBestWidgetForParent(),tr("Error..."), tr("Failed to read data."),QMessageBox::Abort,QMessageBox::Abort);
                 return false;
             }
 
@@ -716,7 +716,7 @@ bool CTwoNavProject::loadWpts(const QString& filename, const QDir& dir)
             QStringList values = line.mid(1).simplified().split(',', QString::KeepEmptyParts);
             if(values.size() < 1)
             {
-                QMessageBox::information(CMainWindow::getBestWidgetForParent(),QObject::tr("Error..."), QObject::tr("Failed to read data."),QMessageBox::Abort,QMessageBox::Abort);
+                QMessageBox::information(CMainWindow::getBestWidgetForParent(),tr("Error..."), tr("Failed to read data."),QMessageBox::Abort,QMessageBox::Abort);
                 return false;
             }
 
diff --git a/src/gis/trk/CActivityTrk.cpp b/src/gis/trk/CActivityTrk.cpp
index 814fffa..1b7df2d 100644
--- a/src/gis/trk/CActivityTrk.cpp
+++ b/src/gis/trk/CActivityTrk.cpp
@@ -18,6 +18,7 @@
 
 #include "gis/trk/CActivityTrk.h"
 #include "gis/trk/CGisItemTrk.h"
+#include "helpers/CSettings.h"
 #include "units/IUnit.h"
 
 CActivityTrk::desc_t CActivityTrk::actDescriptor[] =
@@ -25,64 +26,82 @@ CActivityTrk::desc_t CActivityTrk::actDescriptor[] =
     {
         "Foot"
         , CGisItemTrk::trkpt_t::eActFoot
-        , QObject::tr("Foot")
+        , tr("Foot")
         , "://icons/48x48/ActFoot.png"
         , "://icons/16x16/ActFoot.png"
+        , IGisItem::colorMap[0].color
     },
     {
         "Cycle"
         , CGisItemTrk::trkpt_t::eActCycle
-        , QObject::tr("Bicycle")
+        , tr("Bicycle")
         , "://icons/48x48/ActCycle.png"
         , "://icons/16x16/ActCycle.png"
+        , IGisItem::colorMap[1].color
     },
     {
         "Bike"
         , CGisItemTrk::trkpt_t::eActBike
-        , QObject::tr("Motor Bike")
+        , tr("Motor Bike")
         , "://icons/48x48/ActBike.png"
         , "://icons/16x16/ActBike.png"
+        , IGisItem::colorMap[2].color
     },
     {
         "Car"
         , CGisItemTrk::trkpt_t::eActCar
-        , QObject::tr("Car")
+        , tr("Car")
         , "://icons/48x48/ActCar.png"
         , "://icons/16x16/ActCar.png"
+        , IGisItem::colorMap[3].color
     },
     {
         "Cable"
         , CGisItemTrk::trkpt_t::eActCable
-        , QObject::tr("Cable Car")
+        , tr("Cable Car")
         , "://icons/48x48/ActCable.png"
         , "://icons/16x16/ActCable.png"
+        , IGisItem::colorMap[4].color
     },
     {
         "Swim"
         , CGisItemTrk::trkpt_t::eActSwim
-        , QObject::tr("Swim")
+        , tr("Swim")
         , "://icons/48x48/ActSwim.png"
         , "://icons/16x16/ActSwim.png"
+        , IGisItem::colorMap[5].color
     },
     {
         "Ship"
         , CGisItemTrk::trkpt_t::eActShip
-        , QObject::tr("Ship")
+        , tr("Ship")
         , "://icons/48x48/ActShip.png"
         , "://icons/16x16/ActShip.png"
+        , IGisItem::colorMap[6].color
     },
     {
         "Aeronautik"
         , CGisItemTrk::trkpt_t::eActAero
-        , QObject::tr("Aeronautik")
+        , tr("Aeronautik")
         , "://icons/48x48/ActAero.png"
         , "://icons/16x16/ActAero.png"
+        , IGisItem::colorMap[7].color
     },
     {
-        ""
+        "Ski/Winter"
+        , CGisItemTrk::trkpt_t::eActSki
+        , tr("Ski/Winter")
+        , "://icons/48x48/ActSki.png"
+        , "://icons/16x16/ActSki.png"
+        , IGisItem::colorMap[8].color
+    },
+    {
+        QString()
         , 0
-        , ""
-        , ""
+        , QString()
+        , QString()
+        , QString()
+        , QColor()
     }
 };
 
@@ -91,14 +110,40 @@ CActivityTrk::CActivityTrk(CGisItemTrk * trk)
     , allFlags(0)
     , activitySummary(CGisItemTrk::trkpt_t::eActMaxNum + 1)
 {
-    actDescriptor[0].name = QObject::tr("Foot");
-    actDescriptor[1].name = QObject::tr("Bicycle");
-    actDescriptor[2].name = QObject::tr("Motor Bike");
-    actDescriptor[3].name = QObject::tr("Car");
-    actDescriptor[4].name = QObject::tr("Cable Car");
-    actDescriptor[5].name = QObject::tr("Swim");
-    actDescriptor[6].name = QObject::tr("Ship");
-    actDescriptor[7].name = QObject::tr("Aeronautics");
+}
+
+void CActivityTrk::init()
+{
+    actDescriptor[0].name = tr("Foot");
+    actDescriptor[1].name = tr("Bicycle");
+    actDescriptor[2].name = tr("Motor Bike");
+    actDescriptor[3].name = tr("Car");
+    actDescriptor[4].name = tr("Cable Car");
+    actDescriptor[5].name = tr("Swim");
+    actDescriptor[6].name = tr("Ship");
+    actDescriptor[7].name = tr("Aeronautics");
+    actDescriptor[8].name = tr("Ski/Winter");
+
+    SETTINGS;
+    cfg.beginGroup("Activities");
+    for(int i = 0; !actDescriptor[i].objName.isEmpty(); i++)
+    {
+        desc_t& desc = actDescriptor[i];
+        desc.color = QColor(cfg.value(QString("color%1").arg(i), desc.color.name()).toString());
+    }
+    cfg.endGroup(); // Activities
+}
+
+void CActivityTrk::release()
+{
+    SETTINGS;
+    cfg.beginGroup("Activities");
+    for(int i = 0; !actDescriptor[i].objName.isEmpty(); i++)
+    {
+        desc_t& desc = actDescriptor[i];
+        cfg.setValue(QString("color%1").arg(i), desc.color.name());
+    }
+    cfg.endGroup(); // Activities
 }
 
 
@@ -112,8 +157,8 @@ void CActivityTrk::update()
     }
 
     const CGisItemTrk::trk_t&       data = trk->getTrackData();
-    const CGisItemTrk::trkpt_t *    lastTrkpt = 0;
-    const CGisItemTrk::trkpt_t *    startTrkpt = 0;
+    const CGisItemTrk::trkpt_t *    lastTrkpt = nullptr;
+    const CGisItemTrk::trkpt_t *    startTrkpt = nullptr;
 
     quint32 lastFlag = 0xFFFFFFFF;
     foreach(const CGisItemTrk::trkseg_t &seg, data.segs)
@@ -129,7 +174,7 @@ void CActivityTrk::update()
             lastTrkpt = &pt;
             if(pt.flags != lastFlag)
             {
-                if(startTrkpt != 0)
+                if(startTrkpt != nullptr)
                 {
                     activity_summary_t& summary = getSummary(activitySummary, lastFlag);
                     summary.distance += pt.distance - startTrkpt->distance;
@@ -156,6 +201,12 @@ void CActivityTrk::update()
             }
         }
     }
+
+    if(lastTrkpt == nullptr)
+    {
+        return;
+    }
+
     activity_summary_t& summary = getSummary(activitySummary, lastFlag);
     summary.distance += lastTrkpt->distance - startTrkpt->distance;
     summary.ascend += lastTrkpt->ascend - startTrkpt->ascend;
@@ -207,19 +258,19 @@ void CActivityTrk::printSummary(const QVector<activity_summary_t>& summary, quin
 
         str += "<table>";
         IUnit::self().meter2distance(s.distance, val, unit);
-        str += "<tr><td>" + QObject::tr("Distance:") + QString("  </td><td>%1 %2</td></tr>").arg(val).arg(unit);
+        str += "<tr><td>" + tr("Distance:") + QString("  </td><td>%1 %2</td></tr>").arg(val).arg(unit);
         IUnit::self().meter2elevation(s.ascend, val, unit);
-        str += "<tr><td>" + QObject::tr("Ascend:") + QString("  </td><td>%1 %2</td></tr>").arg(val).arg(unit);
+        str += "<tr><td>" + tr("Ascend:") + QString("  </td><td>%1 %2</td></tr>").arg(val).arg(unit);
         IUnit::self().meter2elevation(s.descend, val, unit);
-        str += "<tr><td>" + QObject::tr("Descend:") + QString("  </td><td>%1 %2</td></tr>").arg(val).arg(unit);
+        str += "<tr><td>" + tr("Descend:") + QString("  </td><td>%1 %2</td></tr>").arg(val).arg(unit);
         IUnit::self().meter2speed(s.distance/s.ellapsedSecondsMoving, val, unit);
-        str += "<tr><td>" + QObject::tr("Speed Moving:") + QString("  </td><td>%1 %2</td></tr>").arg(val).arg(unit);
+        str += "<tr><td>" + tr("Speed Moving:") + QString("  </td><td>%1 %2</td></tr>").arg(val).arg(unit);
         IUnit::self().meter2speed(s.distance/s.ellapsedSeconds, val, unit);
-        str += "<tr><td>" + QObject::tr("Speed Total:") + QString("  </td><td>%1 %2</td></tr>").arg(val).arg(unit);
+        str += "<tr><td>" + tr("Speed Total:") + QString("  </td><td>%1 %2</td></tr>").arg(val).arg(unit);
         IUnit::self().seconds2time(s.ellapsedSecondsMoving, val, unit);
-        str += "<tr><td>" + QObject::tr("Time Moving:") + QString("  </td><td>%1 %2</td></tr>").arg(val).arg(unit);
+        str += "<tr><td>" + tr("Time Moving:") + QString("  </td><td>%1 %2</td></tr>").arg(val).arg(unit);
         IUnit::self().seconds2time(s.ellapsedSeconds, val, unit);
-        str += "<tr><td>" + QObject::tr("Time Total:") + QString("  </td><td>%1 %2</td></tr>").arg(val).arg(unit);
+        str += "<tr><td>" + tr("Time Total:") + QString("  </td><td>%1 %2</td></tr>").arg(val).arg(unit);
         str += "</table>";
         return;
     }
@@ -251,7 +302,7 @@ void CActivityTrk::printSummary(const QVector<activity_summary_t>& summary, quin
 
     // ############### build Distance row ###############
     str += "<tr>";
-    str += "<td>" + QObject::tr("Distance:") + "</td>";
+    str += "<td>" + tr("Distance:") + "</td>";
     mask = 0x80000000;
     for(int i = 0; i < N; i++)
     {
@@ -273,7 +324,7 @@ void CActivityTrk::printSummary(const QVector<activity_summary_t>& summary, quin
 
     // ############### build Ascend row ###############
     str += "<tr>";
-    str += "<td>" + QObject::tr("Ascend:") + "</td>";
+    str += "<td>" + tr("Ascend:") + "</td>";
     mask = 0x80000000;
     for(int i = 0; i < N; i++)
     {
@@ -295,7 +346,7 @@ void CActivityTrk::printSummary(const QVector<activity_summary_t>& summary, quin
 
     // ############### build Descend row ###############
     str += "<tr>";
-    str += "<td>" + QObject::tr("Descend:") + "</td>";
+    str += "<td>" + tr("Descend:") + "</td>";
     mask = 0x80000000;
     for(int i = 0; i < N; i++)
     {
@@ -317,7 +368,7 @@ void CActivityTrk::printSummary(const QVector<activity_summary_t>& summary, quin
 
     // ############### build Speed Moving row ###############
     str += "<tr>";
-    str += "<td>" + QObject::tr("Speed Moving:") + "</td>";
+    str += "<td>" + tr("Speed Moving:") + "</td>";
     mask = 0x80000000;
     for(int i = 0; i < N; i++)
     {
@@ -339,7 +390,7 @@ void CActivityTrk::printSummary(const QVector<activity_summary_t>& summary, quin
 
     // ############### build Speed row ###############
     str += "<tr>";
-    str += "<td>" + QObject::tr("Speed Total:") + "</td>";
+    str += "<td>" + tr("Speed Total:") + "</td>";
     mask = 0x80000000;
     for(int i = 0; i < N; i++)
     {
@@ -361,7 +412,7 @@ void CActivityTrk::printSummary(const QVector<activity_summary_t>& summary, quin
 
     // ############### build Time Moving row ###############
     str += "<tr>";
-    str += "<td>" + QObject::tr("Time Moving:") + "</td>";
+    str += "<td>" + tr("Time Moving:") + "</td>";
     mask = 0x80000000;
     for(int i = 0; i < N; i++)
     {
@@ -383,7 +434,7 @@ void CActivityTrk::printSummary(const QVector<activity_summary_t>& summary, quin
 
     // ############### build Time Moving row ###############
     str += "<tr>";
-    str += "<td>" + QObject::tr("Time Total:") + "</td>";
+    str += "<td>" + tr("Time Total:") + "</td>";
     mask = 0x80000000;
     for(int i = 0; i < N; i++)
     {
@@ -466,3 +517,18 @@ const CActivityTrk::desc_t& CActivityTrk::getDescriptor(quint32 flag)
 
     return actDescriptor[i];
 }
+
+void CActivityTrk::setColor(quint32 flag, const QString& color)
+{
+    int i = 0;
+    while(!actDescriptor[i].objName.isEmpty())
+    {
+        if(actDescriptor[i].flag == flag)
+        {
+            actDescriptor[i].color = QColor(color);
+            break;
+        }
+
+        i++;
+    }
+}
diff --git a/src/gis/trk/CActivityTrk.h b/src/gis/trk/CActivityTrk.h
index 1481172..f36741f 100644
--- a/src/gis/trk/CActivityTrk.h
+++ b/src/gis/trk/CActivityTrk.h
@@ -19,6 +19,7 @@
 #ifndef CACTIVITYTRK_H
 #define CACTIVITYTRK_H
 
+#include <QCoreApplication>
 #include <QIcon>
 #include <QPointer>
 #include <QVector>
@@ -26,9 +27,13 @@ class CGisItemTrk;
 
 class CActivityTrk
 {
+    Q_DECLARE_TR_FUNCTIONS(CActivityTrk)
 public:
     virtual ~CActivityTrk() = default;
 
+    static void init();
+    static void release();
+
     struct activity_summary_t
     {
         activity_summary_t() : distance(0), ascend(0), descend(0), ellapsedSeconds(0), ellapsedSecondsMoving(0)
@@ -51,6 +56,29 @@ public:
         qreal ellapsedSecondsMoving;
     };
 
+    struct activity_range_t
+    {
+        qreal d1;
+        qreal d2;
+
+        qreal t1;
+        qreal t2;
+
+        QString icon;
+        QString name;
+    };
+
+    struct desc_t
+    {
+        QString objName;
+        quint32 flag;
+        QString name;
+        QString iconLarge;
+        QString iconSmall;
+        QColor color;
+    };
+
+
     /**
        @brief Update internal summary array
      */
@@ -84,50 +112,30 @@ public:
      */
     void sumUp(QVector<activity_summary_t> &summary) const;
 
-    struct activity_range_t
-    {
-        qreal d1;
-        qreal d2;
-
-        qreal t1;
-        qreal t2;
-
-        QString icon;
-        QString name;
-    };
 
     const QList<activity_range_t>& getActivityRanges() const
     {
         return activityRanges;
     }
 
-    struct desc_t
-    {
-        QString objName;
-        quint32 flag;
-        QString name;
-        QString iconLarge;
-        QString iconSmall;
-    };
-
     static const desc_t* getActivityDescriptors()
     {
         return actDescriptor;
     }
 
+    static const desc_t& getDescriptor(quint32 flag);
+
+    static void setColor(quint32 flag, const QString& color);
+
 private:
     friend class CGisItemTrk;
     CActivityTrk(CGisItemTrk * trk);
-
-    static desc_t actDescriptor[];
-
     static activity_summary_t& getSummary(QVector<activity_summary_t> &summary, quint32 flag);
     static const activity_summary_t& getSummary(const QVector<activity_summary_t> &summary, quint32 flag);
 
-    const desc_t& getDescriptor(quint32 flag);
+    static desc_t actDescriptor[];
 
     CGisItemTrk * trk;
-
     quint32 allFlags;
     QList<activity_range_t> activityRanges;
     QVector<activity_summary_t>  activitySummary;
diff --git a/src/gis/trk/CCombineTrk.cpp b/src/gis/trk/CCombineTrk.cpp
index e6b6c26..3b43bed 100644
--- a/src/gis/trk/CCombineTrk.cpp
+++ b/src/gis/trk/CCombineTrk.cpp
@@ -34,7 +34,7 @@ CCombineTrk::CCombineTrk(CGisItemTrk& trk, const QList<IGisItem::key_t> &keysPre
     for(int i = 0; i < N; i++)
     {
         CGisItemTrk * trk1 = dynamic_cast<CGisItemTrk*>(project.child(i));
-        if(trk1 == 0)
+        if(nullptr == trk1)
         {
             continue;
         }
@@ -56,7 +56,7 @@ CCombineTrk::CCombineTrk(CGisItemTrk& trk, const QList<IGisItem::key_t> &keysPre
     foreach(const IGisItem::key_t& key, keysPreSel)
     {
         IGisItem * gisItem = dynamic_cast<IGisItem*>(project.getItemByKey(key));
-        if(gisItem == 0)
+        if(nullptr == gisItem)
         {
             continue;
         }
@@ -69,12 +69,12 @@ CCombineTrk::CCombineTrk(CGisItemTrk& trk, const QList<IGisItem::key_t> &keysPre
         item->setData(Qt::UserRole + 3, key.device);
     }
 
-    connect(listAvailable, SIGNAL(itemSelectionChanged()), this, SLOT(slotSelectionChanged()));
-    connect(listSelected, SIGNAL(itemSelectionChanged()), this, SLOT(slotSelectionChanged()));
-    connect(toolSelect, SIGNAL(clicked()), this, SLOT(slotSelect()));
-    connect(toolRemove, SIGNAL(clicked()), this, SLOT(slotRemove()));
-    connect(toolUp, SIGNAL(clicked()), this, SLOT(slotUp()));
-    connect(toolDown, SIGNAL(clicked()), this, SLOT(slotDown()));
+    connect(listAvailable, &QListWidget::itemSelectionChanged, this, &CCombineTrk::slotSelectionChanged);
+    connect(listSelected,  &QListWidget::itemSelectionChanged, this, &CCombineTrk::slotSelectionChanged);
+    connect(toolSelect,    &QToolButton::clicked,              this, &CCombineTrk::slotSelect);
+    connect(toolRemove,    &QToolButton::clicked,              this, &CCombineTrk::slotRemove);
+    connect(toolUp,        &QToolButton::clicked,              this, &CCombineTrk::slotUp);
+    connect(toolDown,      &QToolButton::clicked,              this, &CCombineTrk::slotDown);
 
     listAvailable->setCurrentItem(0);
     listSelected->setCurrentItem(0);
@@ -96,7 +96,7 @@ void CCombineTrk::accept()
         key.project = listSelected->item(i)->data(Qt::UserRole + 2).toString();
         key.device  = listSelected->item(i)->data(Qt::UserRole + 3).toString();
         CGisItemTrk * trk1 = dynamic_cast<CGisItemTrk*>(project.getItemByKey(key));
-        if(trk1 == 0)
+        if(nullptr == trk1)
         {
             continue;
         }
@@ -108,14 +108,13 @@ void CCombineTrk::accept()
 
 void CCombineTrk::slotSelectionChanged()
 {
-    QListWidgetItem * item;
-    item = listAvailable->currentItem();
-    toolSelect->setEnabled(item != 0);
+    QListWidgetItem * item = listAvailable->currentItem();
+    toolSelect->setEnabled(item != nullptr);
 
     item = listSelected->currentItem();
-    toolRemove->setEnabled(item != 0);
-    toolUp->setEnabled(item != 0);
-    toolDown->setEnabled(item != 0);
+    toolRemove->setEnabled(item != nullptr);
+    toolUp->setEnabled(item != nullptr);
+    toolDown->setEnabled(item != nullptr);
 
     if(item)
     {
@@ -134,10 +133,9 @@ void CCombineTrk::slotSelectionChanged()
 
 void CCombineTrk::slotSelect()
 {
-    QListWidgetItem * item;
-    item = listAvailable->currentItem();
+    QListWidgetItem *item = listAvailable->currentItem();
 
-    if(item == 0)
+    if(nullptr == item)
     {
         return;
     }
@@ -151,10 +149,9 @@ void CCombineTrk::slotSelect()
 
 void CCombineTrk::slotRemove()
 {
-    QListWidgetItem * item;
-    item = listSelected->currentItem();
+    QListWidgetItem *item = listSelected->currentItem();
 
-    if(item == 0)
+    if(nullptr == item)
     {
         return;
     }
@@ -225,8 +222,8 @@ void CCombineTrk::updatePreview()
         key.device  = listSelected->item(i)->data(Qt::UserRole + 3).toString();
 
 
-        CGisItemTrk * trk1 = dynamic_cast<CGisItemTrk*>(project.getItemByKey(key));
-        if(trk1 == 0)
+        CGisItemTrk *trk1 = dynamic_cast<CGisItemTrk*>(project.getItemByKey(key));
+        if(nullptr == trk1)
         {
             continue;
         }
diff --git a/src/gis/trk/CCombineTrk.h b/src/gis/trk/CCombineTrk.h
index dd54267..3bff716 100644
--- a/src/gis/trk/CCombineTrk.h
+++ b/src/gis/trk/CCombineTrk.h
@@ -39,7 +39,7 @@ public:
     }
 
 public slots:
-    void accept();
+    void accept() override;
 
 private slots:
     void slotSelectionChanged();
diff --git a/src/gis/trk/CCutTrk.cpp b/src/gis/trk/CCutTrk.cpp
index dad9c90..f061476 100644
--- a/src/gis/trk/CCutTrk.cpp
+++ b/src/gis/trk/CCutTrk.cpp
@@ -26,9 +26,9 @@ CCutTrk::CCutTrk(QWidget *parent)
 {
     setupUi(this);
 
-    connect(radioKeepFirst, SIGNAL(toggled(bool)), this, SLOT(slotClicked()));
-    connect(radioKeepBoth, SIGNAL(toggled(bool)), this, SLOT(slotClicked()));
-    connect(radioKeepSecond, SIGNAL(toggled(bool)), this, SLOT(slotClicked()));
+    connect(radioKeepFirst,  &QRadioButton::toggled, this, &CCutTrk::slotClicked);
+    connect(radioKeepBoth,   &QRadioButton::toggled, this, &CCutTrk::slotClicked);
+    connect(radioKeepSecond, &QRadioButton::toggled, this, &CCutTrk::slotClicked);
 
     SETTINGS;
     cfg.beginGroup("TrackCut");
diff --git a/src/gis/trk/CCutTrk.h b/src/gis/trk/CCutTrk.h
index 9501159..6f6d0fe 100644
--- a/src/gis/trk/CCutTrk.h
+++ b/src/gis/trk/CCutTrk.h
@@ -31,10 +31,10 @@ public:
 
     enum mode_e
     {
-        eModeNone           = 0
-        , eModeKeepFirst    = 1
-        , eModeKeepBoth     = 2
-        , eModeKeepSecond   = 4
+        eModeNone         = 0
+        , eModeKeepFirst  = 1
+        , eModeKeepBoth   = 2
+        , eModeKeepSecond = 4
     };
 
     mode_e getMode() const
@@ -48,7 +48,7 @@ public:
     }
 
 public slots:
-    void accept();
+    void accept() override;
 
 private slots:
     void slotClicked();
diff --git a/src/gis/trk/CDetailsTrk.cpp b/src/gis/trk/CDetailsTrk.cpp
index 6e9cd21..d2d1caf 100644
--- a/src/gis/trk/CDetailsTrk.cpp
+++ b/src/gis/trk/CDetailsTrk.cpp
@@ -19,9 +19,10 @@
 #include "gis/trk/CDetailsTrk.h"
 #include "gis/trk/CKnownExtension.h"
 #include "gis/trk/CPropertyTrk.h"
-#include "gis/trk/filter/CFilterInvalid.h"
 #include "gis/trk/filter/CFilterDelete.h"
+#include "gis/trk/filter/CFilterDeleteExtension.h"
 #include "gis/trk/filter/CFilterDouglasPeuker.h"
+#include "gis/trk/filter/CFilterInvalid.h"
 #include "gis/trk/filter/CFilterMedian.h"
 #include "gis/trk/filter/CFilterNewDate.h"
 #include "gis/trk/filter/CFilterObscureDate.h"
@@ -29,8 +30,11 @@
 #include "gis/trk/filter/CFilterReplaceElevation.h"
 #include "gis/trk/filter/CFilterReset.h"
 #include "gis/trk/filter/CFilterSpeed.h"
+#include "gis/trk/filter/CFilterSplitSegment.h"
 #include "helpers/CLinksDialog.h"
 #include "helpers/CSettings.h"
+#include "helpers/Signals.h"
+#include "plot/CPlot.h"
 #include "plot/CPlotProfile.h"
 #include "units/IUnit.h"
 #include "widgets/CTextEditWidget.h"
@@ -38,13 +42,43 @@
 #include <QtWidgets>
 #include <proj_api.h>
 
+#include <functional>
+
+using std::bind;
+
+/* base case: add the filter specified in template parameter */
+template<typename filter>
+static void addFilters(QTreeWidgetItem *itemGroup, CGisItemTrk& trk)
+{
+    QTreeWidgetItem *item = new QTreeWidgetItem(itemGroup);
+    itemGroup->treeWidget()->setItemWidget(item, /* column = */ 0, new filter(trk, itemGroup->treeWidget()));
+}
+
+template<typename filter1, typename filter2, typename ... remainingFilters>
+static void addFilters(QTreeWidgetItem *itemGroup, CGisItemTrk& trk)
+{
+    addFilters<filter1>(itemGroup, trk);
+    addFilters<filter2, remainingFilters ...>(itemGroup, trk);
+}
+
+template<typename ... filters>
+static void addFilterGroup(QTreeWidget *widget, CGisItemTrk& trk, const QString &groupText, const QString &groupIcon)
+{
+    QTreeWidgetItem *itemGroup = new QTreeWidgetItem(widget);
+    itemGroup->setIcon(/* column = */ 0, QIcon(groupIcon));
+    itemGroup->setText(/* column = */ 0, groupText);
+
+    addFilters<filters ...>(itemGroup, trk);
+}
+
 CDetailsTrk::CDetailsTrk(CGisItemTrk& trk, QWidget *parent)
     : QWidget(parent)
+    , INotifyTrk(CGisItemTrk::eVisualDetails)
     , trk(trk)
 {
     setupUi(this);
 
-    QPixmap icon(16,8);
+    QPixmap icon(14,14);
 
     for(int i=0; i < TRK_N_COLORS; ++i)
     {
@@ -54,9 +88,10 @@ CDetailsTrk::CDetailsTrk(CGisItemTrk& trk, QWidget *parent)
 
     widgetColorLayout->setAlignment(Qt::AlignTop);
 
-    int i = 0;
+    widgetColorActivity->setTrack(&trk);
+
     const CActivityTrk::desc_t* actDesc = CActivityTrk::getActivityDescriptors();
-    while(!actDesc[i].name.isEmpty())
+    for(int i = 0; !actDesc[i].name.isEmpty(); ++i)
     {
         const CActivityTrk::desc_t& desc = actDesc[i];
         QCheckBox * check = new QCheckBox(this);
@@ -67,200 +102,264 @@ CDetailsTrk::CDetailsTrk(CGisItemTrk& trk, QWidget *parent)
         check->setProperty("symbol", desc.iconLarge);
         check->setObjectName("check" + desc.objName);
 
-        connect(check, SIGNAL(clicked(bool)), this, SLOT(slotActivitySelected(bool)));
+        connect(check, &QCheckBox::clicked, this, &CDetailsTrk::slotActivitySelected);
 
-        layoutActivities->addWidget(check);
-
-        i++;
+        layoutActivities->addWidget(check, i%8, i>>3);
     }
-    layoutActivities->addItem(new QSpacerItem(0,0,QSizePolicy::Maximum, QSizePolicy::MinimumExpanding));
-
-
-
-    setupGui();
-
-    const CPropertyTrk * propHandler = trk.getPropertyHandler();
-    propHandler->fillComboBox(comboGraph2);
-    propHandler->fillComboBox(comboGraph3);
+    layoutActivities->addItem(new QSpacerItem(0,0,QSizePolicy::Maximum, QSizePolicy::MinimumExpanding),8,0);
 
-    plot1 = new CPlotProfile(&trk, IPlot::eModeNormal, this);
-    plot1->setMinimumSize(QSize(0, 100));
-    plot1->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding);
-    plot1->show();
-    layoutPlot->addWidget(plot1);
+    updateData();
 
-    plot2 = new CPlot(&trk, this);
-    plot2->setMinimumSize(QSize(0, 100));
-    plot2->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding);
-    plot2->show();
-    layoutPlot->addWidget(plot2);
+    plot1 = new CPlotProfile(&trk, trk.limitsGraph1, IPlot::eModeNormal, this);
+    plot2 = new CPlot(&trk, trk.limitsGraph2, this);
+    plot3 = new CPlot(&trk, trk.limitsGraph3, this);
 
-    plot3 = new CPlot(&trk, this);
-    plot3->setMinimumSize(QSize(0, 100));
-    plot3->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding);
-    plot3->show();
-    layoutPlot->addWidget(plot3);
+    for(IPlot *plot : { static_cast<IPlot*>(plot1), static_cast<IPlot*>(plot2), static_cast<IPlot*>(plot3) })
+    {
+        plot->setMinimumSize(QSize(0, 100));
+        plot->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding);
+        plot->show();
+        layoutPlot->addWidget(plot);
+    }
 
     if(trk.isOnDevice())
     {
         toolLock->setDisabled(true);
     }
 
-    QTreeWidgetItem * item, * item0;
-    item0 = new QTreeWidgetItem(treeFilter);
-    item0->setIcon(0, QIcon("://icons/48x48/PointHide.png"));
-    item0->setText(0, tr("Reduce visible track points"));
+    SETTINGS;
+    cfg.beginGroup("TrackDetails");
+    checkGraph1->setChecked(cfg.value("showGraph1", true).toBool());
+    checkGraph2->setChecked(cfg.value("showGraph2", true).toBool());
+    checkGraph3->setChecked(cfg.value("showGraph3", true).toBool());
+    splitter->restoreState (cfg.value("splitterSizes").toByteArray());
+    treeWidget->header()->restoreState(cfg.value("trackPointListState").toByteArray());
+    tabWidget->setCurrentIndex(cfg.value("visibleTab", 0).toInt());
+    cfg.endGroup();
 
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterDouglasPeuker(trk, treeFilter));
+    connect(checkGraph1,      &QCheckBox::clicked,                 this, &CDetailsTrk::slotShowPlots);
+    connect(checkGraph2,      &QCheckBox::clicked,                 this, &CDetailsTrk::slotShowPlots);
+    connect(checkGraph3,      &QCheckBox::clicked,                 this, &CDetailsTrk::slotShowPlots);
 
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterInvalid(trk, treeFilter));
+    connect(toolLock,         &QToolButton::toggled,               this, &CDetailsTrk::slotChangeReadOnlyMode);
+    connect(treeWidget,       &QTreeWidget::itemSelectionChanged,  this, &CDetailsTrk::slotItemSelectionChanged);
+    connect(textCmtDesc,      &QTextBrowser::anchorClicked,        this, &CDetailsTrk::slotLinkActivated);
 
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterReset(trk, treeFilter));
+    connect(lineName,         &QLineEdit::textEdited,              this, &CDetailsTrk::slotNameChanged);
+    connect(lineName,         &QLineEdit::editingFinished,         this, &CDetailsTrk::slotNameChangeFinished);
 
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterDelete(trk, treeFilter));
+    connect(plot1,            &CPlot::sigMouseClickState,          this, &CDetailsTrk::slotMouseClickState);
+    connect(plot2,            &CPlot::sigMouseClickState,          this, &CDetailsTrk::slotMouseClickState);
+    connect(plot3,            &CPlot::sigMouseClickState,          this, &CDetailsTrk::slotMouseClickState);
 
-    item0 = new QTreeWidgetItem(treeFilter);
-    item0->setIcon(0, QIcon("://icons/48x48/SetEle.png"));
-    item0->setText(0, tr("Change elevation of track points"));
+    connect(spinLineWidth,    static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged), this, &CDetailsTrk::slotLineWidth);
+    connect(checkWithArrows,  &QCheckBox::toggled, this, &CDetailsTrk::slotWithArrows);
 
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterMedian(trk, treeFilter));
+    setupStyleLimits(trk.colorSourceLimit, toolLimitAutoStyle, toolLimitUsrStyle, toolLimitSysStyle, spinLimitLow, spinLimitHigh);
 
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterReplaceElevation(trk, treeFilter));
+    connect(toolUserLineWith, &QToolButton::toggled, this, &CDetailsTrk::slotLineWidthMode);
+    connect(toolUserArrow,    &QToolButton::toggled, this, &CDetailsTrk::slotWithArrowsMode);
 
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterOffsetElevation(trk, treeFilter));
+    connect(listHistory,      &CHistoryListWidget::sigChanged, this, &CDetailsTrk::updateData);
 
-    item0 = new QTreeWidgetItem(treeFilter);
-    item0->setIcon(0, QIcon("://icons/48x48/Time.png"));
-    item0->setText(0, tr("Change timestamp of track points"));
+    connect(comboColor,       static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &CDetailsTrk::slotColorChanged);
+    connect(comboColorSource, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &CDetailsTrk::slotColorSourceChanged);
+    connect(comboGraph2,      static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &CDetailsTrk::slotSetupGraph);
+    connect(comboGraph3,      static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &CDetailsTrk::slotSetupGraph);
 
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterNewDate(trk, treeFilter));
+    setupGraphLimits(trk.limitsGraph1, toolLimitAutoGraph1, toolLimitUsrGraph1, toolLimitSysGraph1, spinMinGraph1, spinMaxGraph1);
+    setupGraphLimits(trk.limitsGraph2, toolLimitAutoGraph2, toolLimitUsrGraph2, toolLimitSysGraph2, spinMinGraph2, spinMaxGraph2);
+    setupGraphLimits(trk.limitsGraph3, toolLimitAutoGraph3, toolLimitUsrGraph3, toolLimitSysGraph3, spinMinGraph3, spinMaxGraph3);
 
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterObscureDate(trk, treeFilter));
+    // setting up the graph properties will trigger the signals
+    // this is good because the signals are connected at this point
+    // invoking the slots
+    loadGraphSource(comboGraph2, 2, CKnownExtension::internalSpeed);
+    loadGraphSource(comboGraph3, 3, CKnownExtension::internalProgress);
 
-    item = new QTreeWidgetItem(item0);
-    treeFilter->setItemWidget(item,0, new CFilterSpeed(trk, treeFilter));
+    addFilterGroup<CFilterDouglasPeuker, CFilterInvalid, CFilterReset, CFilterDelete>
+        (treeFilter, trk, tr("Reduce visible track points"), "://icons/48x48/PointHide.png");
 
-    item0 = new QTreeWidgetItem(treeFilter);
-    item0->setIcon(0, QIcon("://icons/48x48/TrkCut.png"));
-    item0->setText(0, tr("Cut track into pieces"));
+    addFilterGroup<CFilterMedian, CFilterReplaceElevation, CFilterOffsetElevation>
+        (treeFilter, trk, tr("Change elevation of track points"), "://icons/48x48/SetEle.png");
 
+    addFilterGroup<CFilterNewDate, CFilterObscureDate, CFilterSpeed>
+        (treeFilter, trk, tr("Change timestamp of track points"), "://icons/48x48/Time.png");
+
+    addFilterGroup<CFilterDeleteExtension>
+        (treeFilter, trk, tr("Modify track points' extensions"), "://icons/48x48/FilterModifyExtension.png");
+
+    addFilterGroup<CFilterSplitSegment>
+        (treeFilter, trk, tr("Cut track into pieces"), "://icons/48x48/TrkCut.png");
+
+
+    slotShowPlots();
+}
+
+CDetailsTrk::~CDetailsTrk()
+{
     SETTINGS;
     cfg.beginGroup("TrackDetails");
-    checkGraph1->setChecked(cfg.value("showGraph1", true).toBool());
-    checkGraph2->setChecked(cfg.value("showGraph2", true).toBool());
-    checkGraph3->setChecked(cfg.value("showGraph3", true).toBool());
-    splitter->restoreState   (cfg.value("splitterSizes").toByteArray());
-    treeWidget->header()->restoreState(cfg.value("trackPointListState").toByteArray());
-    tabWidget->setCurrentIndex(cfg.value("visibleTab", 0).toInt());
+    cfg.setValue("showGraph1",          checkGraph1->isChecked());
+    cfg.setValue("showGraph2",          checkGraph2->isChecked());
+    cfg.setValue("showGraph3",          checkGraph3->isChecked());
+    cfg.setValue("splitterSizes",       splitter->saveState());
+    cfg.setValue("trackPointListState", treeWidget->header()->saveState());
+    cfg.setValue("visibleTab",          tabWidget->currentIndex());
     cfg.endGroup();
 
-    connect(checkGraph1, SIGNAL(clicked()), this, SLOT(slotShowPlots()));
-    connect(checkGraph2, SIGNAL(clicked()), this, SLOT(slotShowPlots()));
-    connect(checkGraph3, SIGNAL(clicked()), this, SLOT(slotShowPlots()));
-    connect(comboColor,       SIGNAL(currentIndexChanged(int)),   this, SLOT(slotColorChanged(int)));
-    connect(toolLock,         SIGNAL(toggled(bool)),              this, SLOT(slotChangeReadOnlyMode(bool)));
-    connect(treeWidget,       SIGNAL(itemSelectionChanged()),     this, SLOT(slotItemSelectionChanged()));
-    connect(textCmtDesc,      SIGNAL(anchorClicked(QUrl)),        this, SLOT(slotLinkActivated(QUrl)));
-    connect(labelInfo,        SIGNAL(linkActivated(QString)),     this, SLOT(slotLinkActivated(QString)));
+    saveGraphSource(comboGraph2, 2);
+    saveGraphSource(comboGraph3, 3);
+}
+
+void CDetailsTrk::slotSetLimitModeStyle(CLimit::mode_e mode, bool on)
+{
+    if(!on)
+    {
+        return;
+    }
 
-    connect(plot3, SIGNAL(sigMouseClickState(int)), this, SLOT(slotMouseClickState(int)));
-    connect(plot1, SIGNAL(sigMouseClickState(int)), this, SLOT(slotMouseClickState(int)));
-    connect(plot2, SIGNAL(sigMouseClickState(int)), this, SLOT(slotMouseClickState(int)));
-    connect(comboColorSource, SIGNAL(currentIndexChanged(int)),   this, SLOT(slotColorSourceChanged(int)));
-    connect(spinLimitHigh,    SIGNAL(valueChangedByStep(double)), this, SLOT(slotColorLimitHighChanged()));
-    connect(spinLimitHigh,    SIGNAL(editingFinished()),          this, SLOT(slotColorLimitHighChanged()));
-    connect(spinLimitLow,     SIGNAL(valueChangedByStep(double)), this, SLOT(slotColorLimitLowChanged()));
-    connect(spinLimitLow,     SIGNAL(editingFinished()),          this, SLOT(slotColorLimitLowChanged()));
+    CLimit &limit = trk.colorSourceLimit;
+    limit.setMode(mode);
 
-    connect(btnMaxFromData,   SIGNAL(clicked()),                  this, SLOT(slotLimitHighFromData()));
-    connect(btnMinFromData,   SIGNAL(clicked()),                  this, SLOT(slotLimitLowFromData()));
+    widgetColorLabel->setMinimum(limit.getMin());
+    widgetColorLabel->setMaximum(limit.getMax());
 
-    connect(listHistory,      SIGNAL(sigChanged()),               this, SLOT(setupGui()));
+    trk.updateHistory(CGisItemTrk::eVisualColorLegend | CGisItemTrk::eVisualDetails);
+}
 
-    connect(comboGraph2, SIGNAL(currentIndexChanged(int)), this, SLOT(slotSetupGraph(int)));
-    connect(comboGraph3, SIGNAL(currentIndexChanged(int)), this, SLOT(slotSetupGraph(int)));
+void CDetailsTrk::setupGraphLimits(CLimit& limit, QToolButton * toolLimitAutoGraph, QToolButton * toolLimitUsrGraph, QToolButton * toolLimitSysGraph, QDoubleSpinBox * spinMinGraph, QDoubleSpinBox * spinMaxGraph)
+{
+    bool isAutoMode = (limit.getMode() == CLimit::eModeAuto);
 
-    // setting up the graph properties will trigger the signals
-    // this is good because the signals are connected at this point
-    // invoking the slots
-    cfg.beginGroup("TrackDetails");
-    i = comboGraph2->findData(cfg.value("propGraph2","speed").toString());
-    if(i != NOIDX)
+    spinMinGraph->setDisabled(isAutoMode);
+    spinMinGraph->setSuffix(limit.getUnit());
+    spinMinGraph->setValue(limit.getMin());
+
+    spinMaxGraph->setDisabled(isAutoMode);
+    spinMaxGraph->setSuffix(limit.getUnit());
+    spinMaxGraph->setValue(limit.getMax());
+
+    switch(limit.getMode())
     {
-        comboGraph2->setCurrentIndex(i);
+    case CLimit::eModeUser:
+        toolLimitUsrGraph->setChecked(true);
+        break;
+
+    case CLimit::eModeAuto:
+        toolLimitAutoGraph->setChecked(true);
+        break;
+
+    case CLimit::eModeSys:
+        toolLimitSysGraph->setChecked(true);
+        break;
     }
 
-    i = comboGraph3->findData(cfg.value("propGraph3","progress").toString());
-    if(i != NOIDX)
+    connect(toolLimitAutoGraph, &QToolButton::toggled, spinMinGraph, &QDoubleSpinBox::setDisabled);
+    connect(toolLimitAutoGraph, &QToolButton::toggled, spinMaxGraph, &QDoubleSpinBox::setDisabled);
+
+    /* creates "lambdas" which look like:
+     *   (bool on) { slotSetLimitModeGraph(CLimit::eModeAuto, &limit, spinMinGraph, spinMaxGraph, on); }
+     */
+    auto limitAutoFunc = bind(&CDetailsTrk::slotSetLimitModeGraph, this, CLimit::eModeAuto, &limit, spinMinGraph, spinMaxGraph, std::placeholders::_1);
+    auto limitUserFunc = bind(&CDetailsTrk::slotSetLimitModeGraph, this, CLimit::eModeUser, &limit, spinMinGraph, spinMaxGraph, std::placeholders::_1);
+    auto limitSysFunc  = bind(&CDetailsTrk::slotSetLimitModeGraph, this, CLimit::eModeSys,  &limit, spinMinGraph, spinMaxGraph, std::placeholders::_1);
+
+    connect(toolLimitAutoGraph, &QToolButton::toggled, limitAutoFunc);
+    connect(toolLimitUsrGraph,  &QToolButton::toggled, limitUserFunc);
+    connect(toolLimitSysGraph,  &QToolButton::toggled, limitSysFunc);
+
+    connect(spinMinGraph, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged), &limit, &CLimit::setMin);
+    connect(spinMaxGraph, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged), &limit, &CLimit::setMax);
+
+    auto limitChangedFunc = bind(&CDetailsTrk::setupLimits, this, &limit, spinMinGraph, spinMaxGraph);
+    connect(&limit, &CLimit::sigChanged, limitChangedFunc);
+}
+
+void CDetailsTrk::setupStyleLimits(CLimit& limit, QToolButton *toolLimitAuto, QToolButton *toolLimitUsr, QToolButton *toolLimitSys, CDoubleSpinBox *spinMin, CDoubleSpinBox *spinMax)
+{
+    bool isAutoMode = (limit.getMode() == CLimit::eModeAuto);
+
+    spinMin->setDisabled(isAutoMode);
+    spinMin->setSuffix(limit.getUnit());
+    spinMin->setValue(limit.getMin());
+
+    spinMax->setDisabled(isAutoMode);
+    spinMax->setSuffix(limit.getUnit());
+    spinMax->setValue(limit.getMax());
+
+    switch(limit.getMode())
     {
-        comboGraph3->setCurrentIndex(i);
+    case CLimit::eModeUser:
+        toolLimitUsr->setChecked(true);
+        break;
+
+    case CLimit::eModeAuto:
+        toolLimitAuto->setChecked(true);
+        break;
+
+    case CLimit::eModeSys:
+        toolLimitSys->setChecked(true);
+        break;
     }
-    cfg.endGroup();
 
+    connect(toolLimitAuto, &QToolButton::toggled, spinMax, &QDoubleSpinBox::setDisabled);
+    connect(toolLimitAuto, &QToolButton::toggled, spinMin, &QDoubleSpinBox::setDisabled);
 
-    slotShowPlots();
+    connect(toolLimitAuto, &QToolButton::toggled, bind(&CDetailsTrk::slotSetLimitModeStyle, this, CLimit::eModeAuto, std::placeholders::_1));
+    connect(toolLimitUsr,  &QToolButton::toggled, bind(&CDetailsTrk::slotSetLimitModeStyle, this, CLimit::eModeUser, std::placeholders::_1));
+    connect(toolLimitSys,  &QToolButton::toggled, bind(&CDetailsTrk::slotSetLimitModeStyle, this, CLimit::eModeSys,  std::placeholders::_1));
+
+    connect(spinMax,       &CDoubleSpinBox::valueChangedByStep, this, &CDetailsTrk::slotColorLimitHighChanged);
+    connect(spinMax,       &CDoubleSpinBox::editingFinished,    this, &CDetailsTrk::slotColorLimitHighChanged);
+    connect(spinMin,       &CDoubleSpinBox::valueChangedByStep, this, &CDetailsTrk::slotColorLimitLowChanged);
+    connect(spinMin,       &CDoubleSpinBox::editingFinished,    this, &CDetailsTrk::slotColorLimitLowChanged);
+
+    auto limitChangedFunc = bind(&CDetailsTrk::setupLimits, this, &limit, spinMin, spinMax);
+    connect(&limit,        &CLimit::sigChanged, limitChangedFunc);
 }
 
-CDetailsTrk::~CDetailsTrk()
+void CDetailsTrk::loadGraphSource(QComboBox * comboBox, qint32 n, const QString cfgDefault)
 {
+    const CPropertyTrk * p = trk.getPropertyHandler();
+
+    comboBox->blockSignals(true);
+    p->fillComboBox(comboBox);
+    comboBox->blockSignals(false);
+
+    // try to restore last graph setup
+    // signals are unblocked by now changing the combobox will trigger a graph update
     SETTINGS;
     cfg.beginGroup("TrackDetails");
-    cfg.setValue("showGraph1", checkGraph1->isChecked());
-    cfg.setValue("showGraph2", checkGraph2->isChecked());
-    cfg.setValue("showGraph3", checkGraph3->isChecked());
-
-    if(comboGraph2->currentIndex() != 0)
-    {
-        cfg.setValue("propGraph2", comboGraph2->currentData().toString());
-    }
-    if(comboGraph3->currentIndex() != 0)
+    int i = comboBox->findData(cfg.value(QString("propGraph%1").arg(n),cfgDefault).toString());
+    if(i != NOIDX)
     {
-        cfg.setValue("propGraph3", comboGraph3->currentData().toString());
+        comboBox->setCurrentIndex(i);
     }
-
-    cfg.setValue("splitterSizes",       splitter->saveState());
-    cfg.setValue("trackPointListState", treeWidget->header()->saveState());
-    cfg.setValue("visibleTab", tabWidget->currentIndex());
     cfg.endGroup();
 }
 
-void CDetailsTrk::slotLimitLowFromData()
+void CDetailsTrk::saveGraphSource(QComboBox * comboBox, qint32 n)
 {
-    qreal min, max;
-    trk.getExtrema(min, max, trk.getColorizeSource());
-    spinLimitLow->setValue(min);
-    slotColorLimitLowChanged();
-    slotColorLimitHighChanged();
+    SETTINGS;
+    cfg.beginGroup("TrackDetails");
+    if(comboBox->currentIndex() != 0)
+    {
+        cfg.setValue(QString("propGraph%1").arg(n), comboBox->currentData().toString());
+    }
+    cfg.endGroup();
 }
 
-void CDetailsTrk::slotLimitHighFromData()
-{
-    qreal min, max;
-    trk.getExtrema(min, max, trk.getColorizeSource());
-    spinLimitHigh->setValue(max);
-    slotColorLimitHighChanged();
-    slotColorLimitLowChanged();
-}
 
-void CDetailsTrk::setupGui()
+void CDetailsTrk::updateData()
 {
     if(originator)
     {
         return;
     }
-    CCanvas::setOverrideCursor(Qt::WaitCursor, "CDetailsTrk::setupGui");
+    CCanvas::setOverrideCursor(Qt::WaitCursor, "CDetailsTrk::updateData");
     originator = true;
 
-    QString str, val, unit;
     bool isReadOnly = trk.isReadOnly();
 
     tabWidget->widget(eTabFilter)->setEnabled(!isReadOnly);
@@ -268,16 +367,21 @@ void CDetailsTrk::setupGui()
 
     labelTainted->setVisible(trk.isTainted());
 
-    labelInfo->setText(trk.getInfo(true));
+    labelInfo->setText(trk.getInfo(false));
     comboColor->setCurrentIndex(trk.getColorIdx());
     toolLock->setChecked(isReadOnly);
 
+    lineName->setText(trk.getName());
+    lineName->setReadOnly(isReadOnly);
+
     QList<QTreeWidgetItem*> items;
     const CGisItemTrk::trk_t& t = trk.getTrackData();
     foreach (const CGisItemTrk::trkseg_t& seg, t.segs)
     {
         foreach(const CGisItemTrk::trkpt_t& trkpt, seg.pts)
         {
+            QString val, unit;
+
             QTreeWidgetItem * item = new QTreeWidgetItem();
             item->setTextAlignment(eColNum,     Qt::AlignLeft);
             item->setTextAlignment(eColEle,     Qt::AlignRight);
@@ -294,25 +398,21 @@ void CDetailsTrk::setupGui()
             }
 
             item->setText(eColNum,QString::number(trkpt.idxTotal));
-            if(trkpt.time.isValid())
-            {
-                item->setText(eColTime, IUnit::self().datetime2string(trkpt.time, true, QPointF(trkpt.lon, trkpt.lat)*DEG_TO_RAD));
-            }
-            else
-            {
-                item->setText(eColTime, "-");
-            }
+
+            item->setText(eColTime, trkpt.time.isValid()
+                          ? IUnit::self().datetime2string(trkpt.time, true, QPointF(trkpt.lon, trkpt.lat)*DEG_TO_RAD)
+                          : "-"
+                          );
 
             if(trkpt.ele != NOINT)
             {
                 IUnit::self().meter2elevation(trkpt.ele, val, unit);
-                str = tr("%1 %2").arg(val).arg(unit);
+                item->setText(eColEle, tr("%1 %2").arg(val).arg(unit));
             }
             else
             {
-                str = "-";
+                item->setText(eColEle, "-");
             }
-            item->setText(eColEle,str);
 
             IUnit::self().meter2distance(trkpt.deltaDistance, val, unit);
             item->setText(eColDelta, tr("%1 %2").arg(val).arg(unit));
@@ -320,27 +420,21 @@ void CDetailsTrk::setupGui()
             IUnit::self().meter2distance(trkpt.distance, val, unit);
             item->setText(eColDist, tr("%1 %2").arg(val).arg(unit));
 
-            // speed
             if(trkpt.speed != NOFLOAT)
             {
                 IUnit::self().meter2speed(trkpt.speed, val, unit);
-                str = tr("%1 %2").arg(val).arg(unit);
+                item->setText(eColSpeed, tr("%1 %2").arg(val).arg(unit));
             }
             else
             {
-                str = "-";
+                item->setText(eColSpeed, "-");
             }
-            item->setText(eColSpeed,str);
 
-            if(trkpt.slope1 != NOFLOAT)
-            {
-                str = QString("%1°(%2%)").arg(trkpt.slope1,2,'f',0).arg(trkpt.slope2,2,'f',0);
-            }
-            else
-            {
-                str = "-";
-            }
-            item->setText(eColSlope,str);
+            item->setText(eColSlope,
+                          (trkpt.slope1 != NOFLOAT)
+                          ? QString("%1°(%2%)").arg(trkpt.slope1, 2, 'f', 0).arg(trkpt.slope2, 2, 'f', 0)
+                          : "-"
+                          );
 
             IUnit::self().meter2elevation(trkpt.ascend, val, unit);
             item->setText(eColAscend, tr("%1 %2").arg(val).arg(unit));
@@ -348,6 +442,7 @@ void CDetailsTrk::setupGui()
             item->setText(eColDescend, tr("%1 %2").arg(val).arg(unit));
 
             // position
+            QString str;
             IUnit::degToStr(trkpt.lon, trkpt.lat, str);
             item->setText(eColPosition,str);
 
@@ -366,22 +461,18 @@ void CDetailsTrk::setupGui()
 
     quint32 flags = trk.getActivities().getAllFlags();
 
-    int i = 0;
     const CActivityTrk::desc_t* actDesc = CActivityTrk::getActivityDescriptors();
-    while(!actDesc[i].objName.isEmpty())
+    for(int i = 0; !actDesc[i].objName.isEmpty(); ++i)
     {
         const CActivityTrk::desc_t& desc = actDesc[i];
-
         QCheckBox * check = findChild<QCheckBox*>("check" + desc.objName);
-        if(check)
+        if(nullptr != check)
         {
             check->setChecked((flags & desc.flag) == desc.flag);
         }
-
-        i++;
     }
 
-    str.clear();
+    QString str;
     trk.getActivities().printSummary(str);
     labelActivityInfo->setText(str);
 
@@ -393,7 +484,7 @@ void CDetailsTrk::setupGui()
     listHistory->setupHistory(trk);
 
     QTabWidget * tabWidget = dynamic_cast<QTabWidget*>(parentWidget() ? parentWidget()->parentWidget() : 0);
-    if(tabWidget)
+    if(nullptr != tabWidget)
     {
         int idx = tabWidget->indexOf(this);
         if(idx != NOIDX)
@@ -403,10 +494,18 @@ void CDetailsTrk::setupGui()
         }
     }
 
-    comboColorSource->blockSignals(true);
+    X______________BlockAllSignals______________X(this);
+
+    spinLineWidth->setValue(trk.lineScale.val().toDouble());
+    toolUserLineWith->setChecked(trk.lineScale.getMode() == CValue::eModeUser);
+
+    checkWithArrows->setChecked(trk.showArrows.val().toBool());
+    toolUserArrow->setChecked(trk.showArrows.getMode() == CValue::eModeUser);
+
     comboColorSource->clear();
     // the first entry `solid color`, it is always available
-    comboColorSource->addItem(QIcon("://icons/32x32/CSrcSolid.png"), tr("Solid color"));
+    comboColorSource->addItem(QIcon("://icons/32x32/CSrcSolid.png"), tr("Color"));
+    comboColorSource->addItem(QIcon("://icons/32x32/Activity.png"), tr("Activity"), "activity");
     foreach(const QString &key, trk.getExistingDataSources())
     {
         const CKnownExtension &ext = CKnownExtension::get(key);
@@ -416,79 +515,64 @@ void CDetailsTrk::setupGui()
     int currentIdx = comboColorSource->findData(trk.getColorizeSource());
     if(-1 == currentIdx)
     {
+        trk.setColorizeSource(QString());
         currentIdx = 0;
     }
     comboColorSource->setCurrentIndex(currentIdx);
-    comboColorSource->blockSignals(false);
 
-    bool enabled = (0 < currentIdx);
+    QString source = comboColorSource->currentData().toString();
+    bool enabledColorize = !source.isEmpty() && (source != "activity");
+    bool enabledActivity = source == "activity";
 
-    spinLimitLow->setEnabled    (enabled);
-    spinLimitHigh->setEnabled   (enabled);
-    widgetColorLabel->setEnabled(enabled);
-    btnMinFromData->setEnabled  (enabled);
-    btnMaxFromData->setEnabled  (enabled);
+    comboColor->setVisible(!(enabledColorize||enabledActivity));
+    widgetColorLabel->setVisible(enabledColorize);
+    widgetColorLabel->setEnabled(enabledColorize);
+    toolLimitAutoStyle->setEnabled(enabledColorize);
+    toolLimitUsrStyle->setEnabled(enabledColorize);
+    toolLimitSysStyle->setEnabled(enabledColorize);
 
-    if(enabled)
+    if(enabledColorize)
     {
         const CKnownExtension &ext = CKnownExtension::get(comboColorSource->itemData(currentIdx).toString());
 
-        spinLimitLow->blockSignals(true);
         spinLimitLow->setMinimum(ext.minimum);
         spinLimitLow->setMaximum(ext.maximum);
         spinLimitLow->setSuffix (ext.unit);
         spinLimitLow->setValue  (trk.getColorizeLimitLow());
-        spinLimitLow->blockSignals(false);
 
-        spinLimitHigh->blockSignals(true);
         spinLimitHigh->setMinimum(ext.minimum);
         spinLimitHigh->setMaximum(ext.maximum);
         spinLimitHigh->setSuffix (ext.unit);
         spinLimitHigh->setValue  (trk.getColorizeLimitHigh());
-        spinLimitHigh->blockSignals(false);
 
         widgetColorLabel->setMinimum(spinLimitLow->value());
         widgetColorLabel->setMaximum(spinLimitHigh->value());
         widgetColorLabel->setUnit(ext.unit);
     }
 
+    widgetColorActivity->setVisible(enabledActivity);
+    widgetColorActivity->setEnabled(enabledActivity);
 
-    // refill comboboxes to select track property to be displayed by graphs
-    const CPropertyTrk * p = trk.getPropertyHandler();
 
-    comboGraph2->blockSignals(true);
-    p->fillComboBox(comboGraph2);
-    comboGraph2->blockSignals(false);
+    // refill comboboxes to select track property to be displayed by graphs
+    loadGraphSource(comboGraph2, 2, CKnownExtension::internalSpeed);
+    loadGraphSource(comboGraph3, 3, CKnownExtension::internalProgress);
 
-    comboGraph3->blockSignals(true);
-    p->fillComboBox(comboGraph3);
-    comboGraph3->blockSignals(false);
+    X_____________UnBlockAllSignals_____________X(this);
 
-    // try to restore last graph setup
-    // signals are unblocked by now changing the combobox will trigger a graph update
-    SETTINGS;
-    cfg.beginGroup("TrackDetails");
-    i = comboGraph2->findData(cfg.value("propGraph2","speed").toString());
-    if(i != NOIDX)
+    CFilterDeleteExtension *filter = treeFilter->findChild<CFilterDeleteExtension*>();
+    if(nullptr != filter)
     {
-        comboGraph2->setCurrentIndex(i);
+        filter->update();
     }
 
-    i = comboGraph3->findData(cfg.value("propGraph3","progress").toString());
-    if(i != NOIDX)
-    {
-        comboGraph3->setCurrentIndex(i);
-    }
-    cfg.endGroup();
-
-
     originator = false;
-    CCanvas::restoreOverrideCursor("CDetailsTrk::setupGui");
+    CCanvas::restoreOverrideCursor("CDetailsTrk::updateData");
 }
 
 void CDetailsTrk::setMouseFocus(const CGisItemTrk::trkpt_t * pt)
 {
-    if(pt != 0)
+    if(nullptr != pt)
     {
         plotTrack->setMouseFocus(pt->lon, pt->lat);
         labelInfoTrkPt->setText(trk.getInfoTrkPt(*pt));
@@ -501,21 +585,14 @@ void CDetailsTrk::setMouseFocus(const CGisItemTrk::trkpt_t * pt)
     }
 }
 
-void CDetailsTrk::setMouseRangeFocus(const CGisItemTrk::trkpt_t * pt1, const CGisItemTrk::trkpt_t * pt2)
+void CDetailsTrk::setMouseRangeFocus(const CGisItemTrk::trkpt_t *pt1, const CGisItemTrk::trkpt_t *pt2)
 {
-    if(pt1 && pt2)
-    {
-        labelInfoRange->setText(trk.getInfoRange(*pt1, *pt2));
-    }
-    else
-    {
-        labelInfoRange->setText("-\n-");
-    }
+    labelInfoRange->setText( (pt1 && pt2) ? trk.getInfoRange(*pt1, *pt2) : "-\n-" );
 }
 
-void CDetailsTrk::setMouseClickFocus(const CGisItemTrk::trkpt_t * pt)
+void CDetailsTrk::setMouseClickFocus(const CGisItemTrk::trkpt_t *pt)
 {
-    if(pt != 0)
+    if(nullptr != pt)
     {
         treeWidget->blockSignals(true);
         treeWidget->setCurrentItem(treeWidget->topLevelItem(pt->idxTotal));
@@ -528,12 +605,42 @@ void CDetailsTrk::slotMouseClickState(int s)
     if(s == IPlot::eMouseClickIdle)
     {
         labelInfoRange->setText("-\n-");
-        plot3->setMouseRangeFocus(0,0);
-        plot1->setMouseRangeFocus(0,0);
-        plot2->setMouseRangeFocus(0,0);
+        plot3->setMouseRangeFocus(0, 0);
+        plot1->setMouseRangeFocus(0, 0);
+        plot2->setMouseRangeFocus(0, 0);
+    }
+}
+
+void CDetailsTrk::slotNameChanged(const QString &name)
+{
+    QTabWidget *tabWidget = dynamic_cast<QTabWidget*>(parentWidget() ? parentWidget()->parentWidget() : nullptr);
+    if(nullptr != tabWidget)
+    {
+        int idx = tabWidget->indexOf(this);
+        if(idx != NOIDX)
+        {
+            const QString shownName = name.isEmpty() ? CGisItemTrk::noName : QString(name).replace('&', "&&");
+            setObjectName(shownName);
+            tabWidget->setTabText(idx, shownName);
+        }
+    }
+}
+
+void CDetailsTrk::slotNameChangeFinished()
+{
+    lineName->clearFocus();
+
+    const QString& name = lineName->text();
+    slotNameChanged(name);
+
+    if(name != trk.getName())
+    {
+        trk.setName(name);
+        updateData();
     }
 }
 
+
 void CDetailsTrk::slotShowPlots()
 {
     plot1->setVisible(checkGraph1->isChecked());
@@ -549,10 +656,10 @@ void CDetailsTrk::slotColorChanged(int idx)
     }
 }
 
-void CDetailsTrk::slotColorSourceChanged(int idx, float valueLow, float valueHigh)
+void CDetailsTrk::slotColorSourceChanged(int idx)
 {
     trk.setColorizeSource(comboColorSource->itemData(idx).toString());
-    setupGui();
+    updateData();
 }
 
 void CDetailsTrk::slotColorLimitHighChanged()
@@ -560,11 +667,6 @@ void CDetailsTrk::slotColorLimitHighChanged()
     const double val = spinLimitHigh->value();
     trk.setColorizeLimitHigh(val);
     widgetColorLabel->setMaximum(val);
-
-    if(spinLimitLow->value() >= val)
-    {
-        spinLimitLow->setValue(val - .1f);
-    }
 }
 
 void CDetailsTrk::slotColorLimitLowChanged()
@@ -572,44 +674,28 @@ void CDetailsTrk::slotColorLimitLowChanged()
     const double val = spinLimitLow->value();
     trk.setColorizeLimitLow(val);
     widgetColorLabel->setMinimum(val);
-
-    if(spinLimitHigh->value() <= val)
-    {
-        spinLimitHigh->setValue(val + .1f);
-    }
 }
 
 void CDetailsTrk::slotChangeReadOnlyMode(bool on)
 {
     trk.setReadOnlyMode(on);
-    setupGui();
+    // as setReadOnlyMode() is a method of IGisItem it will bypass updateHistory() of the track
+    // Therefore we have to call updateVisuals() explicitely.
+    trk.updateVisuals(CGisItemTrk::eVisualProject, "CDetailsTrk::slotChangeReadOnlyMode()");
+    updateData();
 }
 
 
 void CDetailsTrk::slotItemSelectionChanged()
 {
     QTreeWidgetItem * item = treeWidget->currentItem();
-    if(item != 0)
+    if(nullptr != item)
     {
         quint32 idx = item->text(eColNum).toUInt();
         trk.setMouseFocusByTotalIndex(idx, CGisItemTrk::eFocusMouseMove, "CDetailsTrk");
     }
 }
 
-void CDetailsTrk::slotLinkActivated(const QString& url)
-{
-    if(url == "name")
-    {
-        QString name = QInputDialog::getText(this, tr("Edit name..."), tr("Enter new track name."), QLineEdit::Normal, trk.getName());
-        if(name.isEmpty())
-        {
-            return;
-        }
-        trk.setName(name);
-        setupGui();
-    }
-}
-
 void CDetailsTrk::slotLinkActivated(const QUrl& url)
 {
     if(url.toString() == "comment")
@@ -620,7 +706,7 @@ void CDetailsTrk::slotLinkActivated(const QUrl& url)
         {
             trk.setComment(dlg.getHtml());
         }
-        setupGui();
+        updateData();
     }
     else if(url.toString() == "description")
     {
@@ -630,7 +716,7 @@ void CDetailsTrk::slotLinkActivated(const QUrl& url)
         {
             trk.setDescription(dlg.getHtml());
         }
-        setupGui();
+        updateData();
     }
     else if(url.toString() == "links")
     {
@@ -640,7 +726,7 @@ void CDetailsTrk::slotLinkActivated(const QUrl& url)
         {
             trk.setLinks(links);
         }
-        setupGui();
+        updateData();
     }
     else
     {
@@ -654,40 +740,85 @@ void CDetailsTrk::slotActivitySelected(bool checked)
     {
         if(QMessageBox::warning(this, tr("Reset activities..."), tr("This will remove all activities from the track. Proceed?"), QMessageBox::Ok|QMessageBox::No, QMessageBox::Ok) != QMessageBox::Ok)
         {
-            setupGui();
-            return;
+            updateData();
+        }
+        else
+        {
+            trk.setActivity(CGisItemTrk::trkpt_t::eActNone, tr("None"), "://icons/48x48/ActNone.png");
         }
-
-        trk.setActivity(CGisItemTrk::trkpt_t::eActNone, tr("None"), "://icons/48x48/ActNone.png");
-        return;
     }
-
-    QObject * s = sender();
-    bool ok = false;
-    quint32 flag = s->property("flag").toUInt(&ok);
-    if(ok)
+    else
     {
-        trk.setActivity(flag, s->property("name").toString(), s->property("symbol").toString());
+        QObject *s = sender();
+        bool ok = false;
+        quint32 flag = s->property("flag").toUInt(&ok);
+        if(ok)
+        {
+            trk.setActivity(flag, s->property("name").toString(), s->property("symbol").toString());
+        }
     }
 }
 
-void CDetailsTrk::slotSetupGraph(int idx)
+void CDetailsTrk::setupGraph(CPlot * plot, const CLimit& limit, const QString& source, QDoubleSpinBox * spinMin, QDoubleSpinBox * spinMax)
 {
-    const CPropertyTrk * propHandler = trk.getPropertyHandler();
-    CPlot * plot = 0;
-    QObject * s = sender();
+    trk.getPropertyHandler()->setupPlot(plot, source);
+    spinMin->setSuffix(limit.getUnit());
+    spinMax->setSuffix(limit.getUnit());
+    spinMin->setValue(limit.getMin());
+    spinMax->setValue(limit.getMax());
+}
 
+void CDetailsTrk::slotSetupGraph(int idx)
+{
+    QObject *s = sender();
     if(s == comboGraph2)
     {
-        plot = plot2;
+        saveGraphSource(comboGraph2, 2);
+        setupGraph(plot2, trk.limitsGraph2, comboGraph2->itemData(idx).toString(), spinMinGraph2, spinMaxGraph2);
     }
     else if(s == comboGraph3)
     {
-        plot = plot3;
+        saveGraphSource(comboGraph3, 3);
+        setupGraph(plot3, trk.limitsGraph3, comboGraph3->itemData(idx).toString(), spinMinGraph3, spinMaxGraph3);
     }
+}
 
-    if(plot)
+void CDetailsTrk::slotSetLimitModeGraph(CLimit::mode_e mode, CLimit *limit, QDoubleSpinBox *spinMin, QDoubleSpinBox *spinMax, bool on)
+{
+    if(!on)
     {
-        propHandler->setupPlot(plot, idx);
+        return;
     }
+
+    limit->setMode(mode);
+    spinMin->setValue(limit->getMin());
+    spinMax->setValue(limit->getMax());
+}
+
+void CDetailsTrk::setupLimits(CLimit *limit, QDoubleSpinBox * spinMin, QDoubleSpinBox * spinMax)
+{
+    spinMin->setValue(limit->getMin());
+    spinMax->setValue(limit->getMax());
+}
+
+void CDetailsTrk::slotLineWidthMode(bool isUser)
+{
+    trk.lineScale.setMode(isUser ? CValue::eModeUser : CValue::eModeSys);
+    spinLineWidth->setValue(trk.lineScale.val().toDouble());
+}
+
+void CDetailsTrk::slotLineWidth(qreal f)
+{
+    trk.lineScale = f;
+}
+
+void CDetailsTrk::slotWithArrowsMode(bool isUser)
+{
+    trk.showArrows.setMode(isUser ? CValue::eModeUser : CValue::eModeSys);
+    checkWithArrows->setChecked(trk.showArrows.val().toBool());
+}
+
+void CDetailsTrk::slotWithArrows(bool yes)
+{
+    trk.showArrows = yes;
 }
diff --git a/src/gis/trk/CDetailsTrk.h b/src/gis/trk/CDetailsTrk.h
index 4aedad7..3744a21 100644
--- a/src/gis/trk/CDetailsTrk.h
+++ b/src/gis/trk/CDetailsTrk.h
@@ -19,47 +19,60 @@
 #ifndef CDETAILSTRK_H
 #define CDETAILSTRK_H
 
-#include "plot/CPlot.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "helpers/CLimit.h"
 #include "ui_IDetailsTrk.h"
 #include <QWidget>
 
-class CGisItemTrk;
+class CPlot;
 class CPlotProfile;
 
-class CDetailsTrk : public QWidget, private Ui::IDetailsTrk
+class CDetailsTrk : public QWidget, public INotifyTrk, private Ui::IDetailsTrk
 {
     Q_OBJECT
 public:
     CDetailsTrk(CGisItemTrk &trk, QWidget * parent);
     virtual ~CDetailsTrk();
 
-    void setMouseFocus(const CGisItemTrk::trkpt_t * pt);
-    void setMouseRangeFocus(const CGisItemTrk::trkpt_t * pt1, const CGisItemTrk::trkpt_t * pt2);
-    void setMouseClickFocus(const CGisItemTrk::trkpt_t * pt);
+    void setMouseFocus(const CGisItemTrk::trkpt_t *pt) override;
+    void setMouseRangeFocus(const CGisItemTrk::trkpt_t *pt1, const CGisItemTrk::trkpt_t *pt2) override;
+    void setMouseClickFocus(const CGisItemTrk::trkpt_t *pt) override;
 
 public slots:
-    void setupGui();
+    void updateData() override;
 
 private slots:
+    void slotNameChanged(const QString &name);
+    void slotNameChangeFinished();
     void slotShowPlots();
     void slotColorChanged(int idx);
     void slotChangeReadOnlyMode(bool on);
     void slotItemSelectionChanged();
     void slotLinkActivated(const QUrl& url);
-    void slotLinkActivated(const QString& url);
     void slotMouseClickState(int);
     void slotActivitySelected(bool checked);
 
-    void slotColorSourceChanged(int idx, float valueLow = HUGE_VALF, float valueHigh = HUGE_VALF);
+    void slotColorSourceChanged(int idx);
     void slotColorLimitHighChanged();
     void slotColorLimitLowChanged();
 
-    void slotLimitLowFromData();
-    void slotLimitHighFromData();
-
     void slotSetupGraph(int idx);
+    void slotSetLimitModeGraph(CLimit::mode_e mode, CLimit *limit, QDoubleSpinBox *spinMin, QDoubleSpinBox *spinMax, bool on);
+    void slotSetLimitModeStyle(CLimit::mode_e mode, bool on);
+
+    void slotLineWidthMode(bool isUser);
+    void slotLineWidth(qreal f);
+    void slotWithArrowsMode(bool isUser);
+    void slotWithArrows(bool yes);
 
 private:
+    void loadGraphSource(QComboBox * comboBox, qint32 n, const QString cfgDefault);
+    void saveGraphSource(QComboBox * comboBox, qint32 n);
+    void setupGraphLimits(CLimit& limit, QToolButton * toolLimitAutoGraph, QToolButton * toolLimitUsrGraph, QToolButton * toolLimitSysGraph, QDoubleSpinBox * spinMinGraph, QDoubleSpinBox * spinMaxGraph);
+    void setupStyleLimits(CLimit& limit, QToolButton *toolLimitAuto, QToolButton *toolLimitUsr, QToolButton *toolLimitSys, CDoubleSpinBox *spinMin, CDoubleSpinBox *spinMax);
+    void setupGraph(CPlot * plot, const CLimit &limit, const QString& source, QDoubleSpinBox * spinMin, QDoubleSpinBox * spinMax);
+    void setupLimits(CLimit *limit, QDoubleSpinBox * spinMin, QDoubleSpinBox * spinMax);
+
     enum columns_t
     {
         eColNum
diff --git a/src/gis/trk/CGisItemTrk.cpp b/src/gis/trk/CGisItemTrk.cpp
index d76fc5b..12a43a8 100644
--- a/src/gis/trk/CGisItemTrk.cpp
+++ b/src/gis/trk/CGisItemTrk.cpp
@@ -32,6 +32,7 @@
 #include "gis/wpt/CGisItemWpt.h"
 #include "helpers/CDraw.h"
 #include "helpers/CProgressDialog.h"
+#include "helpers/CSettings.h"
 #include "plot/IPlot.h"
 
 #include <QtWidgets>
@@ -65,10 +66,9 @@ struct activity_t
     QString icon;
 };
 
-const QPen CGisItemTrk::penBackground(Qt::white, 5, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
-
 IGisItem::key_t CGisItemTrk::keyUserFocus;
 
+
 CGisItemTrk::CGisItemTrk(const QString &name, qint32 idx1, qint32 idx2, const trk_t& srctrk, IGisProject * project)
     : IGisItem(project, eTypeTrk, NOIDX)
 {
@@ -121,7 +121,7 @@ CGisItemTrk::CGisItemTrk(const CGisItemTrk& parentTrk, IGisProject *project, int
     // build new ones.
     if(clone)
     {
-        trk.name += QObject::tr("_Clone");
+        trk.name += tr("_Clone");
         key.clear();
         history.events.clear();
         setupHistory();
@@ -155,7 +155,6 @@ CGisItemTrk::CGisItemTrk(const SGisLine& l, const QString& name, IGisProject * p
     updateDecoration(eMarkChanged, eMarkNone);
 }
 
-
 CGisItemTrk::CGisItemTrk(const QDomNode& xml, IGisProject *project)
     : IGisItem(project, eTypeTrk, project->childCount())
 {
@@ -183,11 +182,15 @@ CGisItemTrk::CGisItemTrk(const QString& filename, IGisProject * project)
     updateDecoration(eMarkNone, eMarkNone);
 }
 
-CGisItemTrk::CGisItemTrk(const history_t& hist, IGisProject * project)
+CGisItemTrk::CGisItemTrk(const history_t& hist, const QString &dbHash, IGisProject * project)
     : IGisItem(project, eTypeTrk, project->childCount())
 {
     history = hist;
-    loadHistory(hist.histIdxCurrent);    
+    loadHistory(hist.histIdxCurrent);
+    if(!dbHash.isEmpty())
+    {
+        lastDatabaseHash = dbHash;
+    }
 }
 
 CGisItemTrk::CGisItemTrk(quint64 id, QSqlDatabase& db, IGisProject * project)
@@ -196,6 +199,29 @@ CGisItemTrk::CGisItemTrk(quint64 id, QSqlDatabase& db, IGisProject * project)
     loadFromDb(id, db);
 }
 
+CGisItemTrk::CGisItemTrk(trk_t& trkdata, IGisProject *project)
+    : IGisItem(project, eTypeTrk, NOIDX)
+{
+    trk = std::move(trkdata);
+
+    setupHistory();
+    deriveSecondaryData();
+    updateDecoration(eMarkNone, eMarkNone);
+}
+
+CGisItemTrk::CGisItemTrk(CFitStream& stream, IGisProject * project)
+    : IGisItem(project, eTypeTrk, project->childCount())
+{
+    // --- start read and process data ----
+    setColor(penForeground.color());
+    readTrkFromFit(stream);
+    // --- stop read and process data ----
+
+    setupHistory();
+    deriveSecondaryData();
+    updateDecoration(eMarkNone, eMarkNone);
+}
+
 
 CGisItemTrk::~CGisItemTrk()
 {
@@ -205,25 +231,47 @@ CGisItemTrk::~CGisItemTrk()
         keyUserFocus.clear();
     }
 
-    /**
-        Delete all registered plot as they can't exist without the item.
-        As the plot objects will unregister via unregisterPlot() in their
+    /*
+        Delete all registered INotifyTrk as they can't exist without the item.
+        As the INotifyTrk objects will unregister via unregisterVisual() in their
         destructor things will get a bit complicated here. Better create
         a copy of the list before we start to delete.
      */
-    qDeleteAll(registeredPlots.toList());
-    qDeleteAll(notifyOnChange.toList());
+    qDeleteAll(registeredVisuals.toList());
 
+    // now it is save to destroy the details dialog
     delete dlgDetails;
 
     // delete it after the detail dialog as it is used by the detail dialog
     delete propHandler;
 }
 
+IGisItem * CGisItemTrk::createClone()
+{
+    int idx = -1;
+    IGisProject * project = dynamic_cast<IGisProject*>(parent());
+    if(project)
+    {
+        idx = project->indexOfChild(this);
+    }
+    return new CGisItemTrk(*this, project, idx, true);
+}
+
+void CGisItemTrk::updateFromDB(quint64 id, QSqlDatabase& db)
+{
+    IGisItem::updateFromDB(id, db);
+
+    /*
+        as this will change the line significantly we better stop
+        all focus operations and close the detail dialog.
+     */
+    resetInternalData();
+}
+
+
 void CGisItemTrk::setSymbol()
 {
     setColor(str2color(trk.color));
-    notifyChange();
 }
 
 
@@ -235,18 +283,12 @@ void CGisItemTrk::setDataFromPolyline(const SGisLine &l)
         as this will change the line significantly we better stop
         all focus operations and close the detail dialog.
      */
-    mouseClickFocus = 0;
-    mouseMoveFocus  = 0;
-    mouseRange1     = 0;
-    mouseRange2     = 0;
-    rangeState      = eRangeStateIdle;
-
-    delete dlgDetails;
+    resetInternalData();
 
     readTrackDataFromGisLine(l);
 
     flags |= eFlagTainted;
-    changed(QObject::tr("Changed trackpoints, sacrificed all previous data."), "://icons/48x48/LineMove.png");
+    changed(tr("Changed trackpoints, sacrificed all previous data."), "://icons/48x48/LineMove.png");
 }
 
 void CGisItemTrk::getPolylineFromData(QPolygonF &l)
@@ -316,66 +358,47 @@ void CGisItemTrk::readTrackDataFromGisLine(const SGisLine &l)
     }
 
     deriveSecondaryData();
-    notifyChange();
-}
-
-void CGisItemTrk::registerPlot(IPlot * plot)
-{
-    registeredPlots << plot;
 }
 
-void CGisItemTrk::unregisterPlot(IPlot * plot)
+void CGisItemTrk::registerVisual(INotifyTrk * visual)
 {
-    registeredPlots.remove(plot);
+    registeredVisuals << visual;
 }
 
-void CGisItemTrk::registerNotification(INotifiable *obj)
+void CGisItemTrk::unregisterVisual(INotifyTrk * visual)
 {
-    notifyOnChange << obj;
+    registeredVisuals.remove(visual);
 }
 
-void CGisItemTrk::unregisterNotification(INotifiable *obj)
-{
-    notifyOnChange.remove(obj);
-}
-
-void CGisItemTrk::notifyChange()
-{
-    foreach(INotifiable *obj, notifyOnChange)
-    {
-        obj->notify();
-    }
-}
-
-QString CGisItemTrk::getInfo(bool allowEdit) const
+QString CGisItemTrk::getInfo(bool showName) const
 {
     QString val1, unit1, val2, unit2;
     QString str = "<div>";
 
-    if(allowEdit)
+    if(showName)
     {
-        str += "<b>" + toLink(isReadOnly(), "name", getName(), "") + "</b>";
+        str += "<b>" + getName() + "</b>";
     }
-    else
+
+    if(cntVisiblePoints == 0)
     {
-        str += "<div style='font-weight: bold;'>" + getName() + "</div>";
+        return str + "</div>";
     }
 
-    if(cntVisiblePoints == 0)
+    if(showName)
     {
-        return str;
+        str += "<br />";
     }
 
     IUnit::self().meter2distance(totalDistance, val1, unit1);
-    str += "<br/>\n";
-    str += QObject::tr("Length: %1 %2").arg(val1).arg(unit1);
+    str += tr("Length: %1 %2").arg(val1).arg(unit1);
 
     if(totalAscend != NOFLOAT && totalDescend != NOFLOAT)
     {
         IUnit::self().meter2elevation(totalAscend, val1, unit1);
         IUnit::self().meter2elevation(totalDescend, val2, unit2);
 
-        str += QObject::tr(", %1%2 %3, %4%5 %6").arg(QChar(0x2197)).arg(val1).arg(unit1).arg(QChar(0x2198)).arg(val2).arg(unit2);
+        str += tr(", %1%2 %3, %4%5 %6").arg(QChar(0x2197)).arg(val1).arg(unit1).arg(QChar(0x2198)).arg(val2).arg(unit2);
     }
 
 
@@ -383,35 +406,35 @@ QString CGisItemTrk::getInfo(bool allowEdit) const
     {
         IUnit::self().seconds2time(totalElapsedSeconds, val1, unit1);
         str += "<br/>\n";
-        str += QObject::tr("Time: %1").arg(val1);
+        str += tr("Time: %1").arg(val1);
 
         IUnit::self().meter2speed(totalDistance / totalElapsedSeconds, val1, unit1);
-        str += QObject::tr(", Speed: %1 %2").arg(val1).arg(unit1);
+        str += tr(", Speed: %1 %2").arg(val1).arg(unit1);
     }
 
     if(totalElapsedSecondsMoving != NOTIME)
     {
         IUnit::self().seconds2time(totalElapsedSecondsMoving, val1, unit1);
         str += "<br/>\n";
-        str += QObject::tr("Moving: %1").arg(val1);
+        str += tr("Moving: %1").arg(val1);
 
         IUnit::self().meter2speed(totalDistance / totalElapsedSecondsMoving, val1, unit1);
-        str += QObject::tr(", Speed: %1 %2").arg(val1).arg(unit1);
+        str += tr(", Speed: %1 %2").arg(val1).arg(unit1);
     }
 
     if(timeStart.isValid())
     {
         str += "<br/>\n";
-        str += QObject::tr("Start: %1").arg(IUnit::datetime2string(timeStart, false, boundingRect.center()));
+        str += tr("Start: %1").arg(IUnit::datetime2string(timeStart, false, boundingRect.center()));
     }
     if(timeEnd.isValid())
     {
         str += "<br/>\n";
-        str += QObject::tr("End: %1").arg(IUnit::datetime2string(timeEnd, false, boundingRect.center()));
+        str += tr("End: %1").arg(IUnit::datetime2string(timeEnd, false, boundingRect.center()));
     }
 
     str += "<br/>\n";
-    str += QObject::tr("Points: %1 (%2)").arg(cntVisiblePoints).arg(cntTotalPoints);
+    str += tr("Points: %1 (%2)").arg(cntVisiblePoints).arg(cntTotalPoints);
 
     str += "</div>";
     return str;
@@ -421,7 +444,7 @@ QString CGisItemTrk::getInfoRange()
 {
     qreal tmp, d, slope1, slope2;
     QString str, val, unit;
-    if(mouseRange1 == 0 || mouseRange2 == 0)
+    if(mouseRange1 == nullptr || mouseRange2 == nullptr)
     {
         return str;
     }
@@ -458,8 +481,8 @@ QString CGisItemTrk::getInfoRange()
         pt2--;
     }
 
-    bool timeIsValid    = pt1->time.isValid() && pt2->time.isValid();
-    qreal deltaTime     = pt2->time.toTime_t() - pt1->time.toTime_t();
+    bool timeIsValid = pt1->time.isValid() && pt2->time.isValid();
+    qreal deltaTime  = pt2->time.toTime_t() - pt1->time.toTime_t();
 
     d = tmp = pt2->distance - pt1->distance;
 
@@ -520,15 +543,15 @@ QString CGisItemTrk::getInfoTrkPt(const trkpt_t& pt)
     str += "\n";
 
     IUnit::self().meter2elevation(pt.ele, val1, unit1);
-    str += QObject::tr("Ele.: %1 %2").arg(val1).arg(unit1);
+    str += tr("Ele.: %1 %2").arg(val1).arg(unit1);
     if(pt.slope1 != NOFLOAT)
     {
-        str += QObject::tr(" slope: %1%3 (%2%)").arg(pt.slope1, 2, 'f', 0).arg(pt.slope2, 2, 'f', 0).arg(QChar(0260));
+        str += tr(" slope: %1%3 (%2%)").arg(pt.slope1, 2, 'f', 0).arg(pt.slope2, 2, 'f', 0).arg(QChar(0260));
     }
     if(pt.speed != NOFLOAT)
     {
         IUnit::self().meter2speed(pt.speed, val1, unit1);
-        str += QObject::tr(" speed: %1%2").arg(val1).arg(unit1);
+        str += tr(" speed: %1%2").arg(val1).arg(unit1);
     }
 
     QStringList keys = pt.extensions.keys();
@@ -545,7 +568,7 @@ QString CGisItemTrk::getInfoTrkPt(const trkpt_t& pt)
         const CKnownExtension &ext = CKnownExtension::get(key);
         if(ext.known)
         {
-            str += "\n" + ext.name + ": " + QString("%1%2").arg(ext.valueFunc(pt),0,'f',1).arg(ext.unit);
+            str += "\n" + ext.name + ": " + QString("%1%2").arg(ext.valueFunc(pt)*ext.factor,0,'f',1).arg(ext.unit);
         }
         else
         {
@@ -556,7 +579,7 @@ QString CGisItemTrk::getInfoTrkPt(const trkpt_t& pt)
 
     if(more > 0)
     {
-        str += "\n" + QObject::tr("... and %1 tags not displayed").arg(more);
+        str += "\n" + tr("... and %1 tags not displayed").arg(more);
     }
 
     return str;
@@ -568,42 +591,42 @@ QString CGisItemTrk::getInfoProgress(const trkpt_t& pt)
     if(pt.ascend != NOFLOAT)
     {
         IUnit::self().meter2elevation(pt.ascend, val, unit);
-        str += QObject::tr("Ascend: %1%2 (%3%)").arg(val).arg(unit).arg(pt.ascend * 100/totalAscend, 2,'f',0);
+        str += tr("Ascend: %1%2 (%3%)").arg(val).arg(unit).arg(pt.ascend * 100/totalAscend, 2,'f',0);
     }
     else
     {
-        str += QObject::tr("Ascend: - (-)");
+        str += tr("Ascend: - (-)");
     }
 
     if(pt.descend != NOFLOAT)
     {
         IUnit::self().meter2elevation(pt.descend, val, unit);
-        str += QObject::tr(" Descend: %1%2 (%3%)").arg(val).arg(unit).arg(pt.descend * 100/totalDescend, 2,'f',0);
+        str += tr(" Descend: %1%2 (%3%)").arg(val).arg(unit).arg(pt.descend * 100/totalDescend, 2,'f',0);
     }
     else
     {
-        str += QObject::tr(" Descend: - (-) ");
+        str += tr(" Descend: - (-) ");
     }
 
     str += "\n";
     if(pt.distance != NOFLOAT)
     {
         IUnit::self().meter2distance(pt.distance, val, unit);
-        str += QObject::tr("Dist.: %1%2 (%3%)").arg(val).arg(unit).arg(pt.distance * 100/totalDistance, 2,'f',0);
+        str += tr("Dist.: %1%2 (%3%)").arg(val).arg(unit).arg(pt.distance * 100/totalDistance, 2,'f',0);
     }
     else
     {
-        str += QObject::tr("Dist.: - (-)");
+        str += tr("Dist.: - (-)");
     }
 
     if(pt.elapsedSeconds != NOFLOAT)
     {
         IUnit::self().seconds2time(pt.elapsedSecondsMoving, val, unit);
-        str += QObject::tr(" Moving: %1%2 (%3%)").arg(val).arg(unit).arg(pt.elapsedSecondsMoving * 100/totalElapsedSecondsMoving, 2,'f',0);
+        str += tr(" Moving: %1%2 (%3%)").arg(val).arg(unit).arg(pt.elapsedSecondsMoving * 100/totalElapsedSecondsMoving, 2,'f',0);
     }
     else
     {
-        str += QObject::tr(" Moving: - (-) ");
+        str += tr(" Moving: - (-) ");
     }
 
     return str;
@@ -622,45 +645,45 @@ QString CGisItemTrk::getInfoRange(const trkpt_t& pt1, const trkpt_t& pt2)
     if((pt1.ascend != NOFLOAT) && (pt2.ascend != NOFLOAT))
     {
         IUnit::self().meter2elevation(pt2.ascend - pt1.ascend, val, unit);
-        str += QObject::tr("Ascend: %1%2").arg(val).arg(unit);
+        str += tr("Ascend: %1%2").arg(val).arg(unit);
 
         if(dt != NOFLOAT)
         {
             IUnit::self().meter2speed((pt2.ascend - pt1.ascend)/dt, val, unit);
-            str += QObject::tr(", %1%2").arg(val).arg(unit);
+            str += tr(", %1%2").arg(val).arg(unit);
         }
     }
     else
     {
-        str += QObject::tr("Ascend: -");
+        str += tr("Ascend: -");
     }
 
 
     if((pt1.descend != NOFLOAT) && (pt2.descend != NOFLOAT))
     {
         IUnit::self().meter2elevation(pt2.descend - pt1.descend, val, unit);
-        str += QObject::tr(" Descend: %1%2").arg(val).arg(unit);
+        str += tr(" Descend: %1%2").arg(val).arg(unit);
 
         if(dt != NOFLOAT)
         {
             IUnit::self().meter2speed((pt2.descend - pt1.descend)/dt, val, unit);
-            str += QObject::tr(", %1%2").arg(val).arg(unit);
+            str += tr(", %1%2").arg(val).arg(unit);
         }
     }
     else
     {
-        str += QObject::tr("Descend: -");
+        str += tr("Descend: -");
     }
 
     str += "\n";
 
     IUnit::self().meter2distance(pt2.distance - pt1.distance, val, unit);
-    str += QObject::tr("Dist.: %1%2").arg(val).arg(unit);
+    str += tr("Dist.: %1%2").arg(val).arg(unit);
 
     if(dt != NOFLOAT)
     {
         IUnit::self().seconds2time(dt, val, unit);
-        str += QObject::tr(" Time: %1%2").arg(val).arg(unit);
+        str += tr(" Time: %1%2").arg(val).arg(unit);
     }
 
     return str;
@@ -703,7 +726,7 @@ QPointF CGisItemTrk::getPointCloseBy(const QPoint& screenPos)
 
 void CGisItemTrk::getSelectedVisiblePoints(qint32& idx1, qint32& idx2)
 {
-    if((mouseRange1 == 0) || (mouseRange2 == 0))
+    if((nullptr == mouseRange1) || (nullptr == mouseRange2))
     {
         idx1 = NOIDX;
         idx2 = NOIDX;
@@ -721,15 +744,19 @@ void CGisItemTrk::getSelectedVisiblePoints(qint32& idx1, qint32& idx2)
 
 static inline void updateExtrema(CGisItemTrk::limits_t &extrema, qreal val)
 {
-    extrema = { qMin(extrema.min, val), qMax(extrema.max, val) };
+    if(NOFLOAT != val)
+    {
+        extrema = { qMin(extrema.min, val), qMax(extrema.max, val) };
+    }
 }
 
 void CGisItemTrk::updateExtremaAndExtensions()
 {
     extrema = QHash<QString, limits_t>();
-    limits_t extremaSpeed = { numeric_limits<qreal>::max(), numeric_limits<qreal>::lowest() };
-    limits_t extremaSlope = { numeric_limits<qreal>::max(), numeric_limits<qreal>::lowest() };
-    limits_t extremaEle   = { numeric_limits<qreal>::max(), numeric_limits<qreal>::lowest() };
+    limits_t extremaSpeed    = { numeric_limits<qreal>::max(), numeric_limits<qreal>::lowest() };
+    limits_t extremaSlope    = { numeric_limits<qreal>::max(), numeric_limits<qreal>::lowest() };
+    limits_t extremaEle      = { numeric_limits<qreal>::max(), numeric_limits<qreal>::lowest() };
+    limits_t extremaProgress = { numeric_limits<qreal>::max(), numeric_limits<qreal>::lowest() };
 
     existingExtensions = QSet<QString>();
     QSet<QString> nonRealExtensions;
@@ -761,37 +788,51 @@ void CGisItemTrk::updateExtremaAndExtensions()
                 }
             }
 
-            if(NOFLOAT != pt.speed)
-            {
-                updateExtrema(extremaSpeed, pt.speed);
-            }
-
+            updateExtrema(extremaSpeed, pt.speed);
             updateExtrema(extremaEle,   pt.ele);
             updateExtrema(extremaSlope, pt.slope1);
+            updateExtrema(extremaProgress, pt.distance);
         }
     }
 
     if(extremaEle.min < extremaEle.max)
     {
-        existingExtensions << "ele";
-        extrema["ele"] = extremaEle;
+        existingExtensions << CKnownExtension::internalEle;
+        extrema[CKnownExtension::internalEle] = extremaEle;
     }
 
     if(extremaSlope.min < extremaSlope.max)
     {
-        existingExtensions << "slope";
-        extrema["slope"] = extremaSlope;
+        existingExtensions << CKnownExtension::internalSlope;
+        extrema[CKnownExtension::internalSlope] = extremaSlope;
     }
 
     if(numeric_limits<qreal>::max() != extremaSpeed.min)
     {
-        existingExtensions << "speed";
-        extrema["speed"] = extremaSpeed;
+        existingExtensions << CKnownExtension::internalSpeed;
+        extrema[CKnownExtension::internalSpeed] = extremaSpeed;
+    }
+
+    if(numeric_limits<qreal>::max() != extremaProgress.min)
+    {
+        existingExtensions << CKnownExtension::internalProgress;
+        extrema[CKnownExtension::internalProgress] = extremaProgress;
     }
 
     existingExtensions.subtract(nonRealExtensions);
 }
 
+void CGisItemTrk::resetInternalData()
+{
+    mouseClickFocus = nullptr;
+    mouseMoveFocus  = nullptr;
+    mouseRange1     = nullptr;
+    mouseRange2     = nullptr;
+    rangeState      = eRangeStateIdle;
+
+    delete dlgDetails;
+}
+
 void CGisItemTrk::deriveSecondaryData()
 {
     qreal north = -90;
@@ -800,27 +841,29 @@ void CGisItemTrk::deriveSecondaryData()
     qreal west  =  180;
 
     // reset all secondary data
-    cntTotalPoints          = 0;
-    cntVisiblePoints        = 0;
-    timeStart               = QDateTime();
-    timeEnd                 = QDateTime();
-    totalDistance           = NOFLOAT;
-    totalAscend             = NOFLOAT;
-    totalDescend            = NOFLOAT;
-    totalElapsedSeconds     = NOTIME;
+    cntTotalPoints            = 0;
+    cntVisiblePoints          = 0;
+    timeStart                 = QDateTime();
+    timeEnd                   = QDateTime();
+    totalDistance             = NOFLOAT;
+    totalAscend               = NOFLOAT;
+    totalDescend              = NOFLOAT;
+    totalElapsedSeconds       = NOTIME;
     totalElapsedSecondsMoving = NOTIME;
 
 
     // remove empty segments
-    QVector<trkseg_t>::iterator i = trk.segs.begin();
-    while(i != trk.segs.end())
+    QVector<trkseg_t>::iterator it = trk.segs.begin();
+    while(it != trk.segs.end())
     {
-        if((*i).pts.isEmpty())
+        if(it->pts.isEmpty())
         {
-            i = trk.segs.erase(i);
-            continue;
+            it = trk.segs.erase(it);
+        }
+        else
+        {
+            ++it;
         }
-        i++;
     }
 
     // no segments -> no data -> nothing to do
@@ -829,9 +872,12 @@ void CGisItemTrk::deriveSecondaryData()
         return;
     }
 
-    trkpt_t * lastTrkpt     = 0;
-    qreal timestampStart    = NOFLOAT;
-    qreal lastEle           = NOFLOAT;
+    trkpt_t * lastTrkpt  = nullptr;
+    qreal timestampStart = NOFLOAT;
+    qreal lastEle        = NOFLOAT;
+
+    // linear list of pointers to visible track points
+    QVector<trkpt_t*> lintrk;
 
     for(int s = 0; s < trk.segs.size(); s++)
     {
@@ -848,6 +894,7 @@ void CGisItemTrk::deriveSecondaryData()
                 continue;
             }
             trkpt.idxVisible = cntVisiblePoints++;
+            lintrk << &trkpt;
 
             if(trkpt.lon < west)
             {
@@ -866,7 +913,7 @@ void CGisItemTrk::deriveSecondaryData()
                 north   = trkpt.lat;
             }
 
-            if(lastTrkpt != 0)
+            if(lastTrkpt != nullptr)
             {
                 trkpt.deltaDistance  = GPS_Math_Distance(lastTrkpt->lon * DEG_TO_RAD, lastTrkpt->lat * DEG_TO_RAD, trkpt.lon * DEG_TO_RAD, trkpt.lat * DEG_TO_RAD);
                 trkpt.distance       = lastTrkpt->distance + trkpt.deltaDistance;
@@ -923,82 +970,73 @@ void CGisItemTrk::deriveSecondaryData()
 
     boundingRect = QRectF(QPointF(west * DEG_TO_RAD, north * DEG_TO_RAD), QPointF(east * DEG_TO_RAD,south * DEG_TO_RAD));
 
-    // speed and slope (short average +-25m)
-    for(int s = 0; s < trk.segs.size(); s++)
+    for(int p = 0; p < lintrk.size(); p++)
     {
-        trkseg_t& seg = trk.segs[s];
+        trkpt_t& trkpt = *lintrk[p];
 
-        for(int p = 0; p < seg.pts.size(); p++)
+        qreal d1 = trkpt.distance;
+        qreal e1 = trkpt.ele;
+        qreal t1 = trkpt.time.toMSecsSinceEpoch() / 1000.0;
+        int n = p;
+
+        while(n>0)
         {
-            trkpt_t& trkpt = seg.pts[p];
-            if(trkpt.flags & trkpt_t::eHidden)
+            trkpt_t & trkpt2 = *lintrk[n];
+            if(trkpt2.ele == NOINT)
             {
+                n--;
                 continue;
             }
 
-            qreal d1 = trkpt.distance;
-            qreal e1 = trkpt.ele;
-            qreal t1 = trkpt.time.toMSecsSinceEpoch() / 1000.0;
-            int n = p;
-
-            while(n>0)
+            if(trkpt.distance - trkpt2.distance >= 25)
             {
-                trkpt_t & trkpt2 = seg.pts[n];
-                if((trkpt2.flags & trkpt_t::eHidden) || (trkpt2.ele == NOINT))
-                {
-                    n--;
-                    continue;
-                }
-
-                if(trkpt.distance - trkpt2.distance >= 25)
-                {
-                    d1 = trkpt2.distance;
-                    e1 = trkpt2.ele;
-                    t1 = trkpt2.time.toMSecsSinceEpoch()/1000.0;
-                    break;
-                }
-                n--;
+                d1 = trkpt2.distance;
+                e1 = trkpt2.ele;
+                t1 = trkpt2.time.toMSecsSinceEpoch()/1000.0;
+                break;
             }
+            n--;
+        }
 
-            qreal d2 = trkpt.distance;
-            qreal e2 = trkpt.ele;
-            qreal t2 = trkpt.time.toMSecsSinceEpoch() / 1000.0;
-            n = p;
-            while(n < seg.pts.size())
+        qreal d2 = trkpt.distance;
+        qreal e2 = trkpt.ele;
+        qreal t2 = trkpt.time.toMSecsSinceEpoch() / 1000.0;
+        n = p;
+        while(n < lintrk.size())
+        {
+            trkpt_t & trkpt2 = *lintrk[n];
+            if(trkpt2.ele == NOINT)
             {
-                trkpt_t & trkpt2 = seg.pts[n];
-                if((trkpt2.flags & trkpt_t::eHidden) || (trkpt2.ele == NOINT))
-                {
-                    n++;
-                    continue;
-                }
-
-                if(trkpt2.distance - trkpt.distance >= 25)
-                {
-                    d2 = trkpt2.distance;
-                    e2 = trkpt2.ele;
-                    t2 = trkpt2.time.toMSecsSinceEpoch() / 1000.0;
-                    break;
-                }
                 n++;
+                continue;
             }
 
-            qreal a      = qAtan((e2 - e1)/(d2 - d1));
-            trkpt.slope1 = a * 360.0/(2 * M_PI);
-            trkpt.slope2 = qTan(trkpt.slope1 * DEG_TO_RAD) * 100;
-
-            if((t2 - t1) > 0)
+            if(trkpt2.distance - trkpt.distance >= 25)
             {
-                trkpt.speed = (d2 - d1) / (t2 - t1);
-            }
-            else
-            {
-                trkpt.speed = NOFLOAT;
+                d2 = trkpt2.distance;
+                e2 = trkpt2.ele;
+                t2 = trkpt2.time.toMSecsSinceEpoch() / 1000.0;
+                break;
             }
+            n++;
+        }
+
+        qreal a      = qAtan((e2 - e1)/(d2 - d1));
+        trkpt.slope1 = a * 360.0/(2 * M_PI);
+        trkpt.slope2 = qTan(trkpt.slope1 * DEG_TO_RAD) * 100;
+
+        if((t2 - t1) > 0)
+        {
+            trkpt.speed = (d2 - d1) / (t2 - t1);
+        }
+        else
+        {
+            trkpt.speed = NOFLOAT;
         }
     }
 
-    if(lastTrkpt != 0)
+
+    if(nullptr != lastTrkpt)
     {
         timeEnd                   = lastTrkpt->time;
         totalDistance             = lastTrkpt->distance;
@@ -1015,17 +1053,14 @@ void CGisItemTrk::deriveSecondaryData()
     if(propHandler == nullptr)
     {
         propHandler = new CPropertyTrk(*this);
+        limitsGraph1.setSource(CKnownExtension::internalEle);
     }
     else
     {
         propHandler->setupData();
     }
 
-
-    foreach(IPlot * plot, registeredPlots)
-    {
-        plot->updateData();
-    }
+    updateVisuals(eVisualPlot|eVisualDetails|eVisualProject|eVisualColorAct, "deriveSecondaryData()");
 
 //    qDebug() << "--------------" << getName() << "------------------";
 //    qDebug() << "totalDistance" << totalDistance;
@@ -1039,7 +1074,7 @@ void CGisItemTrk::deriveSecondaryData()
 void CGisItemTrk::findWaypointsCloseBy(CProgressDialog& progress, quint32& current)
 {
     IGisProject * project = dynamic_cast<IGisProject*>(parent());
-    if(project == 0)
+    if(nullptr == project)
     {
         return;
     }
@@ -1083,7 +1118,7 @@ void CGisItemTrk::findWaypointsCloseBy(CProgressDialog& progress, quint32& curre
     for(int i=0; i < project->childCount(); i++)
     {
         CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(project->child(i));
-        if(wpt == 0)
+        if(wpt == nullptr)
         {
             continue;
         }
@@ -1166,15 +1201,7 @@ void CGisItemTrk::findWaypointsCloseBy(CProgressDialog& progress, quint32& curre
         }
     }
 
-    if(!dlgDetails.isNull())
-    {
-        dlgDetails->setupGui();
-    }
-
-    foreach(IPlot * plot, registeredPlots)
-    {
-        plot->updateData();
-    }
+    updateVisuals(eVisualDetails|eVisualPlot|eVisualProject, "findWaypointsCloseBy()");
 }
 
 bool CGisItemTrk::isCloseTo(const QPointF& pos)
@@ -1213,7 +1240,7 @@ void CGisItemTrk::edit()
 
 bool CGisItemTrk::cut()
 {
-    if(mouseClickFocus == 0)
+    if(nullptr == mouseClickFocus)
     {
         return false;
     }
@@ -1224,8 +1251,8 @@ bool CGisItemTrk::cut()
         return false;
     }
 
-    qint32 idxMouse             = mouseClickFocus->idxTotal;
-    CCutTrk::mode_e mode        = dlg.getMode();
+    qint32 idxMouse      = mouseClickFocus->idxTotal;
+    CCutTrk::mode_e mode = dlg.getMode();
 
     // if the cut action results into cloning a track, the calling method should
     // ask if the original track should be removed. As a track can't delete itself
@@ -1235,21 +1262,18 @@ bool CGisItemTrk::cut()
     // askToDeleteOriginal = store result as clone
     if(askToDeleteOriginal)
     {
-        QString name1;
-        IGisProject * project;
-
         // clone first part?
         if((mode & (CCutTrk::eModeKeepBoth|CCutTrk::eModeKeepFirst)) != 0)
         {
-            name1 = getName() + QString(" (%1 - %2)").arg(0).arg(idxMouse);
-            name1 = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, name1);
+            QString name1 = getName() + QString(" (%1 - %2)").arg(0).arg(idxMouse);
+            name1 = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), tr("Edit name..."), tr("Enter new track name."), QLineEdit::Normal, name1);
             if(name1.isEmpty())
             {
                 return false;
             }
 
-            project = CGisWidget::self().selectProject();
-            if(project == 0)
+            IGisProject *project = CGisWidget::self().selectProject();
+            if(nullptr == project)
             {
                 return false;
             }
@@ -1260,15 +1284,15 @@ bool CGisItemTrk::cut()
         // clone second part?
         if((mode & (CCutTrk::eModeKeepBoth|CCutTrk::eModeKeepSecond)) != 0)
         {
-            name1 = getName() + QString(" (%1 - %2)").arg(idxMouse).arg(cntTotalPoints-1);
-            name1 = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, name1);
+            QString name1 = getName() + QString(" (%1 - %2)").arg(idxMouse).arg(cntTotalPoints-1);
+            name1 = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), tr("Edit name..."), tr("Enter new track name."), QLineEdit::Normal, name1);
             if(name1.isEmpty())
             {
                 return false;
             }
 
-            project = CGisWidget::self().selectProject();
-            if(project == 0)
+            IGisProject *project = CGisWidget::self().selectProject();
+            if(nullptr == project)
             {
                 return false;
             }
@@ -1304,7 +1328,7 @@ bool CGisItemTrk::cut()
                 seg.pts = pts;
             }
             deriveSecondaryData();
-            changed(QObject::tr("Permanently removed points %1..%2").arg(idxMouse+1).arg(cntTotalPoints-1), "://icons/48x48/TrkCut.png");
+            changed(tr("Permanently removed points %1..%2").arg(idxMouse+1).arg(cntTotalPoints-1), "://icons/48x48/TrkCut.png");
         }
         else if((mode & CCutTrk::eModeKeepSecond) != 0)
         {
@@ -1328,7 +1352,7 @@ bool CGisItemTrk::cut()
                 seg.pts = pts;
             }
             deriveSecondaryData();
-            changed(QObject::tr("Permanently removed points %1..%2").arg(0).arg(idxMouse-1), "://icons/48x48/TrkCut.png");
+            changed(tr("Permanently removed points %1..%2").arg(0).arg(idxMouse-1), "://icons/48x48/TrkCut.png");
         }
     }
 
@@ -1337,14 +1361,14 @@ bool CGisItemTrk::cut()
 
 void CGisItemTrk::reverse()
 {
-    QString name1 = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, getName() + "_rev");
+    QString name1 = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), tr("Edit name..."), tr("Enter new track name."), QLineEdit::Normal, getName() + "_rev");
     if(name1.isEmpty())
     {
         return;
     }
 
     IGisProject * project = CGisWidget::self().selectProject();
-    if(project == 0)
+    if(nullptr == project)
     {
         return;
     }
@@ -1382,7 +1406,7 @@ void CGisItemTrk::reverse()
 void CGisItemTrk::combine(const QList<IGisItem::key_t>& keysPreSel)
 {
     IGisProject * project = dynamic_cast<IGisProject*>(parent());
-    if(project == 0)
+    if(nullptr == project)
     {
         return;
     }
@@ -1396,14 +1420,14 @@ void CGisItemTrk::combine(const QList<IGisItem::key_t>& keysPreSel)
         return;
     }
 
-    QString name1 = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, getName() + " & other");
+    QString name1 = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), tr("Edit name..."), tr("Enter new track name."), QLineEdit::Normal, getName() + " & other");
     if(name1.isEmpty())
     {
         return;
     }
 
     IGisProject * projectNew = CGisWidget::self().selectProject();
-    if(projectNew == 0)
+    if(nullptr == projectNew)
     {
         return;
     }
@@ -1426,7 +1450,7 @@ void CGisItemTrk::combine(const QList<IGisItem::key_t>& keysPreSel)
     foreach(const IGisItem::key_t &key, keys)
     {
         CGisItemTrk * trk2 = dynamic_cast<CGisItemTrk*>(project->getItemByKey(key));
-        if(trk2 == 0)
+        if(nullptr == trk2)
         {
             continue;
         }
@@ -1447,7 +1471,7 @@ void CGisItemTrk::hideSelectedPoints()
         return;
     }
 
-    if((mouseRange1 == 0) && (mouseRange2 == 0))
+    if((nullptr == mouseRange1) || (nullptr == mouseRange2))
     {
         return;
     }
@@ -1510,7 +1534,7 @@ void CGisItemTrk::hideSelectedPoints()
     mouseRange2 = 0;
     rangeState  = eRangeStateIdle;
     deriveSecondaryData();
-    changed(QObject::tr("Hide points."), "://icons/48x48/PointHide.png");
+    changed(tr("Hide points."), "://icons/48x48/PointHide.png");
 }
 
 void CGisItemTrk::showSelectedPoints()
@@ -1520,7 +1544,7 @@ void CGisItemTrk::showSelectedPoints()
         return;
     }
 
-    if((mouseRange1 == 0) && (mouseRange2 == 0))
+    if((mouseRange1 == nullptr) || (mouseRange2 == nullptr))
     {
         return;
     }
@@ -1550,12 +1574,12 @@ void CGisItemTrk::showSelectedPoints()
     mouseRange2 = 0;
     rangeState  = eRangeStateIdle;
     deriveSecondaryData();
-    changed(QObject::tr("Show points."), "://icons/48x48/PointShow.png");
+    changed(tr("Show points."), "://icons/48x48/PointShow.png");
 }
 
 void CGisItemTrk::copySelectedPoints()
 {
-    if((mouseRange1 == 0) && (mouseRange2 == 0))
+    if((mouseRange1 == nullptr) || (mouseRange2 == nullptr))
     {
         return;
     }
@@ -1569,13 +1593,13 @@ void CGisItemTrk::copySelectedPoints()
     }
 
     IGisProject * project = CGisWidget::self().selectProject();
-    if(project == 0)
+    if(nullptr == project)
     {
         return;
     }
 
     QString name1 = getName() + QString(" (%1 - %2)").arg(idx1).arg(idx2);
-    name1 = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, name1);
+    name1 = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), tr("Edit name..."), tr("Enter new track name."), QLineEdit::Normal, name1);
     if(name1.isEmpty())
     {
         return;
@@ -1659,7 +1683,7 @@ void CGisItemTrk::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
         QList<QPolygonF> lines;
         splitLineToViewport(lineFull, extViewport, lines);
 
-        p.setPen(QPen(Qt::lightGray,5,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
+        p.setPen(QPen(Qt::lightGray, penWidthBg, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
 
         foreach(const QPolygonF &l, lines)
         {
@@ -1683,7 +1707,7 @@ void CGisItemTrk::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
 
     if(key == keyUserFocus)
     {
-        p.setPen(QPen(Qt::red,11,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
+        p.setPen(QPen(Qt::red, penWidthHi, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
         foreach(const QPolygonF &l, lines)
         {
             p.drawPolyline(l);
@@ -1695,10 +1719,13 @@ void CGisItemTrk::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
     foreach(const QPolygonF &l, lines)
     {
         p.drawPolyline(l);
-        CDraw::arrows(l, extViewport, p, 10, 80);
+        if(showArrows.val().toBool())
+        {
+            CDraw::arrows(l, extViewport, p, 10, 80, lineScale.val().toDouble());
+        }
     }
 
-    if(colorSource.isEmpty())
+    if(getColorizeSource().isEmpty())
     {
         // use the track's ordinary color
         penForeground.setColor(color);
@@ -1708,6 +1735,10 @@ void CGisItemTrk::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
             p.drawPolyline(l);
         }
     }
+    else if(getColorizeSource() == "activity")
+    {
+        drawColorizedByActivity(p);
+    }
     else
     {
         drawColorized(p);
@@ -1715,9 +1746,57 @@ void CGisItemTrk::drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>
     // -------------------------
 }
 
+void CGisItemTrk::setPen(QPainter& p, QPen& pen, quint32 flag)
+{
+    flag &= trkpt_t::eActMask;
+    if(flag == 0)
+    {
+        pen.setColor(color);
+    }
+    else
+    {
+        pen.setColor(CActivityTrk::getDescriptor(flag).color);
+    }
+    p.setPen(pen);
+}
+
+void CGisItemTrk::drawColorizedByActivity(QPainter& p)
+{
+    QPen pen;
+    pen.setWidth(penWidthFg);
+    pen.setCapStyle(Qt::RoundCap);
+
+    foreach(const trkseg_t &segment, trk.segs)
+    {
+        const trkpt_t *ptPrev = NULL;
+
+        foreach(const trkpt_t &pt, segment.pts)
+        {
+            if(pt.flags & trkpt_t::eHidden)
+            {
+                continue;
+            }
+            if(NULL == ptPrev)
+            {
+                setPen(p, pen, pt.flags);
+                ptPrev = &pt;
+                continue;
+            }
+
+            if((ptPrev->flags & trkpt_t::eActMask) != (pt.flags & trkpt_t::eActMask))
+            {
+                setPen(p, pen, pt.flags);
+            }
+
+            p.drawLine(lineSimple[ptPrev->idxVisible], lineSimple[pt.idxVisible]);
+            ptPrev  = &pt;
+        }
+    }
+}
+
 void CGisItemTrk::drawColorized(QPainter &p)
 {
-    auto valueFunc = CKnownExtension::get(colorSource).valueFunc;
+    auto valueFunc = CKnownExtension::get(getColorizeSource()).valueFunc;
 
     QImage colors(1, 256, QImage::Format_RGB888);
     QPainter colorsPainter(&colors);
@@ -1729,7 +1808,7 @@ void CGisItemTrk::drawColorized(QPainter &p)
     colorsGradient.setColorAt(0.00, QColor(255,   0,   0)); // red
     colorsPainter.fillRect(colors.rect(), colorsGradient);
 
-    const qreal factor = CKnownExtension::get(colorSource).factor;
+    const qreal factor = CKnownExtension::get(getColorizeSource()).factor;
 
     foreach(const trkseg_t &segment, trk.segs)
     {
@@ -1748,7 +1827,7 @@ void CGisItemTrk::drawColorized(QPainter &p)
                 continue;
             }
 
-            float colorAt = ( factor * valueFunc(pt) - limitLow ) / (limitHigh - limitLow);
+            float colorAt = ( factor * valueFunc(pt) - getColorizeLimitLow() ) / (getColorizeLimitHigh() - getColorizeLimitLow());
             if(colorAt > 1.f)
             {
                 colorAt = 1.f;
@@ -1770,7 +1849,8 @@ void CGisItemTrk::drawColorized(QPainter &p)
 
             QPen pen;
             pen.setBrush(QBrush(grad));
-            pen.setWidth(3);
+            pen.setWidth(penWidthFg);
+            pen.setCapStyle(Qt::RoundCap);
 
             p.setPen(pen);
             p.drawLine(lineSimple[ptPrev->idxVisible], lineSimple[pt.idxVisible]);
@@ -1781,12 +1861,45 @@ void CGisItemTrk::drawColorized(QPainter &p)
     }
 }
 
-void CGisItemTrk::getExtrema(qreal &min, qreal &max, const QString &source) const
+
+qreal CGisItemTrk::getMin(const QString& source) const
 {
-    min = extrema.value(source).min * CKnownExtension::get(source).factor;
-    max = extrema.value(source).max * CKnownExtension::get(source).factor;
+    return extrema.value(source).min * CKnownExtension::get(source).factor;
 }
 
+qreal CGisItemTrk::getMax(const QString& source) const
+{
+    return extrema.value(source).max * CKnownExtension::get(source).factor;
+}
+
+qreal CGisItemTrk::getMinProp(const QString& source) const
+{
+    if(propHandler == nullptr)
+    {
+        return NOFLOAT;
+    }
+    return propHandler->propBySource(source).min;
+}
+
+qreal CGisItemTrk::getMaxProp(const QString& source) const
+{
+    if(propHandler == nullptr)
+    {
+        return NOFLOAT;
+    }
+    return propHandler->propBySource(source).max;
+}
+
+QString CGisItemTrk::getUnitProp(const QString& source) const
+{
+    if(propHandler == nullptr)
+    {
+        return QString();
+    }
+    return propHandler->propBySource(source).unit;
+}
+
+
 QStringList CGisItemTrk::getExistingDataSources() const
 {
     QStringList known;
@@ -1817,46 +1930,35 @@ QStringList CGisItemTrk::getExistingDataSources() const
 
 void CGisItemTrk::setColorizeSource(QString src)
 {
-    if(src != colorSource)
+    if(src != getColorizeSource())
     {
-        colorSource = src;
-
-        const CKnownExtension ext = CKnownExtension::get(src);
-        if(ext.known)
-        {
-            limitLow  = ext.defLimitLow;
-            limitHigh = ext.defLimitHigh;
-        }
-        else
-        {
-            getExtrema(limitLow, limitHigh, src);
-            if(limitHigh - limitLow < 0.1) {
-                limitHigh = limitLow + 0.1;
-            }
-        }
-
-        notifyChange();
-        updateHistory();
+        colorSourceLimit.setSource(src);
+        updateHistory(eVisualColorLegend|eVisualDetails);
     }
 }
 
 void CGisItemTrk::setColorizeLimitLow(qreal limit)
 {
-    limitLow = limit;
-    notifyChange();
-    updateHistory();
+    colorSourceLimit.setMin(limit);
+    updateHistory(eVisualColorLegend|eVisualDetails);
 }
 
 void CGisItemTrk::setColorizeLimitHigh(qreal limit)
 {
-    limitHigh = limit;
-    notifyChange();
-    updateHistory();
+    colorSourceLimit.setMax(limit);
+    updateHistory(eVisualColorLegend|eVisualDetails);
+}
+
+void CGisItemTrk::setColorizeLimits(qreal low, qreal high)
+{
+    colorSourceLimit.setMin(low);
+    colorSourceLimit.setMax(high);
+    updateHistory(eVisualColorLegend|eVisualDetails);
 }
 
 const QString CGisItemTrk::getColorizeUnit() const
 {
-    return CKnownExtension::get(colorSource).unit;
+    return CKnownExtension::get(getColorizeSource()).unit;
 }
 
 void CGisItemTrk::drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis)
@@ -1981,7 +2083,7 @@ void CGisItemTrk::drawHighlight(QPainter& p)
     {
         return;
     }
-    p.setPen(QPen(QColor(255,0,0,100),11,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
+    p.setPen(QPen(QColor(255,0,0,100), penWidthHi, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
     p.drawPolyline(lineSimple);
 }
 
@@ -1989,7 +2091,7 @@ void CGisItemTrk::drawRange(QPainter& p)
 {
     QMutexLocker lock(&mutexItems);
 
-    if((mouseRange1 != 0) && (mouseRange2 != 0))
+    if((mouseRange1 != nullptr) && (mouseRange2 != nullptr))
     {
         const QPolygonF& line = (mode == eModeRange) ? lineFull : lineSimple;
         int idx1 = (mode == eModeRange) ? mouseRange1->idxTotal : mouseRange1->idxVisible;
@@ -2002,10 +2104,10 @@ void CGisItemTrk::drawRange(QPainter& p)
 
         QPolygonF seg = line.mid(idx1, idx2 - idx1 + 1);
 
-        p.setPen(QPen(Qt::darkGreen, 11, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
+        p.setPen(QPen(Qt::darkGreen, penWidthHi, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
         p.drawPolyline(seg);
 
-        p.setPen(QPen(Qt::green, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
+        p.setPen(QPen(Qt::green, penWidthFg, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
         p.drawPolyline(seg);
     }
 }
@@ -2020,8 +2122,8 @@ bool CGisItemTrk::setMode(mode_e m, const QString& owner)
     mode            = m;
     // always reset the range statemachine
     rangeState      = eRangeStateIdle;
-    mouseRange1     = 0;
-    mouseRange2     = 0;
+    mouseRange1     = nullptr;
+    mouseRange2     = nullptr;
     mouseFocusOwner = mode == eModeRange ? owner : "";
 
 
@@ -2038,25 +2140,25 @@ void CGisItemTrk::setName(const QString& str)
 {
     setText(CGisListWks::eColumnName, str);
     trk.name = str;
-    changed(QObject::tr("Changed name"), "://icons/48x48/EditText.png");
+    changed(tr("Changed name"), "://icons/48x48/EditText.png");
 }
 
 void CGisItemTrk::setComment(const QString& str)
 {
     trk.cmt = str;
-    changed(QObject::tr("Changed comment"), "://icons/48x48/EditText.png");
+    changed(tr("Changed comment"), "://icons/48x48/EditText.png");
 }
 
 void CGisItemTrk::setDescription(const QString& str)
 {
     trk.desc = str;
-    changed(QObject::tr("Changed description"), "://icons/48x48/EditText.png");
+    changed(tr("Changed description"), "://icons/48x48/EditText.png");
 }
 
 void CGisItemTrk::setLinks(const QList<link_t>& links)
 {
     trk.links = links;
-    changed(QObject::tr("Changed links"), "://icons/48x48/Link.png");
+    changed(tr("Changed links"), "://icons/48x48/Link.png");
 }
 
 
@@ -2065,9 +2167,7 @@ void CGisItemTrk::setColor(int idx)
     if(idx < TRK_N_COLORS)
     {
         setColor(IGisItem::colorMap[idx].color);
-        //changed(QObject::tr("Changed color"), "://icons/48x48/SelectColor.png");
-        updateHistory();
-        notifyChange();
+        updateHistory(eVisualColorLegend|eVisualDetails);
     }
 }
 
@@ -2085,13 +2185,12 @@ void CGisItemTrk::setActivity(quint32 flag, const QString& name, const QString&
     }
 
     deriveSecondaryData();
-    changed(QObject::tr("Changed activity to '%1' for complete track.").arg(name), icon);
-    notifyChange();
+    changed(tr("Changed activity to '%1' for complete track.").arg(name), icon);
 }
 
 void CGisItemTrk::setActivity()
 {
-    if((mouseRange1 == 0) && (mouseRange2 == 0))
+    if((mouseRange1 == nullptr) && (mouseRange2 == nullptr))
     {
         return;
     }
@@ -2148,7 +2247,7 @@ void CGisItemTrk::setActivity()
             {
                 trkpt_t& trkpt = seg.pts[i];
 
-                if((idx1 < trkpt.idxTotal) && (trkpt.idxTotal < idx2))
+                if((idx1 < trkpt.idxTotal) && (trkpt.idxTotal <= idx2))
                 {
                     trkpt.flags &= ~trkpt_t::eActMask;
                     trkpt.flags |= flag;
@@ -2156,12 +2255,11 @@ void CGisItemTrk::setActivity()
             }
         }
     }
-    mouseRange1 = 0;
-    mouseRange2 = 0;
+    mouseRange1 = nullptr;
+    mouseRange2 = nullptr;
     rangeState  = eRangeStateIdle;
     deriveSecondaryData();
-    changed(QObject::tr("Changed activity to '%1' for range(%2..%3).").arg(name).arg(idx1).arg(idx2), icon);
-    notifyChange();
+    changed(tr("Changed activity to '%1' for range(%2..%3).").arg(name).arg(idx1).arg(idx2), icon);
 }
 
 
@@ -2178,11 +2276,9 @@ void CGisItemTrk::setColor(const QColor& c)
     }
 
     color  = IGisItem::colorMap[colorIdx].color;
-    qDebug() << color;
     bullet = QPixmap(IGisItem::colorMap[colorIdx].bullet);
 
     setIcon(color2str(color));
-    notifyChange();
 }
 
 void CGisItemTrk::setIcon(const QString& iconColor)
@@ -2198,9 +2294,11 @@ void CGisItemTrk::setIcon(const QString& iconColor)
     QTreeWidgetItem::setIcon(CGisListWks::eColumnIcon,icon);
 }
 
+
+
 bool CGisItemTrk::setMouseFocusByDistance(qreal dist, focusmode_e fmode, const QString &owner)
 {
-    const trkpt_t * newPointOfFocus = 0;
+    const trkpt_t * newPointOfFocus = nullptr;
 
     if(dist != NOFLOAT)
     {
@@ -2236,7 +2334,7 @@ bool CGisItemTrk::setMouseFocusByDistance(qreal dist, focusmode_e fmode, const Q
 
 bool CGisItemTrk::setMouseFocusByTime(quint32 time, focusmode_e fmode, const QString &owner)
 {
-    const trkpt_t * newPointOfFocus = 0;
+    const trkpt_t * newPointOfFocus = nullptr;
 
     if(time != NOTIME)
     {
@@ -2274,7 +2372,7 @@ QPointF CGisItemTrk::setMouseFocusByPoint(const QPoint& pt, focusmode_e fmode, c
 {
     QMutexLocker lock(&mutexItems);
 
-    const trkpt_t * newPointOfFocus = 0;
+    const trkpt_t * newPointOfFocus = nullptr;
     quint32 idx = 0;
 
     const QPolygonF& line = (mode == eModeRange) ? lineFull : lineSimple;
@@ -2307,7 +2405,7 @@ QPointF CGisItemTrk::setMouseFocusByPoint(const QPoint& pt, focusmode_e fmode, c
     }
     if(!publishMouseFocus(newPointOfFocus, fmode, owner))
     {
-        newPointOfFocus = 0;
+        newPointOfFocus = nullptr;
     }
 
     /*
@@ -2320,7 +2418,7 @@ QPointF CGisItemTrk::setMouseFocusByPoint(const QPoint& pt, focusmode_e fmode, c
 
 bool CGisItemTrk::setMouseFocusByTotalIndex(qint32 idx, focusmode_e fmode, const QString &owner)
 {
-    const trkpt_t * newPointOfFocus = 0;
+    const trkpt_t * newPointOfFocus = nullptr;
 
     foreach (const trkseg_t &seg, trk.segs)
     {
@@ -2338,6 +2436,11 @@ bool CGisItemTrk::setMouseFocusByTotalIndex(qint32 idx, focusmode_e fmode, const
 
 const CGisItemTrk::trkpt_t * CGisItemTrk::getTrkPtByVisibleIndex(qint32 idx)
 {
+    if(idx == NOIDX)
+    {
+        return nullptr;
+    }
+
     foreach (const trkseg_t &seg, trk.segs)
     {
         foreach(const trkpt_t &pt, seg.pts)
@@ -2348,7 +2451,7 @@ const CGisItemTrk::trkpt_t * CGisItemTrk::getTrkPtByVisibleIndex(qint32 idx)
             }
         }
     }
-    return 0;
+    return nullptr;
 }
 
 const CGisItemTrk::trkpt_t * CGisItemTrk::getTrkPtByTotalIndex(qint32 idx)
@@ -2363,7 +2466,7 @@ const CGisItemTrk::trkpt_t * CGisItemTrk::getTrkPtByTotalIndex(qint32 idx)
             }
         }
     }
-    return 0;
+    return nullptr;
 }
 
 bool CGisItemTrk::isTrkPtLastVisible(qint32 idxTotal)
@@ -2429,7 +2532,7 @@ void CGisItemTrk::publishMouseFocusRangeMode(const trkpt_t * pt, focusmode_e fmo
     {
     case eRangeStateIdle:
     {
-        if((fmode == eFocusMouseClick) && (pt != 0))
+        if((fmode == eFocusMouseClick) && (pt != nullptr))
         {
             mouseRange1 = pt;
             rangeState  = eRangeState1st;
@@ -2441,7 +2544,7 @@ void CGisItemTrk::publishMouseFocusRangeMode(const trkpt_t * pt, focusmode_e fmo
     case eRangeState1st:
     {
         mouseRange2 = pt;
-        if((fmode == eFocusMouseClick) && (pt != 0))
+        if((fmode == eFocusMouseClick) && (pt != nullptr))
         {
             rangeState  = eRangeState2nd;
         }
@@ -2452,24 +2555,16 @@ void CGisItemTrk::publishMouseFocusRangeMode(const trkpt_t * pt, focusmode_e fmo
     {
         if(fmode == eFocusMouseClick)
         {
-            mouseRange1 = 0;
-            mouseRange2 = 0;
+            mouseRange1 = nullptr;
+            mouseRange2 = nullptr;
             rangeState  = eRangeStateIdle;
         }
         break;
     }
     }
 
-    foreach(IPlot * plot, registeredPlots)
-    {
-        plot->setMouseFocus(pt);
-        plot->setMouseRangeFocus(mouseRange1, mouseRange2);
-    }
-    if(!dlgDetails.isNull())
-    {
-        dlgDetails->setMouseFocus(pt);
-        dlgDetails->setMouseRangeFocus(mouseRange1, mouseRange2);
-    }
+    setMouseFocusVisuals(pt);
+    setMouseRangeFocusVisuals(mouseRange1, mouseRange2);
 }
 void CGisItemTrk::publishMouseFocusNormalMode(const trkpt_t * pt, focusmode_e fmode)
 {
@@ -2479,18 +2574,8 @@ void CGisItemTrk::publishMouseFocusNormalMode(const trkpt_t * pt, focusmode_e fm
         if(pt != mouseMoveFocus)
         {
             mouseMoveFocus = pt;
-
-            foreach(IPlot * plot, registeredPlots)
-            {
-                plot->setMouseFocus(pt);
-                plot->setMouseRangeFocus(0, 0);
-            }
-
-            if(!dlgDetails.isNull())
-            {
-                dlgDetails->setMouseFocus(pt);
-                dlgDetails->setMouseRangeFocus(0, 0);
-            }
+            setMouseFocusVisuals(pt);
+            setMouseRangeFocusVisuals(0, 0);
         }
         break;
 
@@ -2498,10 +2583,7 @@ void CGisItemTrk::publishMouseFocusNormalMode(const trkpt_t * pt, focusmode_e fm
         if(pt != mouseClickFocus)
         {
             mouseClickFocus =  pt;
-            if(!dlgDetails.isNull())
-            {
-                dlgDetails->setMouseClickFocus(pt);
-            }
+            setMouseClickFocusVisuals(pt);
         }
 
     default:
@@ -2512,9 +2594,69 @@ void CGisItemTrk::publishMouseFocusNormalMode(const trkpt_t * pt, focusmode_e fm
 void CGisItemTrk::changed(const QString& what, const QString& icon)
 {
     IGisItem::changed(what, icon);
+    updateVisuals(eVisualAll, "changed()");
+}
+
+void CGisItemTrk::updateHistory(quint32 visuals)
+{
+    IGisItem::updateHistory();
+    updateVisuals(visuals, "updateHistory()");
+}
+
+
+void CGisItemTrk::updateVisuals(quint32 visuals, const QString& who)
+{
+    qDebug() << "CGisItemTrk::updateVisuals()" << getName() << who;
+
+    if(!dlgDetails.isNull() && (visuals & eVisualDetails))
+    {
+        dlgDetails->updateData();
+    }
+
+    foreach(INotifyTrk * visual, registeredVisuals)
+    {
+        if(visuals & visual->mask)
+        {
+            visual->updateData();
+        }
+    }
+}
+
+void CGisItemTrk::setMouseFocusVisuals(const CGisItemTrk::trkpt_t * pt)
+{
     if(!dlgDetails.isNull())
     {
-        dlgDetails->setupGui();
+        dlgDetails->setMouseFocus(pt);
+    }
+
+    foreach(INotifyTrk * visual, registeredVisuals)
+    {
+        visual->setMouseFocus(pt);
     }
 }
 
+void CGisItemTrk::setMouseRangeFocusVisuals(const CGisItemTrk::trkpt_t * pt1, const CGisItemTrk::trkpt_t * pt2)
+{
+    if(!dlgDetails.isNull())
+    {
+        dlgDetails->setMouseRangeFocus(pt1, pt2);
+    }
+
+    foreach(INotifyTrk * visual, registeredVisuals)
+    {
+        visual->setMouseRangeFocus(pt1, pt2);
+    }
+}
+
+void CGisItemTrk::setMouseClickFocusVisuals(const CGisItemTrk::trkpt_t * pt)
+{
+    if(!dlgDetails.isNull())
+    {
+        dlgDetails->setMouseClickFocus(pt);
+    }
+
+    foreach(INotifyTrk * visual, registeredVisuals)
+    {
+        visual->setMouseClickFocus(pt);
+    }
+}
diff --git a/src/gis/trk/CGisItemTrk.h b/src/gis/trk/CGisItemTrk.h
index ce52bd8..41f9e81 100644
--- a/src/gis/trk/CGisItemTrk.h
+++ b/src/gis/trk/CGisItemTrk.h
@@ -22,7 +22,8 @@
 #include "gis/IGisItem.h"
 #include "gis/IGisLine.h"
 #include "gis/trk/CActivityTrk.h"
-#include "helpers/INotifiable.h"
+#include "helpers/CLimit.h"
+#include "helpers/CValue.h"
 
 #include <QPen>
 #include <QPointer>
@@ -39,15 +40,19 @@ class IQlgtOverlay;
 class QDir;
 class CProgressDialog;
 class CPropertyTrk;
+class CColorLegend;
+class CFitStream;
 
 #define TRK_N_COLORS          17
 #define ASCEND_THRESHOLD       5
 
 #include <QDebug>
 
+class INotifyTrk;
 
 class CGisItemTrk : public IGisItem, public IGisLine
 {
+    Q_DECLARE_TR_FUNCTIONS(CGisItemTrk)
 public:
     struct trk_t;
     struct trkpt_t;
@@ -64,6 +69,17 @@ public:
         , eModeRange
     };
 
+    enum visual_e
+    {
+        eVisualNone          = 0
+        , eVisualColorLegend = 0x01
+        , eVisualPlot        = 0x02
+        , eVisualDetails     = 0x04
+        , eVisualProject     = 0x08
+        , eVisualColorAct    = 0x10
+        , eVisualAll         = -1
+    };
+
     /**
        @brief Used to create a new track from a part of an existing track
        @param name
@@ -100,7 +116,7 @@ public:
        @param hist
        @param project
      */
-    CGisItemTrk(const history_t& hist, IGisProject * project);
+    CGisItemTrk(const history_t& hist, const QString& dbHash, IGisProject * project);
     /**
        @brief Used to restore track from database
        @param id
@@ -122,13 +138,43 @@ public:
 
     CGisItemTrk(const IQlgtOverlay& ovl);
 
+    /**
+       @brief Creates a new track via provided trkdata
+       @param trkdata  The track's new data (will be moved, don't use your "copy" after construction!
+       @param project  The project this track belongs to
+     */
+    CGisItemTrk(trk_t& trkdata, IGisProject *project);
+
+    CGisItemTrk(CFitStream& stream, IGisProject * project);
+
     virtual ~CGisItemTrk();
 
     /**
+       @brief Overide IGisItem::updateHistory() method
+
+        same as changed();
+
+     */
+    void updateHistory(quint32 visuals);
+
+    /**
+       @brief Update all registered visuals viw the INotifyTrk interface
+       @param a bit field of visuals to be updated
+       @param who a string for debug puposes
+     */
+    void updateVisuals(quint32 visuals, const QString &who);
+
+    /**
+       @brief Create a cloned copy of this track
+       @return The cloned item a pointer
+     */
+    IGisItem * createClone() override;
+
+    /**
        @brief Save track to GPX tree
        @param gpx   The <gpx> node to append by the track
      */
-    void save(QDomNode& gpx);
+    void save(QDomNode& gpx) override;
     /**
        @brief Save track to TwoNav track file
        @param dir   the path to store the file
@@ -139,16 +185,16 @@ public:
        @param stream  the data stream to read from
        @return A reference to the stream
      */
-    QDataStream& operator<<(QDataStream& stream);
+    QDataStream& operator<<(QDataStream& stream) override;
     /**
        @brief Serialize track into a binary data stream
        @param stream  the data stream to write to.
        @return A reference to the stream
      */
-    QDataStream& operator>>(QDataStream& stream) const;
+    QDataStream& operator>>(QDataStream& stream) const override;
 
     /// get name of track
-    const QString& getName() const
+    const QString& getName() const override
     {
         return trk.name.isEmpty() ? noName : trk.name;
     }
@@ -165,13 +211,12 @@ public:
         return color;
     }
 
-
     /**
        @brief get a summary of the track
-       @param allowEdit if true the track name is a link to allow interactions like edit
+       @param showName  if true the track name is shown
        @return
      */
-    QString getInfo(bool allowEdit = false) const;
+    QString getInfo(bool showName = true) const override;
     /// get a summary of a selected range
     QString getInfoRange();
     /// get a summary of a selected range defined by two track points
@@ -206,22 +251,22 @@ public:
         return totalDistance;
     }
 
-    const QString& getComment() const
+    const QString& getComment() const override
     {
         return trk.cmt;
     }
-    const QString& getDescription() const
+    const QString& getDescription() const override
     {
         return trk.desc;
     }
-    const QList<link_t>& getLinks() const
+    const QList<link_t>& getLinks() const override
     {
         return trk.links;
     }
     /// get the track as a simple coordinate polyline
     void getPolylineFromData(QPolygonF &l);
     /// get the track as polyline with elevation, pixel and GIS coordinates.
-    void getPolylineFromData(SGisLine& l);
+    void getPolylineFromData(SGisLine& l) override;
 
     const QDateTime& getTimeStart() const
     {
@@ -242,6 +287,8 @@ public:
     {
         return propHandler;
     }
+
+
     /** @defgroup ColorSource Stuff related to coloring tracks using data from different sources
 
         @{
@@ -259,9 +306,9 @@ public:
 
         @return  The new source to use.
      */
-    QString getColorizeSource()
+    QString getColorizeSource() const
     {
-        return colorSource;
+        return colorSourceLimit.getSource();
     }
 
     QStringList getExistingDataSources() const;
@@ -269,30 +316,31 @@ public:
     void setColorizeLimitLow(qreal limit);
     qreal getColorizeLimitLow() const
     {
-        return limitLow;
+        return colorSourceLimit.getMin();
     }
 
     void setColorizeLimitHigh(qreal limit);
     qreal getColorizeLimitHigh() const
     {
-        return limitHigh;
+        return colorSourceLimit.getMax();
     }
 
+    void setColorizeLimits(qreal low, qreal high);
+
     const QString getColorizeUnit() const;
 
-    void getExtrema(qreal &min, qreal &max, const QString &source) const;
+    qreal getMin(const QString& source) const;
+    qreal getMax(const QString& source) const;
 
 private:
-    QString colorSource  = "";
-
-    // the low and high limit for (slope-)colored drawing of tracks
-    qreal limitLow  = -10;
-    qreal limitHigh =  10;
-
     void drawColorized(QPainter &p);
+    void drawColorizedByActivity(QPainter& p);
+    void setPen(QPainter& p, QPen& pen, quint32 flag);
     /**@}*/
 
 
+
+public:
     /**
        @brief Get the indices of visible points for a selected range
 
@@ -301,16 +349,16 @@ private:
        @param idx1 a reference to receive the first index
        @param idx2 a reference to receive the second index
      */
-public:
     void getSelectedVisiblePoints(qint32& idx1, qint32& idx2);
 
     void setName(const QString& str);
     void setColor(int idx);
+    /// set the width of the inner track line by factor
     bool setMode(mode_e m, const QString &owner);
-    void setComment(const QString& str);
-    void setDescription(const QString& str);
-    void setLinks(const QList<link_t>& links);
-    void setDataFromPolyline(const SGisLine &l);
+    void setComment(const QString& str)         override;
+    void setDescription(const QString& str)         override;
+    void setLinks(const QList<link_t>& links) override;
+    void setDataFromPolyline(const SGisLine &l)          override;
 
     /**
        @brief display the track screen options
@@ -319,24 +367,24 @@ public:
        @param mouse     the mouse object causing the request
        @return          a pointer to the screen option widget
      */
-    IScrOpt * getScreenOptions(const QPoint &origin, IMouse * mouse);
+    IScrOpt * getScreenOptions(const QPoint &origin, IMouse * mouse) override;
     /**
        @brief Get a screen pixel of the track close to the given position on the screen
        @param screenPos Screen position as pixel coordinate
        @return The screen coordinates as pixel of a track point close by
      */
-    QPointF getPointCloseBy(const QPoint& screenPos);
+    QPointF getPointCloseBy(const QPoint& screenPos) override;
     /**
        @brief isCloseTo
        @param pos Screen position as pixel coordinate
        @return True if point is considered close enough
      */
-    bool isCloseTo(const QPointF& pos);
+    bool isCloseTo(const QPointF& pos) override;
 
-    void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis);
-    void drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis);
-    void drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis);
-    void drawHighlight(QPainter& p);
+    void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis) override;
+    void drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis) override;
+    void drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis) override;
+    void drawHighlight(QPainter& p) override;
     void drawRange(QPainter& p);
 
     /**
@@ -346,7 +394,7 @@ public:
 
        @param yes   set true to gain focus.
      */
-    void gainUserFocus(bool yes);
+    void gainUserFocus(bool yes) override;
     /**
        @brief Make sure the track has lost focus.
 
@@ -358,7 +406,7 @@ public:
     /**
        @brief Make sure a CDetailsTrk widget is registered with the main tab widget
      */
-    void edit();
+    void edit() override;
 
     /**
        @brief Cut track at mouseClickFocus
@@ -432,7 +480,7 @@ public:
 
        @return True if the track has user focus
      */
-    bool hasUserFocus() const
+    bool hasUserFocus() const override
     {
         return key == keyUserFocus;
     }
@@ -454,7 +502,7 @@ public:
 
        @param plot
      */
-    void registerPlot(IPlot * plot);
+    void registerVisual(INotifyTrk * visual);
 
     /**
        @brief Each plot widget that operates on the track must unregister during it's destruction
@@ -463,7 +511,7 @@ public:
 
        @param plot
      */
-    void unregisterPlot(IPlot * plot);
+    void unregisterVisual(INotifyTrk * visual);
 
     /**
        @brief Use point with the distance from start matching best the given distance.
@@ -565,6 +613,18 @@ public:
        @param speed speed in meter per seconds
      */
     void filterSpeed(qreal speed);
+    /**
+       @brief filterSplitSegment
+
+       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
+     */
+    void filterSplitSegment();
+    /**
+       @brief filterDeleteExtension
+
+       @note All filter implementations are found in src/gis/trk/filter/filter.cpp
+     */
+    void filterDeleteExtension(const QString &ext);
 
     /**
        @brief Correlate waypoints with the track points
@@ -578,7 +638,13 @@ public:
     void findWaypointsCloseBy(CProgressDialog &progress, quint32 &current);
 
 private:
-    void setSymbol();
+    /// no don't really use it, use CGisItemTrk(quint32 visuals) instead
+    void updateHistory() override
+    {
+        updateHistory(eVisualAll);
+    }
+
+    void setSymbol() override;
     /**
        @brief Read track data from section in GPX file
        @param xml   The XML <trk> section
@@ -592,12 +658,23 @@ private:
      */
     bool readTwoNav(const QString& filename);
     /**
+       @brief Read serialized track data from a FIT file stream
+       @param stream
+     */
+    void readTrkFromFit(CFitStream &stream);
+
+    /**
        @brief Derive secondary data from the track data
 
        This has to be called each time the track data is changed.
      */
     void deriveSecondaryData();
 
+    /**
+     * @brief Reset internal data like range selection and details dialog
+     */
+    void resetInternalData();
+
 
     /** @defgroup ExtremaExtensions Stuff related to calculation of extremas/extensions
 
@@ -680,13 +757,17 @@ private:
        @param what  The reason string
        @param icon  An icon string
      */
-    void changed(const QString& what, const QString& icon);
+    void changed(const QString& what, const QString& icon) override;
 
     /// setup colorIdx, color, bullet and icon
     void setColor(const QColor& c);
     /// setup track icon by color
     void setIcon(const QString& iconColor);
 
+    void setMouseFocusVisuals(const CGisItemTrk::trkpt_t * pt);
+    void setMouseRangeFocusVisuals(const CGisItemTrk::trkpt_t * pt1, const CGisItemTrk::trkpt_t * pt2);
+    void setMouseClickFocusVisuals(const CGisItemTrk::trkpt_t * pt);
+
 public:
     struct trkpt_t : public wpt_t
     {
@@ -723,13 +804,14 @@ public:
             ,eActSwim   = 0x04000000
             ,eActShip   = 0x02000000
             ,eActAero   = 0x01000000
-            ,eActMask   = 0xFF000000    ///< mask for activity flags
-            ,eActMaxNum = 8             ///< maximum number of activity flags. this is defined by the mask
+            ,eActSki    = 0x00800000
+            ,eActMask   = 0xFF800000    ///< mask for activity flags
+            ,eActMaxNum = 9             ///< maximum number of activity flags. this is defined by the mask
         };
 
         quint32 flags = 0;
         /// index within the complete track
-        qint32 idxTotal;
+        qint32 idxTotal = NOIDX;
         /// offset into lineSimple
         qint32 idxVisible;
 
@@ -790,8 +872,49 @@ public:
         return trk;
     }
 
-    void registerNotification(INotifiable *obj);
-    void unregisterNotification(INotifiable *obj);
+    void updateFromDB(quint64 id, QSqlDatabase& db) override;
+
+private:
+    fGetLimit _getMin = [this](const QString& source)
+                        {
+                            return getMin(source);
+                        };
+
+    fGetLimit _getMax = [this](const QString& source)
+                        {
+                            return getMax(source);
+                        };
+
+    qreal   getMinProp(const QString& source) const;
+    qreal   getMaxProp(const QString& source) const;
+    QString getUnitProp(const QString& source) const;
+
+    fGetLimit _getMinProp = [this](const QString& source)
+                            {
+                                return getMinProp(source);
+                            };
+
+    fGetLimit _getMaxProp = [this](const QString& source)
+                            {
+                                return getMaxProp(source);
+                            };
+
+    fGetUnit _getUnitProp = [this](const QString& source)
+                            {
+                                return getUnitProp(source);
+                            };
+
+    fMarkChanged _markChanged = [this]()
+                                {
+                                    updateHistory(eVisualNone);
+                                };
+
+public:
+    CLimit limitsGraph1 {"TrackDetails/Graph1", _getMin, _getMax, _getMinProp, _getMaxProp, _getUnitProp, _markChanged};
+    CLimit limitsGraph2 {"TrackDetails/Graph2", _getMin, _getMax, _getMinProp, _getMaxProp, _getUnitProp, _markChanged};
+    CLimit limitsGraph3 {"TrackDetails/Graph3", _getMin, _getMax, _getMinProp, _getMaxProp, _getUnitProp, _markChanged};
+
+    CLimit colorSourceLimit {"TrackDetails/Style", _getMin, _getMax, _getMin, _getMax, _getUnitProp, _markChanged};
 
 private:
     /// this is the GPX structure oriented data of the track
@@ -799,8 +922,6 @@ private:
 
     /// the key of the track having the user focus.
     static key_t keyUserFocus;
-    /// background (border) color of all tracks
-    static const QPen penBackground;
     /// drawing and mouse interaction is dependent on the mode
     mode_e mode = eModeNormal;
 
@@ -827,19 +948,48 @@ private:
     unsigned colorIdx = 4;
     /// the track line color
     QColor color;
-    /// the pen with the actual track color
-    QPen penForeground {Qt::blue, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin};
+
     /// the trackpoint bullet icon
     QPixmap bullet;
     /// the current track line as screen pixel coordinates
     QPolygonF lineSimple;
     /// visible and invisible points
     QPolygonF lineFull;
+
+
+    /// inner trackline width
+    qint32 penWidthFg = 3;
+    /// outer trackline width
+    qint32 penWidthBg = 5;
+    /// highlighted trackline width
+    qint32 penWidthHi = 11;
+    /// the pen with the actual track color
+    QPen penForeground {Qt::blue, qreal(penWidthFg), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin};
+    /// background (border) color of all tracks
+    QPen penBackground {Qt::white, qreal(penWidthBg), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin};
+
+
+    fValueOnChange onChange = [this](const QVariant& val)
+                              {
+                                  int w = qRound(3.0 * val.toDouble());
+
+                                  penWidthFg = w;
+                                  penWidthBg = w + 2;
+                                  penWidthHi = w + 8;
+
+                                  penForeground.setWidth(penWidthFg);
+                                  penBackground.setWidth(penWidthBg);
+                              };
+
+public:
+    CValue lineScale     {"TrackDetails/lineScale", 1.0, _markChanged, onChange};
+    CValue showArrows    {"TrackDetails/showArrows", true, _markChanged};
+private:
     /**@}*/
 
 
     /**
-        A list of plot objects that need to get informed on any change in data.
+        A list of INotifyTrk objects that need to get informed on any change in data.
 
         @note This is necessary because QTreeWidgetItem is not derived from QObject.
               Thus no signals and slots can be handled. Probably this is because the
@@ -847,20 +997,21 @@ private:
               amount of items.
 
               Anyway we need some kind of signaling between the track object and the
-              plot objects displaying the data. And we have to keep in mind that
+              INotifyTrk objects displaying the data. And we have to keep in mind that
               the track can be delete by the user at any time. That is why no other
               object is allowed to save a pointer to the track. It must store the
               key. But accessing the track via key is expensive.
 
               That is why we make an exception here. As the track will delete all
-              registered plot objects upon destruction, it should be ok to store
-              the track object in the plot object, too. By that plot and track can
+              registered INotifyTrk objects upon destruction, it should be ok to store
+              the track object in the INotifyTrk object, too. By that INotifyTrk and track can
               easily communicate with each other.
-     */
-    QSet<IPlot*> registeredPlots;
 
-    QSet<INotifiable*> notifyOnChange;
-    void notifyChange();
+        @note CDetailsTrk is an INotifyTrk, too. But it is a bit special as it has to be destroyed
+              right after all other INotifyTrk have been destroyed. That is why it is not part of
+              that set.
+     */
+    QSet<INotifyTrk*> registeredVisuals;
 
     /**
         \defgroup FocusRange Variables to handle mouse focus and range selection
@@ -887,17 +1038,18 @@ private:
     QString mouseFocusOwner;
 
     /// the current track point selected by mouse movement
-    const trkpt_t * mouseMoveFocus = 0;
+    const trkpt_t * mouseMoveFocus  = nullptr;
     /// the last track point the user clicked on
-    const trkpt_t * mouseClickFocus = 0;
+    const trkpt_t * mouseClickFocus = nullptr;
     /// the first point of a range selection
-    const trkpt_t * mouseRange1 = 0;
+    const trkpt_t * mouseRange1     = nullptr;
     /// the second point of a range selection
-    const trkpt_t * mouseRange2 = 0;
+    const trkpt_t * mouseRange2     = nullptr;
     /**@}*/
 
     /// the track's details dialog if any
     QPointer<CDetailsTrk> dlgDetails;
+
     /// the track's screen option if visible
     QPointer<CScrOptTrk>  scrOpt;
 
@@ -908,6 +1060,20 @@ private:
     CPropertyTrk * propHandler = nullptr;
 };
 
+class INotifyTrk
+{
+public:
+    INotifyTrk(CGisItemTrk::visual_e mask) : mask(mask){}
+    virtual ~INotifyTrk() = default;
+
+    virtual void updateData() = 0;
+    virtual void setMouseFocus(const CGisItemTrk::trkpt_t * pt) = 0;
+    virtual void setMouseRangeFocus(const CGisItemTrk::trkpt_t * pt1, const CGisItemTrk::trkpt_t * pt2) = 0;
+    virtual void setMouseClickFocus(const CGisItemTrk::trkpt_t * pt) = 0;
+
+    const CGisItemTrk::visual_e mask;
+};
+
 using fTrkPtGetVal = std::function<qreal(const CGisItemTrk::trkpt_t&)>;
 
 #endif //CGISITEMTRK_H
diff --git a/src/gis/trk/CKnownExtension.cpp b/src/gis/trk/CKnownExtension.cpp
index bcf38c6..e7dead2 100644
--- a/src/gis/trk/CKnownExtension.cpp
+++ b/src/gis/trk/CKnownExtension.cpp
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2015 Christian Eichler code at christian-eichler.de
+    Copyright (C) 2015-2016 Christian Eichler code at christian-eichler.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -18,20 +18,14 @@
 
 #include "gis/trk/CKnownExtension.h"
 #include "units/IUnit.h"
+#include <QStringBuilder>
 
-QHash<QString, CKnownExtension> CKnownExtension::knownExtensions;
+const QString CKnownExtension::internalSlope    = "::ql:slope";
+const QString CKnownExtension::internalSpeed    = "::ql:speed";
+const QString CKnownExtension::internalEle      = "::ql:ele";
+const QString CKnownExtension::internalProgress = "::ql:progress";
 
-CKnownExtension::CKnownExtension(QString name,
-                                 qreal defLimitLow, qreal defLimitHigh,
-                                 qreal minimum, qreal maximum,
-                                 qreal factor, QString unit,
-                                 QString icon, bool known,
-                                 fTrkPtGetVal valueFunc
-                                 ) : name(name), defLimitLow(defLimitLow), defLimitHigh(defLimitHigh),
-    minimum(minimum), maximum(maximum), factor(factor), unit(unit),
-    icon(icon), known(known), valueFunc(valueFunc)
-{
-}
+QHash<QString, CKnownExtension> CKnownExtension::knownExtensions;
 
 static fTrkPtGetVal getExtensionValueFunc(const QString ext)
 {
@@ -43,89 +37,89 @@ static fTrkPtGetVal getExtensionValueFunc(const QString ext)
            };
 }
 
-void CKnownExtension::init(IUnit &units)
+void CKnownExtension::initGarminTPXv1(IUnit &units, const QString &ns)
 {
-    const QString &speedunit   = units.speedunit;
-    const qreal   &speedfactor = units.speedfactor;
+    // support for the Garmin TrackPointExtension v1
+    //  https://www8.garmin.com/xmlschemas/TrackPointExtensionv1.xsd
+    knownExtensions.insert(ns % ":TrackPointExtension|" % ns % ":atemp",
+                           { tr("Air Temperature"), 0, -100., 100., 1., "°C", "://icons/32x32/CSrcATemp.png", true, false,
+                             getExtensionValueFunc("gpxtpx:TrackPointExtension|gpxtpx:atemp")});
+
+    knownExtensions.insert(ns % ":TrackPointExtension|" % ns % ":wtemp",
+                           { tr("Water Temperature"), 1, -100., 100., 1., "°C", "://icons/32x32/CSrcWTemp.png", true, false,
+                             getExtensionValueFunc("gpxtpx:TrackPointExtension|gpxtpx:wtemp")});
+
+    knownExtensions.insert(ns % ":TrackPointExtension|" % ns % ":depth",
+                           { tr("Depth"), 2, 0., 12000., units.basefactor, units.baseunit, "://icons/32x32/CSrcDepth.png", true, false,
+                             getExtensionValueFunc("gpxtpx:TrackPointExtension|gpxtpx:depth")});
+
+    knownExtensions.insert(ns % ":TrackPointExtension|" % ns % ":hr",
+                           { tr("Heart Rate"), 3, 0., 300., 1., "bpm", "://icons/32x32/CSrcHR.png", true, false,
+                             getExtensionValueFunc("gpxtpx:TrackPointExtension|gpxtpx:hr")});
+
+    knownExtensions.insert(ns % ":TrackPointExtension|" % ns % ":cad",
+                           { tr("Cadence"), 4, 0., 500., 1., "rpm", "://icons/32x32/CSrcCAD.png", true, false,
+                             getExtensionValueFunc("gpxtpx:TrackPointExtension|gpxtpx:cad")});
+}
 
-    const QString &baseunit    = units.baseunit;
-    const qreal   &basefactor  = units.basefactor;
+void CKnownExtension::initMioTPX(IUnit &units)
+{
+    // support for extensions used by MIO Cyclo ver. 4.2 (who needs xml namespaces?!)
+    knownExtensions.insert("heartrate",
+                           { tr("Heart Rate"), std::numeric_limits<int>::max(), 0., 300., 1., "bpm", "://icons/32x32/CSrcHR.png", true, false,
+                             getExtensionValueFunc("heartrate")});
+
+    knownExtensions.insert("cadence",
+                           { tr("Cadence"), std::numeric_limits<int>::max(), 0., 500., 1., "rpm", "://icons/32x32/CSrcCAD.png", true, false,
+                             getExtensionValueFunc("cadence")});
+
+    knownExtensions.insert("speed",
+                           { tr("Speed"), std::numeric_limits<int>::max(), 0., 600., units.speedfactor, units.speedunit, "://icons/32x32/CSrcSpeed.png", true, false,
+                             getExtensionValueFunc("speed")});
+
+    knownExtensions.insert("acceleration",
+                           { tr("Acceleration"), std::numeric_limits<int>::max(), std::numeric_limits<qreal>::lowest(), std::numeric_limits<qreal>::max(), units.basefactor, units.baseunit + "/s²", "://icons/32x32/CSrcAccel.png", true, false,
+                             getExtensionValueFunc("acceleration")});
+
+    knownExtensions.insert("course",
+                           { tr("Course"), std::numeric_limits<int>::max(), -3.2, 3.2, 1., "rad", "://icons/32x32/CSrcCourse.png", true, false,
+                             getExtensionValueFunc("course")});
+}
 
+void CKnownExtension::init(IUnit &units)
+{
     knownExtensions =
     {
-        {"slope",
-         { QObject::tr("Slope (directed)"), -10., 10., -90., 90., 1., "°", "://icons/32x32/CSrcSlope.png", true,
+        {internalSlope,
+         { tr("Slope*"), -1, -90., 90., 1., "°", "://icons/32x32/CSrcSlope.png", true, true,
            [](const CGisItemTrk::trkpt_t &p) { return p.slope1; }}
         },
 
-        {"speed",
-         { QObject::tr("Speed"), 1., 14., 0., 600., speedfactor, speedunit, "://icons/32x32/CSrcSpeed.png", true,
+        {internalSpeed,
+         { tr("Speed*"), -1, 0., 600., units.speedfactor, units.speedunit, "://icons/32x32/CSrcSpeed.png", true, true,
            [](const CGisItemTrk::trkpt_t &p) { return p.speed; }}
         },
 
-        {"ele",
-         { QObject::tr("Elevation"), 200., 800., 0., 100000., basefactor, baseunit, "://icons/32x32/CSrcElevation.png", true,
+        {internalEle,
+         { tr("Elevation"), -1, 0., 100000., units.basefactor, units.baseunit, "://icons/32x32/CSrcElevation.png", true, true,
            [](const CGisItemTrk::trkpt_t &p) { return (NOINT == p.ele) ? NOFLOAT : p.ele; }}
         },
 
-        // support for the Garmin TrackPointExtension v1
-        //  https://www8.garmin.com/xmlschemas/TrackPointExtensionv1.xsd
-        {"gpxtpx:TrackPointExtension|gpxtpx:hr",
-         { QObject::tr("Heart Rate"), 100., 200., 0., 300., 1., "bpm", "://icons/32x32/CSrcHR.png", true,
-           getExtensionValueFunc("gpxtpx:TrackPointExtension|gpxtpx:hr")}
-        },
-
-        {"gpxtpx:TrackPointExtension|gpxtpx:cad",
-         { QObject::tr("Cadence"), 50., 110., 0., 500., 1., "rpm", "://icons/32x32/CSrcCAD.png", true,
-           getExtensionValueFunc("gpxtpx:TrackPointExtension|gpxtpx:cad")}
-        },
-
-        {"gpxtpx:TrackPointExtension|gpxtpx:atemp",
-         { QObject::tr("Air Temperature"), 10., 30., -100., 100., 1., "°C", "://icons/32x32/CSrcATemp.png", true,
-           getExtensionValueFunc("gpxtpx:TrackPointExtension|gpxtpx:atemp")}
-        },
-
-        {"gpxtpx:TrackPointExtension|gpxtpx:wtemp",
-         { QObject::tr("Water Temperature"), 10., 30., -100., 100., 1., "°C", "://icons/32x32/CSrcWTemp.png", true,
-           getExtensionValueFunc("gpxtpx:TrackPointExtension|gpxtpx:wtemp")}
-        },
-
-        {"gpxtpx:TrackPointExtension|gpxtpx:depth",
-         { QObject::tr("Depth"), 0., 200., 0., 12000., basefactor, baseunit, "://icons/32x32/CSrcDepth.png", true,
-           getExtensionValueFunc("gpxtpx:TrackPointExtension|gpxtpx:depth")}
-        },
-
-
-        {"tp1:TrackPointExtension|tp1:hr",
-         { QObject::tr("Heart Rate"), 100., 200., 0., 300., 1., "bpm", "://icons/32x32/CSrcHR.png", true,
-           getExtensionValueFunc("tp1:TrackPointExtension|tp1:hr")}
-        },
-
-        {"tp1:TrackPointExtension|tp1:cad",
-         { QObject::tr("Cadence"), 50., 110., 0., 500., 1., "rpm", "://icons/32x32/CSrcCAD.png", true,
-           getExtensionValueFunc("tp1:TrackPointExtension|tp1:cad")}
-        },
-
-        {"tp1:TrackPointExtension|tp1:atemp",
-         { QObject::tr("Air Temperature"), 10., 30., -100., 100., 1., "°C", "://icons/32x32/CSrcATemp.png", true,
-           getExtensionValueFunc("tp1:TrackPointExtension|tp1:atemp")}
-        },
-
-        {"tp1:TrackPointExtension|tp1:wtemp",
-         { QObject::tr("Water Temperature"), 10., 30., -100., 100., 1., "°C", "://icons/32x32/CSrcWTemp.png", true,
-           getExtensionValueFunc("tp1:TrackPointExtension|tp1:wtemp")}
-        },
-
-        {"tp1:TrackPointExtension|tp1:depth",
-         { QObject::tr("Depth"), 0., 200., 0., 12000., basefactor, baseunit, "://icons/32x32/CSrcDepth.png", true,
-           getExtensionValueFunc("tp1:TrackPointExtension|tp1:depth")}
+        {internalProgress,
+         { tr("Progress"), -1, 0., NOFLOAT, units.basefactor, units.baseunit, "://icons/32x32/Progress.png", true, true,
+           [](const CGisItemTrk::trkpt_t &p) { return p.distance; }}
         }
     };
+
+    initGarminTPXv1(units, "gpxtpx");
+    initGarminTPXv1(units, "tp1");
+
+    initMioTPX(units);
 }
 
 const CKnownExtension CKnownExtension::get(const QString &name)
 {
-    CKnownExtension def("", 0., 100., -100000., 100000., 1., "", "://icons/32x32/CSrcUnknown.png", false,
+    CKnownExtension def("", std::numeric_limits<int>::max(), -100000., 100000., 1., "", "://icons/32x32/CSrcUnknown.png", false, true,
                         getExtensionValueFunc(name)
                         );
     return knownExtensions.value(name, def);
diff --git a/src/gis/trk/CKnownExtension.h b/src/gis/trk/CKnownExtension.h
index 9a3a41d..4b23d6a 100644
--- a/src/gis/trk/CKnownExtension.h
+++ b/src/gis/trk/CKnownExtension.h
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2015 Christian Eichler code at christian-eichler.de
+    Copyright (C) 2015-2016 Christian Eichler code at christian-eichler.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -22,36 +22,47 @@
 #include "gis/trk/CGisItemTrk.h"
 #include <functional>
 
-
 class CKnownExtension
 {
+    Q_DECLARE_TR_FUNCTIONS(CKnownExtension)
 public:
     static void init(IUnit &units);
 
+    static const QString internalSlope;
+    static const QString internalSpeed;
+    static const QString internalEle;
+    static const QString internalProgress;
+
     static const CKnownExtension get(const QString &name);
     static bool isKnown(const QString &name);
 
-    QString name;             //< userfriendly name ("Speed" "Heart Rate")
-    qreal defLimitLow;        //< the default lower limit
-    qreal defLimitHigh;       //< the default high limit
-    qreal minimum;            //< hard (enforced) minimum, cannot go lower
-    qreal maximum;            //< hard (enforced) maximum, cannot go higher
-    qreal factor;             //< factor used to convert a value to match the users' units
-    QString unit;             //< the unit (to be displayed)
-    QString icon;             //< path to an icon
+    QString name;              //< userfriendly name ("Speed" "Heart Rate")
+    int order;                 //< the order used for exporting ("relative position")
+    qreal minimum;             //< hard (enforced) minimum, cannot go lower
+    qreal maximum;             //< hard (enforced) maximum, cannot go higher
+    qreal factor;              //< factor used to convert a value to match the users' units
+    QString unit;              //< the unit (to be displayed)
+    QString icon;              //< path to an icon
     bool known;
+    bool derivedQMS;           //< if set to true the value is derived by QMS (p.x. slope*)
     fTrkPtGetVal valueFunc;    //< the function used to retrieve the value
 
 private:
-    CKnownExtension(QString name,
-                    qreal defLimitLow, qreal defLimitHigh,
-                    qreal minimum, qreal maximum,
-                    qreal factor, QString unit,
-                    QString icon, bool known,
-                    fTrkPtGetVal valueFunc
-                    );
-
     static QHash<QString, CKnownExtension> knownExtensions;
+
+    CKnownExtension(QString name,      int order,
+                    qreal minimum,     qreal maximum,
+                    qreal factor,      QString unit,
+                    QString icon,      bool known,
+                    bool derivedQMS,   fTrkPtGetVal valueFunc
+                    )
+        : name(name), order(order), minimum(minimum), maximum(maximum), factor(factor),
+        unit(unit), icon(icon), known(known), derivedQMS(derivedQMS), valueFunc(valueFunc)
+    {
+    }
+
+    static void initGarminTPXv1(IUnit &units, const QString &ns);
+    static void initMioTPX(IUnit &units);
 };
 
 #endif // CKNOWNEXTENSION_H
diff --git a/src/gis/trk/CPropertyTrk.cpp b/src/gis/trk/CPropertyTrk.cpp
index 63597a8..2d0b7a8 100644
--- a/src/gis/trk/CPropertyTrk.cpp
+++ b/src/gis/trk/CPropertyTrk.cpp
@@ -19,11 +19,12 @@
 #include "gis/trk/CGisItemTrk.h"
 #include "gis/trk/CKnownExtension.h"
 #include "gis/trk/CPropertyTrk.h"
+#include "plot/CPlot.h"
 #include "units/IUnit.h"
 
 #include <QtWidgets>
 
-CPropertyTrk::CPropertyTrk(const CGisItemTrk& trk)
+CPropertyTrk::CPropertyTrk(CGisItemTrk& trk)
     : trk(trk)
 {
     setupData();
@@ -35,41 +36,22 @@ void CPropertyTrk::setupData()
 
     property_t propNull
     {
-        ""
-        , ""
+        QString()
+        , QString()
+        , QString()
         , QIcon()
         , CPlotData::eAxisLinear
-        , ""
-        , ""
+        , QString()
+        , QString()
         , 1.0
         , nullptr
         , nullptr
     };
     properties << propNull;
 
-    property_t propProgress
-    {
-        "progress"
-        , QObject::tr("Progress")
-        , QIcon("://icons/32x32/Progress.png")
-        , CPlotData::eAxisTime
-        , QObject::tr("time")
-        , QObject::tr("distance [%1]").arg(IUnit::self().baseunit)
-        , IUnit::self().basefactor
-        , [](const CGisItemTrk::trkpt_t &p) {return p.time.toTime_t(); }
-        , [](const CGisItemTrk::trkpt_t &p) {return p.distance; }
-    };
-    properties << propProgress;
-
     QStringList keys = trk.getExistingDataSources();
     foreach(const QString &key, keys)
     {
-        // skip elevation as it is covered by the profile plot
-        if(key == "ele")
-        {
-            continue;
-        }
-
         const CKnownExtension &ext = CKnownExtension::get(key);
         QString name = (ext.known ? ext.name : key);
 
@@ -77,43 +59,71 @@ void CPropertyTrk::setupData()
         {
             key
             , name
+            , ext.unit
             , QIcon(ext.icon)
             , CPlotData::eAxisLinear
-            , QObject::tr("distance [%1]")
-            , QString("%1 [%2]").arg(name).arg(ext.unit)
+            , tr("distance [%1]").arg(IUnit::self().baseunit)
+            , ext.known ? QString("%1 [%2]").arg(name).arg(ext.unit) : name
             , ext.factor
             , [](const CGisItemTrk::trkpt_t &p) {return p.distance; }
             , ext.valueFunc
         };
 
-        // lame hack
-        if(key == "speed")
+        // lame hack for properties off the usual scheme
+        if(key == CKnownExtension::internalProgress)
         {
-            property.min = 0;
+            property.min        = 0;
+            property.axisType   = CPlotData::eAxisTime;
+            property.xLabel     = tr("time");
+            property.getX       = [](const CGisItemTrk::trkpt_t &p) {return p.time.isValid() ? p.time.toTime_t() : NOFLOAT; };
+        }
+
+        if(key == CKnownExtension::internalSpeed)
+        {
+            property.min        = 0;
         }
 
         properties << property;
     }
 }
 
+const CPropertyTrk::property_t& CPropertyTrk::propBySource(const QString& source) const
+{
+    foreach(const property_t &prop, properties)
+    {
+        if(prop.key == source)
+        {
+            return prop;
+        }
+    }
+
+    return properties[0];
+}
+
 void CPropertyTrk::fillComboBox(QComboBox * box) const
 {
     box->clear();
 
     foreach(const property_t &p, properties)
     {
+        if(p.key == CKnownExtension::internalEle)
+        {
+            // skip it as there is a dedicated profile plot
+            continue;
+        }
         box->addItem(p.icon, p.name, p.key);
     }
 }
 
-void CPropertyTrk::setupPlot(CPlot * plot, int idx) const
+void CPropertyTrk::setupPlot(CPlot * plot, const QString& source) const
 {
-    if(idx >= properties.size())
+    const property_t& p = propBySource(source);
+    if(p.name.isEmpty())
     {
         return;
     }
-    const property_t& p = properties[idx];
 
-    plot->setup(p.axisType, p.xLabel, p.yLabel, p.factor, p.getX, p.getY);
-    plot->setLimits(p.min, p.max);
+    plot->setup(p.key, p.axisType, p.xLabel, p.yLabel, p.factor, p.getX, p.getY);
+    return;
 }
+
diff --git a/src/gis/trk/CPropertyTrk.h b/src/gis/trk/CPropertyTrk.h
index 3f83f10..811e1c9 100644
--- a/src/gis/trk/CPropertyTrk.h
+++ b/src/gis/trk/CPropertyTrk.h
@@ -20,24 +20,27 @@
 #define CPROPERTYTRK_H
 
 #include "gis/trk/CGisItemTrk.h"
-#include "plot/CPlot.h"
 #include "plot/CPlotData.h"
 
 #include <QObject>
 
 class QComboBox;
+class CPlot;
+class CLimit;
 
 class CPropertyTrk
 {
+    Q_DECLARE_TR_FUNCTIONS(CPropertyTrk)
 public:
     virtual ~CPropertyTrk() = default;
 
     struct property_t
     {
         property_t() = default;
-        property_t(const QString& key, const QString& name, const QIcon& icon, CPlotData::axistype_e axisType, const QString& xLabel, const QString& yLabel, qreal factor, fTrkPtGetVal getX, fTrkPtGetVal getY)
+        property_t(const QString& key, const QString& name, const QString& unit, const QIcon& icon, CPlotData::axistype_e axisType, const QString& xLabel, const QString& yLabel, qreal factor, fTrkPtGetVal getX, fTrkPtGetVal getY)
             : key(key)
             , name(name)
+            , unit(unit)
             , icon(icon)
             , axisType(axisType)
             , xLabel(xLabel)
@@ -50,6 +53,7 @@ public:
 
         QString key;
         QString name;
+        QString unit;
         QIcon icon;
         CPlotData::axistype_e axisType = CPlotData::eAxisLinear;
         QString xLabel;
@@ -64,13 +68,14 @@ public:
     void fillComboBox(QComboBox * box) const;
 
     void setupData();
-    void setupPlot(CPlot * plot, int idx) const;
+    void setupPlot(CPlot * plot, const QString &source) const;
+    const property_t &propBySource(const QString& source) const;
 
 private:
     friend class CGisItemTrk;
-    CPropertyTrk(const CGisItemTrk &trk);
+    CPropertyTrk(CGisItemTrk &trk);
 
-    const CGisItemTrk& trk;
+    CGisItemTrk& trk;
 
     QList<property_t> properties;
 };
diff --git a/src/gis/trk/CScrOptTrk.cpp b/src/gis/trk/CScrOptTrk.cpp
index aafb636..c757375 100644
--- a/src/gis/trk/CScrOptTrk.cpp
+++ b/src/gis/trk/CScrOptTrk.cpp
@@ -52,25 +52,24 @@ CScrOptTrk::CScrOptTrk(CGisItemTrk * trk, const QPoint& point, IMouse *parent)
     move(anchor.toPoint() + QPoint(-width()/2,SCR_OPT_OFFSET));
     show();
 
-    connect(toolEditDetails, SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolDelete, SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolCopy, SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolProfile, SIGNAL(toggled(bool)), this, SLOT(hide()));
-    connect(toolCut, SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolEdit, SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolReverse, SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolCombine, SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolRange, SIGNAL(clicked()), this, SLOT(hide()));
-
-    connect(toolEditDetails, SIGNAL(clicked()), this, SLOT(slotEditDetails()));
-    connect(toolDelete, SIGNAL(clicked()), this, SLOT(slotDelete()));
-    connect(toolCopy, SIGNAL(clicked()), this, SLOT(slotCopy()));
-    connect(toolProfile, SIGNAL(toggled(bool)), this, SLOT(slotProfile(bool)));
-    connect(toolCut, SIGNAL(clicked()), this, SLOT(slotCut()));
-    connect(toolEdit, SIGNAL(clicked()), this, SLOT(slotEdit()));
-    connect(toolReverse, SIGNAL(clicked()), this, SLOT(slotReverse()));
-    connect(toolCombine, SIGNAL(clicked()), this, SLOT(slotCombine()));
-    connect(toolRange, SIGNAL(clicked()), this, SLOT(slotRange()));
+    connect(toolEditDetails, &QToolButton::clicked, this, &CScrOptTrk::hide);
+    connect(toolDelete,      &QToolButton::clicked, this, &CScrOptTrk::hide);
+    connect(toolCopy,        &QToolButton::clicked, this, &CScrOptTrk::hide);
+    connect(toolProfile,     &QToolButton::toggled, this, &CScrOptTrk::hide);
+    connect(toolCut,         &QToolButton::clicked, this, &CScrOptTrk::hide);
+    connect(toolEdit,        &QToolButton::clicked, this, &CScrOptTrk::hide);
+    connect(toolReverse,     &QToolButton::clicked, this, &CScrOptTrk::hide);
+    connect(toolCombine,     &QToolButton::clicked, this, &CScrOptTrk::hide);
+    connect(toolRange,       &QToolButton::clicked, this, &CScrOptTrk::hide);
+    connect(toolEditDetails, &QToolButton::clicked, this, &CScrOptTrk::slotEditDetails);
+    connect(toolDelete,      &QToolButton::clicked, this, &CScrOptTrk::slotDelete);
+    connect(toolCopy,        &QToolButton::clicked, this, &CScrOptTrk::slotCopy);
+    connect(toolProfile,     &QToolButton::toggled, this, &CScrOptTrk::slotProfile);
+    connect(toolCut,         &QToolButton::clicked, this, &CScrOptTrk::slotCut);
+    connect(toolEdit,        &QToolButton::clicked, this, &CScrOptTrk::slotEdit);
+    connect(toolReverse,     &QToolButton::clicked, this, &CScrOptTrk::slotReverse);
+    connect(toolCombine,     &QToolButton::clicked, this, &CScrOptTrk::slotCombine);
+    connect(toolRange,       &QToolButton::clicked, this, &CScrOptTrk::slotRange);
 
 
     // reset user focus if the track has it
@@ -139,7 +138,7 @@ void CScrOptTrk::slotRange()
 void CScrOptTrk::draw(QPainter& p)
 {
     IGisItem * item = CGisWidget::self().getItemByKey(key);
-    if(item == 0)
+    if(nullptr == item)
     {
         QWidget::deleteLater();
         return;
diff --git a/src/gis/trk/CScrOptTrk.h b/src/gis/trk/CScrOptTrk.h
index 42d4057..ae3ec4a 100644
--- a/src/gis/trk/CScrOptTrk.h
+++ b/src/gis/trk/CScrOptTrk.h
@@ -33,7 +33,7 @@ public:
     CScrOptTrk(CGisItemTrk * trk, const QPoint &point, IMouse *parent);
     virtual ~CScrOptTrk();
 
-    void draw(QPainter& p);
+    void draw(QPainter& p) override;
 
 private slots:
     void slotDelete();
diff --git a/src/gis/trk/CSelectActivity.cpp b/src/gis/trk/CSelectActivity.cpp
index b5323bd..b3370a3 100644
--- a/src/gis/trk/CSelectActivity.cpp
+++ b/src/gis/trk/CSelectActivity.cpp
@@ -44,7 +44,7 @@ CSelectActivity::CSelectActivity(quint32 &flag, QString &name, QString &icon, QW
         check->setProperty("name", desc.name);
         check->setProperty("symbol", desc.iconLarge);
 
-        connect(check, SIGNAL(clicked(bool)), this, SLOT(slotActivitySelected(bool)));
+        connect(check, &QCheckBox::clicked, this, &CSelectActivity::slotActivitySelected);
 
         l->addWidget(check);
 
diff --git a/src/gis/trk/CSelectActivityColor.cpp b/src/gis/trk/CSelectActivityColor.cpp
new file mode 100644
index 0000000..a651972
--- /dev/null
+++ b/src/gis/trk/CSelectActivityColor.cpp
@@ -0,0 +1,124 @@
+/**********************************************************************************************
+    Copyright (C) 2016 Oliver Eichler oliver.eichler at gmx.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/trk/CSelectActivityColor.h"
+#include "widgets/CColorChooser.h"
+
+#include <QtWidgets>
+#include <functional>
+
+using std::bind;
+
+CSelectActivityColor::CSelectActivityColor(QWidget *parent)
+    : QWidget(parent)
+    , INotifyTrk(CGisItemTrk::eVisualColorAct)
+{
+    setupUi(this);
+}
+
+CSelectActivityColor::~CSelectActivityColor()
+{
+    if(trk != nullptr)
+    {
+        trk->unregisterVisual(this);
+    }
+}
+
+void CSelectActivityColor::setTrack(CGisItemTrk * p)
+{
+    if(trk != nullptr)
+    {
+        trk->unregisterVisual(this);
+    }
+
+    trk = p;
+
+    if(trk != nullptr)
+    {
+        trk->registerVisual(this);
+    }
+
+    updateData();
+}
+
+void CSelectActivityColor::updateData()
+{
+    qDeleteAll(allActLabels);
+    qDeleteAll(allActColors);
+    allActLabels.clear();
+    allActColors.clear();
+
+    if((trk == nullptr) || !isEnabled())
+    {
+        return;
+    }
+
+    const CActivityTrk& act = trk->getActivities();
+    quint32 flags           = act.getAllFlags();
+    quint32 mask            = 0x80000000;
+    qint32 cnt              = 0;
+    for(quint32 i = 0; i < CGisItemTrk::trkpt_t::eActMaxNum; i++)
+    {
+        if((flags & mask) != 0)
+        {
+            const CActivityTrk::desc_t& desc = CActivityTrk::getDescriptor(mask);
+
+            QLabel * label = new QLabel(this);
+            label->setMinimumSize(16,16);
+            label->setMaximumSize(16,16);
+            label->setPixmap(desc.iconSmall);
+            label->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Maximum);
+            horizontalLayout->addWidget(label);
+
+            allActLabels << label;
+
+            QPixmap pixmap(16,16);
+            pixmap.fill(desc.color);
+
+            QToolButton * button = new QToolButton(this);
+            button->setToolButtonStyle(Qt::ToolButtonIconOnly);
+            button->setAutoRaise(true);
+            button->setIcon(QIcon(pixmap));
+            button->setProperty("color", desc.color.name());
+            button->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Maximum);
+            horizontalLayout->addWidget(button);
+
+            auto setColorFunc = bind(&CSelectActivityColor::slotSetColor, this, button, mask);
+            connect(button, &QToolButton::clicked, this, setColorFunc);
+
+            allActColors << button;
+
+            ++cnt;
+        }
+
+        mask >>= 1;
+    }
+
+    QSpacerItem * spacer = new QSpacerItem(0,0,QSizePolicy::Minimum, QSizePolicy::Minimum);
+    horizontalLayout->addItem(spacer);
+}
+
+void CSelectActivityColor::slotSetColor(QToolButton * button, quint32 activityFlag)
+{
+    CColorChooser dlg(button);
+    dlg.move(button->parentWidget()->mapToGlobal(button->geometry().topRight()));
+    if(dlg.exec() == QDialog::Accepted)
+    {
+        CActivityTrk::setColor(activityFlag, button->property("color").toString());
+    }
+}
diff --git a/src/widgets/CColorLegend.h b/src/gis/trk/CSelectActivityColor.h
similarity index 50%
copy from src/widgets/CColorLegend.h
copy to src/gis/trk/CSelectActivityColor.h
index 0f13743..e1dab68 100644
--- a/src/widgets/CColorLegend.h
+++ b/src/gis/trk/CSelectActivityColor.h
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2015 Christian Eichler code at christian-eichler.de
+    Copyright (C) 2016 Oliver Eichler oliver.eichler at gmx.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -16,45 +16,39 @@
 
 **********************************************************************************************/
 
-#ifndef CCOLORLEGEND_H
-#define CCOLORLEGEND_H
+#ifndef CSELECTACTIVITYCOLOR_H
+#define CSELECTACTIVITYCOLOR_H
 
 #include "gis/trk/CGisItemTrk.h"
-#include "helpers/INotifiable.h"
+
+#include <QList>
 #include <QWidget>
+#include <ui_ISelectActivityColor.h>
+
+class QLabel;
+class QToolButton;
 
-class CColorLegend : public QWidget, public INotifiable
+class CSelectActivityColor : public QWidget, public INotifyTrk, private Ui::ISelectActivityColor
 {
     Q_OBJECT
 public:
-    CColorLegend(QWidget *parent, CGisItemTrk *trk = nullptr);
-    ~CColorLegend();
-
-    void setMinimum(qreal min);
-    void setMaximum(qreal max);
-
-    void setUnit(const QString &unit);
+    CSelectActivityColor(QWidget * parent);
+    virtual ~CSelectActivityColor();
 
-    void notify();
+    void setTrack(CGisItemTrk * p);
+    void updateData() override;
+    void setMouseFocus(const CGisItemTrk::trkpt_t * pt) override {}
+    void setMouseRangeFocus(const CGisItemTrk::trkpt_t * pt1, const CGisItemTrk::trkpt_t * pt2) override {}
+    void setMouseClickFocus(const CGisItemTrk::trkpt_t * pt) override {}
 
-protected:
-    void paintEvent(QPaintEvent *event);
-    void resizeEvent(QResizeEvent *event);
+private slots:
+    void slotSetColor(QToolButton * button, quint32 activityFlag);
 
 private:
-    int paintLabel(QPainter &p, qreal value);
-
-    const int colorWidth  =  18;
-    const int colorHeight = 256;
-
-    QRect colorRect;
-    QString unit;
-    qreal minimum;
-    qreal maximum;
-    bool background = false;
-    int xOffset    = 1;
-    CGisItemTrk *trk = nullptr;
+    CGisItemTrk * trk = nullptr;
+    QList<QLabel*> allActLabels;
+    QList<QToolButton*> allActColors;
 };
 
-#endif // CCOLORLEGEND_H
+#endif //CSELECTACTIVITYCOLOR_H
 
diff --git a/src/gis/trk/IDetailsTrk.ui b/src/gis/trk/IDetailsTrk.ui
index 28d7df1..ef75bf4 100644
--- a/src/gis/trk/IDetailsTrk.ui
+++ b/src/gis/trk/IDetailsTrk.ui
@@ -152,35 +152,88 @@
           <item>
            <layout class="QHBoxLayout" name="horizontalLayout_8">
             <item>
-             <widget class="QToolButton" name="toolLock">
+             <widget class="CLineEdit" name="lineName">
               <property name="sizePolicy">
-               <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
+               <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
                 <horstretch>0</horstretch>
                 <verstretch>0</verstretch>
                </sizepolicy>
               </property>
-              <property name="toolTip">
-               <string>Toggle read only mode. You have to open the lock to edit the item.</string>
+              <property name="palette">
+               <palette>
+                <active>
+                 <colorrole role="Base">
+                  <brush brushstyle="SolidPattern">
+                   <color alpha="0">
+                    <red>0</red>
+                    <green>0</green>
+                    <blue>0</blue>
+                   </color>
+                  </brush>
+                 </colorrole>
+                 <colorrole role="Window">
+                  <brush brushstyle="SolidPattern">
+                   <color alpha="0">
+                    <red>0</red>
+                    <green>0</green>
+                    <blue>0</blue>
+                   </color>
+                  </brush>
+                 </colorrole>
+                </active>
+                <inactive>
+                 <colorrole role="Base">
+                  <brush brushstyle="SolidPattern">
+                   <color alpha="0">
+                    <red>0</red>
+                    <green>0</green>
+                    <blue>0</blue>
+                   </color>
+                  </brush>
+                 </colorrole>
+                 <colorrole role="Window">
+                  <brush brushstyle="SolidPattern">
+                   <color alpha="0">
+                    <red>0</red>
+                    <green>0</green>
+                    <blue>0</blue>
+                   </color>
+                  </brush>
+                 </colorrole>
+                </inactive>
+                <disabled>
+                 <colorrole role="Base">
+                  <brush brushstyle="SolidPattern">
+                   <color alpha="0">
+                    <red>0</red>
+                    <green>0</green>
+                    <blue>0</blue>
+                   </color>
+                  </brush>
+                 </colorrole>
+                 <colorrole role="Window">
+                  <brush brushstyle="SolidPattern">
+                   <color alpha="0">
+                    <red>0</red>
+                    <green>0</green>
+                    <blue>0</blue>
+                   </color>
+                  </brush>
+                 </colorrole>
+                </disabled>
+               </palette>
               </property>
-              <property name="text">
-               <string>...</string>
+              <property name="font">
+               <font>
+                <weight>75</weight>
+                <bold>true</bold>
+               </font>
               </property>
-              <property name="icon">
-               <iconset resource="../../resources.qrc">
-                <normaloff>:/icons/32x32/UnLock.png</normaloff>
-                <normalon>:/icons/32x32/Lock.png</normalon>:/icons/32x32/UnLock.png</iconset>
+              <property name="focusPolicy">
+               <enum>Qt::ClickFocus</enum>
               </property>
-              <property name="iconSize">
-               <size>
-                <width>22</width>
-                <height>22</height>
-               </size>
-              </property>
-              <property name="checkable">
-               <bool>true</bool>
-              </property>
-              <property name="autoRaise">
-               <bool>true</bool>
+              <property name="frame">
+               <bool>false</bool>
               </property>
              </widget>
             </item>
@@ -213,9 +266,35 @@
              </widget>
             </item>
             <item>
-             <widget class="QLabel" name="label_5">
+             <widget class="QToolButton" name="toolLock">
+              <property name="sizePolicy">
+               <sizepolicy hsizetype="Maximum" vsizetype="Fixed">
+                <horstretch>0</horstretch>
+                <verstretch>0</verstretch>
+               </sizepolicy>
+              </property>
+              <property name="toolTip">
+               <string>Toggle read only mode. You have to open the lock to edit the item.</string>
+              </property>
               <property name="text">
-               <string/>
+               <string>...</string>
+              </property>
+              <property name="icon">
+               <iconset resource="../../resources.qrc">
+                <normaloff>:/icons/32x32/UnLock.png</normaloff>
+                <normalon>:/icons/32x32/Lock.png</normalon>:/icons/32x32/UnLock.png</iconset>
+              </property>
+              <property name="iconSize">
+               <size>
+                <width>22</width>
+                <height>22</height>
+               </size>
+              </property>
+              <property name="checkable">
+               <bool>true</bool>
+              </property>
+              <property name="autoRaise">
+               <bool>true</bool>
               </property>
              </widget>
             </item>
@@ -259,7 +338,7 @@
           </sizepolicy>
          </property>
          <property name="currentIndex">
-          <number>0</number>
+          <number>1</number>
          </property>
          <widget class="QWidget" name="tab_3">
           <attribute name="title">
@@ -310,14 +389,14 @@
                </property>
                <property name="minimumSize">
                 <size>
-                 <width>60</width>
-                 <height>100</height>
+                 <width>100</width>
+                 <height>0</height>
                 </size>
                </property>
                <property name="maximumSize">
                 <size>
-                 <width>16777215</width>
-                 <height>300</height>
+                 <width>300</width>
+                 <height>16777215</height>
                 </size>
                </property>
               </widget>
@@ -328,43 +407,212 @@
             <layout class="QVBoxLayout" name="verticalLayout_2">
              <item>
               <layout class="QGridLayout" name="gridLayout">
-               <item row="2" column="2">
-                <widget class="QPushButton" name="btnMaxFromData">
+               <item row="0" column="0">
+                <widget class="QLabel" name="label">
                  <property name="sizePolicy">
-                  <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                  <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
                    <horstretch>0</horstretch>
                    <verstretch>0</verstretch>
                   </sizepolicy>
                  </property>
                  <property name="text">
-                  <string>from Data</string>
+                  <string>Source</string>
                  </property>
                 </widget>
                </item>
-               <item row="1" column="0">
-                <widget class="QLabel" name="label">
-                 <property name="sizePolicy">
-                  <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-                   <horstretch>0</horstretch>
-                   <verstretch>0</verstretch>
-                  </sizepolicy>
-                 </property>
+               <item row="7" column="0">
+                <widget class="QLabel" name="label_5">
                  <property name="text">
-                  <string>Source</string>
+                  <string>Width</string>
                  </property>
                 </widget>
                </item>
-               <item row="1" column="1">
-                <widget class="QComboBox" name="comboColorSource">
-                 <property name="sizePolicy">
-                  <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-                   <horstretch>0</horstretch>
-                   <verstretch>0</verstretch>
-                  </sizepolicy>
+               <item row="0" column="1">
+                <widget class="QComboBox" name="comboColorSource"/>
+               </item>
+               <item row="8" column="2">
+                <layout class="QHBoxLayout" name="horizontalLayout_4">
+                 <property name="spacing">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QToolButton" name="toolUserArrow">
+                   <property name="toolTip">
+                    <string>Use/edit user defined visibility of arrows for this track</string>
+                   </property>
+                   <property name="text">
+                    <string>...</string>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="../../resources.qrc">
+                     <normaloff>:/icons/32x32/ArrowUser.png</normaloff>:/icons/32x32/ArrowUser.png</iconset>
+                   </property>
+                   <property name="iconSize">
+                    <size>
+                     <width>16</width>
+                     <height>16</height>
+                    </size>
+                   </property>
+                   <property name="checkable">
+                    <bool>true</bool>
+                   </property>
+                   <property name="autoExclusive">
+                    <bool>true</bool>
+                   </property>
+                   <attribute name="buttonGroup">
+                    <string notr="true">buttonGroupArrow</string>
+                   </attribute>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QToolButton" name="toolDefArrow">
+                   <property name="toolTip">
+                    <string>Use/edit system's visibility of arrows for all tracks</string>
+                   </property>
+                   <property name="text">
+                    <string>...</string>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="../../resources.qrc">
+                     <normaloff>:/icons/32x32/ArrowDef.png</normaloff>:/icons/32x32/ArrowDef.png</iconset>
+                   </property>
+                   <property name="iconSize">
+                    <size>
+                     <width>16</width>
+                     <height>16</height>
+                    </size>
+                   </property>
+                   <property name="checkable">
+                    <bool>true</bool>
+                   </property>
+                   <property name="checked">
+                    <bool>true</bool>
+                   </property>
+                   <property name="autoExclusive">
+                    <bool>true</bool>
+                   </property>
+                   <attribute name="buttonGroup">
+                    <string notr="true">buttonGroupArrow</string>
+                   </attribute>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="horizontalSpacer_6">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Maximum</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>25</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                </layout>
+               </item>
+               <item row="4" column="1">
+                <widget class="CDoubleSpinBox" name="spinLimitHigh">
+                 <property name="decimals">
+                  <number>1</number>
+                 </property>
+                 <property name="minimum">
+                  <double>-100.000000000000000</double>
                  </property>
                 </widget>
                </item>
-               <item row="2" column="0">
+               <item row="4" column="2">
+                <layout class="QHBoxLayout" name="horizontalLayout_7">
+                 <property name="spacing">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QToolButton" name="toolLimitUsrStyle">
+                   <property name="toolTip">
+                    <string>User defined limits for this track</string>
+                   </property>
+                   <property name="text">
+                    <string>...</string>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="../../resources.qrc">
+                     <normaloff>:/icons/32x32/LimitUsr.png</normaloff>:/icons/32x32/LimitUsr.png</iconset>
+                   </property>
+                   <property name="iconSize">
+                    <size>
+                     <width>16</width>
+                     <height>16</height>
+                    </size>
+                   </property>
+                   <property name="checkable">
+                    <bool>true</bool>
+                   </property>
+                   <property name="autoExclusive">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QToolButton" name="toolLimitAutoStyle">
+                   <property name="toolTip">
+                    <string>Automatic limits</string>
+                   </property>
+                   <property name="text">
+                    <string>...</string>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="../../resources.qrc">
+                     <normaloff>:/icons/32x32/Limit.png</normaloff>:/icons/32x32/Limit.png</iconset>
+                   </property>
+                   <property name="iconSize">
+                    <size>
+                     <width>16</width>
+                     <height>16</height>
+                    </size>
+                   </property>
+                   <property name="checkable">
+                    <bool>true</bool>
+                   </property>
+                   <property name="checked">
+                    <bool>true</bool>
+                   </property>
+                   <property name="autoExclusive">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QToolButton" name="toolLimitSysStyle">
+                   <property name="toolTip">
+                    <string>User defined limits for all tracks</string>
+                   </property>
+                   <property name="text">
+                    <string>...</string>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="../../resources.qrc">
+                     <normaloff>:/icons/32x32/LimitSys.png</normaloff>:/icons/32x32/LimitSys.png</iconset>
+                   </property>
+                   <property name="iconSize">
+                    <size>
+                     <width>16</width>
+                     <height>16</height>
+                    </size>
+                   </property>
+                   <property name="checkable">
+                    <bool>true</bool>
+                   </property>
+                   <property name="autoExclusive">
+                    <bool>true</bool>
+                   </property>
+                  </widget>
+                 </item>
+                </layout>
+               </item>
+               <item row="4" column="0">
                 <widget class="QLabel" name="label_2">
                  <property name="sizePolicy">
                   <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
@@ -377,43 +625,34 @@
                  </property>
                 </widget>
                </item>
-               <item row="2" column="1">
-                <widget class="CDoubleSpinBox" name="spinLimitHigh">
-                 <property name="sizePolicy">
-                  <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-                   <horstretch>0</horstretch>
-                   <verstretch>0</verstretch>
-                  </sizepolicy>
+               <item row="8" column="1">
+                <widget class="QCheckBox" name="checkWithArrows">
+                 <property name="text">
+                  <string>with arrows</string>
+                 </property>
+                </widget>
+               </item>
+               <item row="7" column="1">
+                <widget class="QDoubleSpinBox" name="spinLineWidth">
+                 <property name="prefix">
+                  <string>x </string>
                  </property>
                  <property name="decimals">
                   <number>1</number>
                  </property>
                  <property name="minimum">
-                  <double>-100.000000000000000</double>
+                  <double>1.000000000000000</double>
                  </property>
-                </widget>
-               </item>
-               <item row="3" column="0">
-                <widget class="QLabel" name="label_3">
-                 <property name="sizePolicy">
-                  <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-                   <horstretch>0</horstretch>
-                   <verstretch>0</verstretch>
-                  </sizepolicy>
+                 <property name="maximum">
+                  <double>4.000000000000000</double>
                  </property>
-                 <property name="text">
-                  <string>Minimum</string>
+                 <property name="singleStep">
+                  <double>0.500000000000000</double>
                  </property>
                 </widget>
                </item>
-               <item row="3" column="1">
+               <item row="5" column="1">
                 <widget class="CDoubleSpinBox" name="spinLimitLow">
-                 <property name="sizePolicy">
-                  <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-                   <horstretch>0</horstretch>
-                   <verstretch>0</verstretch>
-                  </sizepolicy>
-                 </property>
                  <property name="decimals">
                   <number>1</number>
                  </property>
@@ -422,20 +661,118 @@
                  </property>
                 </widget>
                </item>
-               <item row="3" column="2">
-                <widget class="QPushButton" name="btnMinFromData">
+               <item row="5" column="2">
+                <layout class="QHBoxLayout" name="horizontalLayout_9">
+                 <property name="spacing">
+                  <number>0</number>
+                 </property>
+                </layout>
+               </item>
+               <item row="7" column="2">
+                <layout class="QHBoxLayout" name="horizontalLayout">
+                 <property name="spacing">
+                  <number>0</number>
+                 </property>
+                 <item>
+                  <widget class="QToolButton" name="toolUserLineWith">
+                   <property name="toolTip">
+                    <string>Use/edit user defined scale factor for this track</string>
+                   </property>
+                   <property name="text">
+                    <string>...</string>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="../../resources.qrc">
+                     <normaloff>:/icons/32x32/LineWidthUser.png</normaloff>:/icons/32x32/LineWidthUser.png</iconset>
+                   </property>
+                   <property name="iconSize">
+                    <size>
+                     <width>16</width>
+                     <height>16</height>
+                    </size>
+                   </property>
+                   <property name="checkable">
+                    <bool>true</bool>
+                   </property>
+                   <property name="autoExclusive">
+                    <bool>true</bool>
+                   </property>
+                   <attribute name="buttonGroup">
+                    <string notr="true">buttonGroupLineWidth</string>
+                   </attribute>
+                  </widget>
+                 </item>
+                 <item>
+                  <widget class="QToolButton" name="toolDefLineWidth">
+                   <property name="toolTip">
+                    <string>Use/edit system's default factor for all tracks</string>
+                   </property>
+                   <property name="text">
+                    <string>...</string>
+                   </property>
+                   <property name="icon">
+                    <iconset resource="../../resources.qrc">
+                     <normaloff>:/icons/32x32/LineWidthDef.png</normaloff>:/icons/32x32/LineWidthDef.png</iconset>
+                   </property>
+                   <property name="iconSize">
+                    <size>
+                     <width>16</width>
+                     <height>16</height>
+                    </size>
+                   </property>
+                   <property name="checkable">
+                    <bool>true</bool>
+                   </property>
+                   <property name="checked">
+                    <bool>true</bool>
+                   </property>
+                   <property name="autoExclusive">
+                    <bool>true</bool>
+                   </property>
+                   <attribute name="buttonGroup">
+                    <string notr="true">buttonGroupLineWidth</string>
+                   </attribute>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="horizontalSpacer_5">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeType">
+                    <enum>QSizePolicy::Maximum</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>25</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                </layout>
+               </item>
+               <item row="5" column="0">
+                <widget class="QLabel" name="label_3">
                  <property name="sizePolicy">
-                  <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+                  <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
                    <horstretch>0</horstretch>
                    <verstretch>0</verstretch>
                   </sizepolicy>
                  </property>
                  <property name="text">
-                  <string>from Data</string>
+                  <string>Minimum</string>
                  </property>
                 </widget>
                </item>
-               <item row="0" column="0">
+               <item row="6" column="0" colspan="3">
+                <widget class="Line" name="line_4">
+                 <property name="orientation">
+                  <enum>Qt::Horizontal</enum>
+                 </property>
+                </widget>
+               </item>
+               <item row="3" column="0">
                 <widget class="QLabel" name="label_4">
                  <property name="sizePolicy">
                   <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
@@ -444,19 +781,19 @@
                   </sizepolicy>
                  </property>
                  <property name="text">
-                  <string>Solid color</string>
+                  <string>Color</string>
                  </property>
                 </widget>
                </item>
-               <item row="0" column="1">
-                <widget class="QComboBox" name="comboColor">
-                 <property name="sizePolicy">
-                  <sizepolicy hsizetype="Expanding" vsizetype="Minimum">
-                   <horstretch>0</horstretch>
-                   <verstretch>0</verstretch>
-                  </sizepolicy>
-                 </property>
-                </widget>
+               <item row="3" column="1">
+                <layout class="QHBoxLayout" name="horizontalLayout_13">
+                 <item>
+                  <widget class="QComboBox" name="comboColor"/>
+                 </item>
+                 <item>
+                  <widget class="CSelectActivityColor" name="widgetColorActivity" native="true"/>
+                 </item>
+                </layout>
                </item>
               </layout>
              </item>
@@ -495,66 +832,491 @@
            <string>Graphs</string>
           </attribute>
           <layout class="QGridLayout" name="gridLayout_2">
-           <item row="1" column="1">
-            <widget class="QComboBox" name="comboGraph2"/>
+           <item row="3" column="0">
+            <widget class="QCheckBox" name="checkGraph2">
+             <property name="text">
+              <string/>
+             </property>
+            </widget>
            </item>
-           <item row="2" column="1">
-            <widget class="QComboBox" name="comboGraph3"/>
+           <item row="7" column="2">
+            <widget class="QLabel" name="label_12">
+             <property name="text">
+              <string>max.</string>
+             </property>
+            </widget>
            </item>
-           <item row="3" column="1">
-            <spacer name="verticalSpacer_3">
+           <item row="1" column="3">
+            <widget class="QDoubleSpinBox" name="spinMaxGraph1">
+             <property name="enabled">
+              <bool>false</bool>
+             </property>
+             <property name="minimum">
+              <double>-1000000.000000000000000</double>
+             </property>
+             <property name="maximum">
+              <double>1000000.000000000000000</double>
+             </property>
+            </widget>
+           </item>
+           <item row="4" column="2">
+            <widget class="QLabel" name="label_11">
+             <property name="text">
+              <string>max.</string>
+             </property>
+            </widget>
+           </item>
+           <item row="4" column="3">
+            <widget class="QDoubleSpinBox" name="spinMaxGraph2">
+             <property name="enabled">
+              <bool>false</bool>
+             </property>
+             <property name="minimum">
+              <double>-1000000.000000000000000</double>
+             </property>
+             <property name="maximum">
+              <double>1000000.000000000000000</double>
+             </property>
+            </widget>
+           </item>
+           <item row="6" column="0">
+            <widget class="QCheckBox" name="checkGraph3">
+             <property name="text">
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="0">
+            <widget class="QCheckBox" name="checkGraph1">
+             <property name="text">
+              <string/>
+             </property>
+            </widget>
+           </item>
+           <item row="6" column="3">
+            <widget class="QDoubleSpinBox" name="spinMinGraph3">
+             <property name="enabled">
+              <bool>false</bool>
+             </property>
+             <property name="minimum">
+              <double>-1000000.000000000000000</double>
+             </property>
+             <property name="maximum">
+              <double>1000000.000000000000000</double>
+             </property>
+            </widget>
+           </item>
+           <item row="6" column="5">
+            <spacer name="horizontalSpacer_3">
              <property name="orientation">
-              <enum>Qt::Vertical</enum>
+              <enum>Qt::Horizontal</enum>
              </property>
              <property name="sizeHint" stdset="0">
               <size>
-               <width>20</width>
-               <height>40</height>
+               <width>40</width>
+               <height>20</height>
               </size>
              </property>
             </spacer>
            </item>
-           <item row="2" column="2">
-            <spacer name="horizontalSpacer_3">
+           <item row="7" column="3">
+            <widget class="QDoubleSpinBox" name="spinMaxGraph3">
+             <property name="enabled">
+              <bool>false</bool>
+             </property>
+             <property name="minimum">
+              <double>-1000000.000000000000000</double>
+             </property>
+             <property name="maximum">
+              <double>1000000.000000000000000</double>
+             </property>
+            </widget>
+           </item>
+           <item row="8" column="0">
+            <spacer name="verticalSpacer_3">
              <property name="orientation">
-              <enum>Qt::Horizontal</enum>
+              <enum>Qt::Vertical</enum>
              </property>
              <property name="sizeHint" stdset="0">
               <size>
-               <width>40</width>
-               <height>20</height>
+               <width>20</width>
+               <height>40</height>
               </size>
              </property>
             </spacer>
            </item>
-           <item row="0" column="1">
-            <widget class="QLabel" name="label_6">
+           <item row="1" column="2">
+            <widget class="QLabel" name="label_8">
              <property name="text">
-              <string>Profile</string>
+              <string>max.</string>
              </property>
             </widget>
            </item>
-           <item row="2" column="0">
-            <widget class="QCheckBox" name="checkGraph3">
+           <item row="3" column="3">
+            <widget class="QDoubleSpinBox" name="spinMinGraph2">
+             <property name="enabled">
+              <bool>false</bool>
+             </property>
+             <property name="minimum">
+              <double>-1000000.000000000000000</double>
+             </property>
+             <property name="maximum">
+              <double>1000000.000000000000000</double>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="3">
+            <widget class="QDoubleSpinBox" name="spinMinGraph1">
+             <property name="enabled">
+              <bool>false</bool>
+             </property>
+             <property name="minimum">
+              <double>-1000000.000000000000000</double>
+             </property>
+             <property name="maximum">
+              <double>1000000.000000000000000</double>
+             </property>
+            </widget>
+           </item>
+           <item row="6" column="2">
+            <widget class="QLabel" name="label_10">
              <property name="text">
-              <string>Graph 3</string>
+              <string>min.</string>
              </property>
             </widget>
            </item>
-           <item row="1" column="0">
-            <widget class="QCheckBox" name="checkGraph2">
+           <item row="3" column="2">
+            <widget class="QLabel" name="label_9">
              <property name="text">
-              <string>Graph 2</string>
+              <string>min.</string>
              </property>
             </widget>
            </item>
-           <item row="0" column="0">
-            <widget class="QCheckBox" name="checkGraph1">
+           <item row="2" column="0" colspan="5">
+            <widget class="Line" name="line_5">
+             <property name="orientation">
+              <enum>Qt::Horizontal</enum>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="2">
+            <widget class="QLabel" name="label_7">
              <property name="text">
-              <string>Graph 1</string>
+              <string>min.</string>
              </property>
             </widget>
            </item>
+           <item row="5" column="0" colspan="5">
+            <widget class="Line" name="line_6">
+             <property name="orientation">
+              <enum>Qt::Horizontal</enum>
+             </property>
+            </widget>
+           </item>
+           <item row="0" column="1">
+            <widget class="QLabel" name="label_6">
+             <property name="text">
+              <string>Profile</string>
+             </property>
+            </widget>
+           </item>
+           <item row="3" column="1">
+            <widget class="QComboBox" name="comboGraph2"/>
+           </item>
+           <item row="6" column="1">
+            <widget class="QComboBox" name="comboGraph3"/>
+           </item>
+           <item row="0" column="4">
+            <layout class="QHBoxLayout" name="horizontalLayout_10">
+             <property name="spacing">
+              <number>0</number>
+             </property>
+             <item>
+              <widget class="QToolButton" name="toolLimitUsrGraph1">
+               <property name="toolTip">
+                <string>User defined limits for this track</string>
+               </property>
+               <property name="text">
+                <string>...</string>
+               </property>
+               <property name="icon">
+                <iconset resource="../../resources.qrc">
+                 <normaloff>:/icons/32x32/LimitUsr.png</normaloff>:/icons/32x32/LimitUsr.png</iconset>
+               </property>
+               <property name="iconSize">
+                <size>
+                 <width>16</width>
+                 <height>16</height>
+                </size>
+               </property>
+               <property name="checkable">
+                <bool>true</bool>
+               </property>
+               <property name="autoExclusive">
+                <bool>true</bool>
+               </property>
+               <attribute name="buttonGroup">
+                <string notr="true">buttonGroupGraph1</string>
+               </attribute>
+              </widget>
+             </item>
+             <item>
+              <widget class="QToolButton" name="toolLimitAutoGraph1">
+               <property name="toolTip">
+                <string>Automatic limits</string>
+               </property>
+               <property name="text">
+                <string>...</string>
+               </property>
+               <property name="icon">
+                <iconset resource="../../resources.qrc">
+                 <normaloff>:/icons/32x32/Limit.png</normaloff>:/icons/32x32/Limit.png</iconset>
+               </property>
+               <property name="iconSize">
+                <size>
+                 <width>16</width>
+                 <height>16</height>
+                </size>
+               </property>
+               <property name="checkable">
+                <bool>true</bool>
+               </property>
+               <property name="checked">
+                <bool>true</bool>
+               </property>
+               <property name="autoExclusive">
+                <bool>true</bool>
+               </property>
+               <attribute name="buttonGroup">
+                <string notr="true">buttonGroupGraph1</string>
+               </attribute>
+              </widget>
+             </item>
+             <item>
+              <widget class="QToolButton" name="toolLimitSysGraph1">
+               <property name="toolTip">
+                <string>User defined limits for all tracks</string>
+               </property>
+               <property name="text">
+                <string>...</string>
+               </property>
+               <property name="icon">
+                <iconset resource="../../resources.qrc">
+                 <normaloff>:/icons/32x32/LimitSys.png</normaloff>:/icons/32x32/LimitSys.png</iconset>
+               </property>
+               <property name="iconSize">
+                <size>
+                 <width>16</width>
+                 <height>16</height>
+                </size>
+               </property>
+               <property name="checkable">
+                <bool>true</bool>
+               </property>
+               <property name="autoExclusive">
+                <bool>true</bool>
+               </property>
+               <attribute name="buttonGroup">
+                <string notr="true">buttonGroupGraph1</string>
+               </attribute>
+              </widget>
+             </item>
+            </layout>
+           </item>
+           <item row="3" column="4">
+            <layout class="QHBoxLayout" name="horizontalLayout_11">
+             <property name="spacing">
+              <number>0</number>
+             </property>
+             <item>
+              <widget class="QToolButton" name="toolLimitUsrGraph2">
+               <property name="toolTip">
+                <string>User defined limits for this track</string>
+               </property>
+               <property name="text">
+                <string>...</string>
+               </property>
+               <property name="icon">
+                <iconset resource="../../resources.qrc">
+                 <normaloff>:/icons/32x32/LimitUsr.png</normaloff>:/icons/32x32/LimitUsr.png</iconset>
+               </property>
+               <property name="iconSize">
+                <size>
+                 <width>16</width>
+                 <height>16</height>
+                </size>
+               </property>
+               <property name="checkable">
+                <bool>true</bool>
+               </property>
+               <property name="autoExclusive">
+                <bool>true</bool>
+               </property>
+               <attribute name="buttonGroup">
+                <string notr="true">buttonGroupGraph2</string>
+               </attribute>
+              </widget>
+             </item>
+             <item>
+              <widget class="QToolButton" name="toolLimitAutoGraph2">
+               <property name="toolTip">
+                <string>Automatic limits</string>
+               </property>
+               <property name="text">
+                <string>...</string>
+               </property>
+               <property name="icon">
+                <iconset resource="../../resources.qrc">
+                 <normaloff>:/icons/32x32/Limit.png</normaloff>:/icons/32x32/Limit.png</iconset>
+               </property>
+               <property name="iconSize">
+                <size>
+                 <width>16</width>
+                 <height>16</height>
+                </size>
+               </property>
+               <property name="checkable">
+                <bool>true</bool>
+               </property>
+               <property name="checked">
+                <bool>true</bool>
+               </property>
+               <property name="autoExclusive">
+                <bool>true</bool>
+               </property>
+               <attribute name="buttonGroup">
+                <string notr="true">buttonGroupGraph2</string>
+               </attribute>
+              </widget>
+             </item>
+             <item>
+              <widget class="QToolButton" name="toolLimitSysGraph2">
+               <property name="toolTip">
+                <string>User defined limits for all tracks</string>
+               </property>
+               <property name="text">
+                <string>...</string>
+               </property>
+               <property name="icon">
+                <iconset resource="../../resources.qrc">
+                 <normaloff>:/icons/32x32/LimitSys.png</normaloff>:/icons/32x32/LimitSys.png</iconset>
+               </property>
+               <property name="iconSize">
+                <size>
+                 <width>16</width>
+                 <height>16</height>
+                </size>
+               </property>
+               <property name="checkable">
+                <bool>true</bool>
+               </property>
+               <property name="autoExclusive">
+                <bool>true</bool>
+               </property>
+               <attribute name="buttonGroup">
+                <string notr="true">buttonGroupGraph2</string>
+               </attribute>
+              </widget>
+             </item>
+            </layout>
+           </item>
+           <item row="6" column="4">
+            <layout class="QHBoxLayout" name="horizontalLayout_12">
+             <property name="spacing">
+              <number>0</number>
+             </property>
+             <item>
+              <widget class="QToolButton" name="toolLimitUsrGraph3">
+               <property name="toolTip">
+                <string>User defined limits for this track</string>
+               </property>
+               <property name="text">
+                <string>...</string>
+               </property>
+               <property name="icon">
+                <iconset resource="../../resources.qrc">
+                 <normaloff>:/icons/32x32/LimitUsr.png</normaloff>:/icons/32x32/LimitUsr.png</iconset>
+               </property>
+               <property name="iconSize">
+                <size>
+                 <width>16</width>
+                 <height>16</height>
+                </size>
+               </property>
+               <property name="checkable">
+                <bool>true</bool>
+               </property>
+               <property name="autoExclusive">
+                <bool>true</bool>
+               </property>
+               <attribute name="buttonGroup">
+                <string notr="true">buttonGroupGraph3</string>
+               </attribute>
+              </widget>
+             </item>
+             <item>
+              <widget class="QToolButton" name="toolLimitAutoGraph3">
+               <property name="toolTip">
+                <string>Automatic limits</string>
+               </property>
+               <property name="text">
+                <string>...</string>
+               </property>
+               <property name="icon">
+                <iconset resource="../../resources.qrc">
+                 <normaloff>:/icons/32x32/Limit.png</normaloff>:/icons/32x32/Limit.png</iconset>
+               </property>
+               <property name="iconSize">
+                <size>
+                 <width>16</width>
+                 <height>16</height>
+                </size>
+               </property>
+               <property name="checkable">
+                <bool>true</bool>
+               </property>
+               <property name="checked">
+                <bool>true</bool>
+               </property>
+               <property name="autoExclusive">
+                <bool>true</bool>
+               </property>
+               <attribute name="buttonGroup">
+                <string notr="true">buttonGroupGraph3</string>
+               </attribute>
+              </widget>
+             </item>
+             <item>
+              <widget class="QToolButton" name="toolLimitSysGraph3">
+               <property name="toolTip">
+                <string>User defined limits for all tracks</string>
+               </property>
+               <property name="text">
+                <string>...</string>
+               </property>
+               <property name="icon">
+                <iconset resource="../../resources.qrc">
+                 <normaloff>:/icons/32x32/LimitSys.png</normaloff>:/icons/32x32/LimitSys.png</iconset>
+               </property>
+               <property name="iconSize">
+                <size>
+                 <width>16</width>
+                 <height>16</height>
+                </size>
+               </property>
+               <property name="checkable">
+                <bool>true</bool>
+               </property>
+               <property name="autoExclusive">
+                <bool>true</bool>
+               </property>
+               <attribute name="buttonGroup">
+                <string notr="true">buttonGroupGraph3</string>
+               </attribute>
+              </widget>
+             </item>
+            </layout>
+           </item>
           </layout>
          </widget>
          <widget class="QWidget" name="tab_2">
@@ -578,11 +1340,7 @@
             <number>3</number>
            </property>
            <item>
-            <layout class="QVBoxLayout" name="layoutActivities">
-             <property name="spacing">
-              <number>3</number>
-             </property>
-            </layout>
+            <layout class="QGridLayout" name="layoutActivities"/>
            </item>
            <item>
             <widget class="Line" name="line_3">
@@ -810,6 +1568,11 @@
    <header>widgets/CHistoryListWidget.h</header>
   </customwidget>
   <customwidget>
+   <class>CLineEdit</class>
+   <extends>QLineEdit</extends>
+   <header>widgets/CLineEdit.h</header>
+  </customwidget>
+  <customwidget>
    <class>CPlotTrack</class>
    <extends>QWidget</extends>
    <header>plot/CPlotTrack.h</header>
@@ -826,9 +1589,22 @@
    <header>widgets/CColorLegend.h</header>
    <container>1</container>
   </customwidget>
+  <customwidget>
+   <class>CSelectActivityColor</class>
+   <extends>QWidget</extends>
+   <header>gis/trk/CSelectActivityColor.h</header>
+   <container>1</container>
+  </customwidget>
  </customwidgets>
  <resources>
   <include location="../../resources.qrc"/>
  </resources>
  <connections/>
+ <buttongroups>
+  <buttongroup name="buttonGroupGraph2"/>
+  <buttongroup name="buttonGroupGraph1"/>
+  <buttongroup name="buttonGroupArrow"/>
+  <buttongroup name="buttonGroupLineWidth"/>
+  <buttongroup name="buttonGroupGraph3"/>
+ </buttongroups>
 </ui>
diff --git a/src/gis/trk/ISelectActivityColor.ui b/src/gis/trk/ISelectActivityColor.ui
new file mode 100644
index 0000000..a73e035
--- /dev/null
+++ b/src/gis/trk/ISelectActivityColor.ui
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ISelectActivityColor</class>
+ <widget class="QWidget" name="ISelectActivityColor">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <property name="spacing">
+      <number>0</number>
+     </property>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/src/gis/trk/filter/CFilterDelete.cpp b/src/gis/trk/filter/CFilterDelete.cpp
index 733986d..11bb4ef 100644
--- a/src/gis/trk/filter/CFilterDelete.cpp
+++ b/src/gis/trk/filter/CFilterDelete.cpp
@@ -26,7 +26,7 @@ CFilterDelete::CFilterDelete(CGisItemTrk &trk, QWidget *parent)
 {
     setupUi(this);
 
-    connect(toolApply, SIGNAL(clicked()), this, SLOT(slotApply()));
+    connect(toolApply, &QToolButton::clicked, this, &CFilterDelete::slotApply);
 }
 
 CFilterDelete::~CFilterDelete()
diff --git a/src/gis/trk/filter/CFilterDeleteExtension.cpp b/src/gis/trk/filter/CFilterDeleteExtension.cpp
new file mode 100644
index 0000000..5cd60f0
--- /dev/null
+++ b/src/gis/trk/filter/CFilterDeleteExtension.cpp
@@ -0,0 +1,74 @@
+/**********************************************************************************************
+    Copyright (C) 2016 Christian Eichler code at christian-eichler.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "canvas/CCanvas.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/trk/CKnownExtension.h"
+#include "gis/trk/filter/CFilterDeleteExtension.h"
+
+
+
+CFilterDeleteExtension::CFilterDeleteExtension(CGisItemTrk &trk, QWidget *parent)
+    : QWidget(parent)
+    , trk(trk)
+{
+    setupUi(this);
+
+    update();
+
+    connect(toolApply, &QToolButton::clicked, this, &CFilterDeleteExtension::slotApply);
+}
+
+CFilterDeleteExtension::~CFilterDeleteExtension()
+{
+}
+
+void CFilterDeleteExtension::update()
+{
+    comboExtensions->clear();
+
+    foreach(const QString &key, trk.getExistingDataSources())
+    {
+        const CKnownExtension &ext = CKnownExtension::get(key);
+        if(!ext.derivedQMS)
+        {
+            QIcon icon(ext.icon);
+            comboExtensions->addItem(icon, ext.known ? ext.name : key, key);
+        }
+    }
+
+    bool enabled = (0 != comboExtensions->count());
+    toolApply->setEnabled(enabled);
+    comboExtensions->setEnabled(enabled);
+
+    if(!enabled)
+    {
+        comboExtensions->addItem(tr("No extension available"), "");
+    }
+}
+
+void CFilterDeleteExtension::slotApply()
+{
+    CCanvas::setOverrideCursor(Qt::WaitCursor,"CFilterDeleteExtension");
+
+    int idx = comboExtensions->currentIndex();
+    trk.filterDeleteExtension(comboExtensions->itemData(idx).toString());
+
+    CCanvas::restoreOverrideCursor("CFilterDeleteExtension");
+}
+
diff --git a/src/gis/trk/filter/CFilterInvalid.h b/src/gis/trk/filter/CFilterDeleteExtension.h
similarity index 70%
copy from src/gis/trk/filter/CFilterInvalid.h
copy to src/gis/trk/filter/CFilterDeleteExtension.h
index 7cca586..b743c01 100644
--- a/src/gis/trk/filter/CFilterInvalid.h
+++ b/src/gis/trk/filter/CFilterDeleteExtension.h
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+    Copyright (C) 2016 Christian Eichler code at christian-eichler.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -16,21 +16,22 @@
 
 **********************************************************************************************/
 
-#ifndef CFILTERINVALID_H
-#define CFILTERINVALID_H
+#ifndef CFILTERDELETEEXTENSION_H
+#define CFILTERDELETEEXTENSION_H
 
-#include "ui_IFilterInvalid.h"
+#include "ui_IFilterDeleteExtension.h"
 #include <QWidget>
-#include <functional>
 
 class CGisItemTrk;
 
-class CFilterInvalid : public QWidget, private Ui::IFilterInvalid
+class CFilterDeleteExtension : public QWidget, private Ui::IFilterDeleteExtension
 {
     Q_OBJECT
 public:
-    CFilterInvalid(CGisItemTrk& trk, QWidget *parent);
-    virtual ~CFilterInvalid();
+    CFilterDeleteExtension(CGisItemTrk& trk, QWidget * parent);
+    virtual ~CFilterDeleteExtension();
+
+    void update();
 
 private slots:
     void slotApply();
@@ -39,5 +40,5 @@ private:
     CGisItemTrk& trk;
 };
 
-#endif // CFILTERINVALID_H
+#endif //CFILTERDELETEEXTENSION_H
 
diff --git a/src/gis/trk/filter/CFilterDouglasPeuker.cpp b/src/gis/trk/filter/CFilterDouglasPeuker.cpp
index 3814857..b6661a9 100644
--- a/src/gis/trk/filter/CFilterDouglasPeuker.cpp
+++ b/src/gis/trk/filter/CFilterDouglasPeuker.cpp
@@ -35,7 +35,7 @@ CFilterDouglasPeuker::CFilterDouglasPeuker(CGisItemTrk &trk, QWidget * parent)
     SETTINGS;
     spinBox->setValue(cfg.value("TrackDetails/Filter/DouglasPeuker/distance",5).toInt());
 
-    connect(toolApply, SIGNAL(clicked()), this, SLOT(slotApply()));
+    connect(toolApply, &QToolButton::clicked, this, &CFilterDouglasPeuker::slotApply);
 }
 
 CFilterDouglasPeuker::~CFilterDouglasPeuker()
diff --git a/src/gis/trk/filter/CFilterInvalid.cpp b/src/gis/trk/filter/CFilterInvalid.cpp
index 9e9ba69..25db9db 100644
--- a/src/gis/trk/filter/CFilterInvalid.cpp
+++ b/src/gis/trk/filter/CFilterInvalid.cpp
@@ -16,9 +16,9 @@
 
 **********************************************************************************************/
 
-#include "gis/trk/filter/CFilterInvalid.h"
 #include "canvas/CCanvas.h"
 #include "gis/trk/CGisItemTrk.h"
+#include "gis/trk/filter/CFilterInvalid.h"
 
 CFilterInvalid::CFilterInvalid(CGisItemTrk &trk, QWidget *parent)
     : QWidget(parent)
@@ -27,7 +27,7 @@ CFilterInvalid::CFilterInvalid(CGisItemTrk &trk, QWidget *parent)
 {
     setupUi(this);
 
-    connect(toolApply, SIGNAL(clicked()), this, SLOT(slotApply()));
+    connect(toolApply, &QToolButton::clicked, this, &CFilterInvalid::slotApply);
 }
 
 CFilterInvalid::~CFilterInvalid()
diff --git a/src/gis/trk/filter/CFilterInvalid.h b/src/gis/trk/filter/CFilterInvalid.h
index 7cca586..4449d1d 100644
--- a/src/gis/trk/filter/CFilterInvalid.h
+++ b/src/gis/trk/filter/CFilterInvalid.h
@@ -21,7 +21,6 @@
 
 #include "ui_IFilterInvalid.h"
 #include <QWidget>
-#include <functional>
 
 class CGisItemTrk;
 
diff --git a/src/gis/trk/filter/CFilterMedian.cpp b/src/gis/trk/filter/CFilterMedian.cpp
index 089172a..fb87698 100644
--- a/src/gis/trk/filter/CFilterMedian.cpp
+++ b/src/gis/trk/filter/CFilterMedian.cpp
@@ -31,7 +31,7 @@ CFilterMedian::CFilterMedian(CGisItemTrk &trk, QWidget *parent)
     SETTINGS;
     spinBox->setValue(cfg.value("TrackDetails/Filter/Median/points",5).toInt());
 
-    connect(toolApply, SIGNAL(clicked()), this, SLOT(slotApply()));
+    connect(toolApply, &QToolButton::clicked, this, &CFilterMedian::slotApply);
 }
 
 CFilterMedian::~CFilterMedian()
diff --git a/src/gis/trk/filter/CFilterNewDate.cpp b/src/gis/trk/filter/CFilterNewDate.cpp
index 2fb4c7d..a562544 100644
--- a/src/gis/trk/filter/CFilterNewDate.cpp
+++ b/src/gis/trk/filter/CFilterNewDate.cpp
@@ -29,7 +29,7 @@ CFilterNewDate::CFilterNewDate(CGisItemTrk &trk, QWidget *parent)
     labelTimeZone->setText(QDateTime::currentDateTime().timeZone().abbreviation(QDateTime::currentDateTime()));
     dateTimeEdit->setDateTime(QDateTime::currentDateTime());
 
-    connect(toolApply, SIGNAL(clicked()), this, SLOT(slotApply()));
+    connect(toolApply, &QToolButton::clicked, this, &CFilterNewDate::slotApply);
 }
 
 CFilterNewDate::~CFilterNewDate()
diff --git a/src/gis/trk/filter/CFilterObscureDate.cpp b/src/gis/trk/filter/CFilterObscureDate.cpp
index 00a599d..c29d6a5 100644
--- a/src/gis/trk/filter/CFilterObscureDate.cpp
+++ b/src/gis/trk/filter/CFilterObscureDate.cpp
@@ -30,7 +30,7 @@ CFilterObscureDate::CFilterObscureDate(CGisItemTrk &trk, QWidget *parent)
     SETTINGS;
     spinBox->setValue(cfg.value("TrackDetails/Filter/ObscureTimestamp/delta",0).toInt());
 
-    connect(toolApply, SIGNAL(clicked()), this, SLOT(slotApply()));
+    connect(toolApply, &QToolButton::clicked, this, &CFilterObscureDate::slotApply);
 }
 
 CFilterObscureDate::~CFilterObscureDate()
diff --git a/src/gis/trk/filter/CFilterOffsetElevation.cpp b/src/gis/trk/filter/CFilterOffsetElevation.cpp
index 4620217..6df3046 100644
--- a/src/gis/trk/filter/CFilterOffsetElevation.cpp
+++ b/src/gis/trk/filter/CFilterOffsetElevation.cpp
@@ -33,7 +33,7 @@ CFilterOffsetElevation::CFilterOffsetElevation(CGisItemTrk &trk, QWidget *parent
     SETTINGS;
     spinBox->setValue(cfg.value("TrackDetails/Filter/OffsetElevation/offset",0).toInt());
 
-    connect(toolApply, SIGNAL(clicked()), this, SLOT(slotApply()));
+    connect(toolApply, &QToolButton::clicked, this, &CFilterOffsetElevation::slotApply);
 }
 
 CFilterOffsetElevation::~CFilterOffsetElevation()
diff --git a/src/gis/trk/filter/CFilterReplaceElevation.cpp b/src/gis/trk/filter/CFilterReplaceElevation.cpp
index f7fd102..7fb79b1 100644
--- a/src/gis/trk/filter/CFilterReplaceElevation.cpp
+++ b/src/gis/trk/filter/CFilterReplaceElevation.cpp
@@ -26,7 +26,7 @@ CFilterReplaceElevation::CFilterReplaceElevation(CGisItemTrk &trk, QWidget *pare
 {
     setupUi(this);
 
-    connect(toolApply, SIGNAL(clicked()), this, SLOT(slotApply()));
+    connect(toolApply, &QToolButton::clicked, this, &CFilterReplaceElevation::slotApply);
 }
 
 CFilterReplaceElevation::~CFilterReplaceElevation()
diff --git a/src/gis/trk/filter/CFilterReset.cpp b/src/gis/trk/filter/CFilterReset.cpp
index 0500d5f..8aa4e30 100644
--- a/src/gis/trk/filter/CFilterReset.cpp
+++ b/src/gis/trk/filter/CFilterReset.cpp
@@ -27,7 +27,7 @@ CFilterReset::CFilterReset(CGisItemTrk &trk, QWidget *parent)
 {
     setupUi(this);
 
-    connect(toolApply, SIGNAL(clicked()), this, SLOT(slotApply()));
+    connect(toolApply, &QToolButton::clicked, this, &CFilterReset::slotApply);
 }
 
 CFilterReset::~CFilterReset()
diff --git a/src/gis/trk/filter/CFilterSpeed.cpp b/src/gis/trk/filter/CFilterSpeed.cpp
index aa59033..754a3d6 100644
--- a/src/gis/trk/filter/CFilterSpeed.cpp
+++ b/src/gis/trk/filter/CFilterSpeed.cpp
@@ -34,7 +34,7 @@ CFilterSpeed::CFilterSpeed(CGisItemTrk &trk, QWidget *parent)
     SETTINGS;
     doubleSpinBox->setValue(cfg.value("TrackDetails/Filter/Speed/speed",1).toDouble());
 
-    connect(toolApply, SIGNAL(clicked()), this, SLOT(slotApply()));
+    connect(toolApply, &QToolButton::clicked, this, &CFilterSpeed::slotApply);
 }
 
 CFilterSpeed::~CFilterSpeed()
diff --git a/src/gis/trk/filter/CFilterReset.cpp b/src/gis/trk/filter/CFilterSplitSegment.cpp
similarity index 66%
copy from src/gis/trk/filter/CFilterReset.cpp
copy to src/gis/trk/filter/CFilterSplitSegment.cpp
index 0500d5f..bb403c8 100644
--- a/src/gis/trk/filter/CFilterReset.cpp
+++ b/src/gis/trk/filter/CFilterSplitSegment.cpp
@@ -1,5 +1,6 @@
 /**********************************************************************************************
     Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+    Copyright (C) 2015 Christian Eichler code at christian-eichler.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -18,25 +19,24 @@
 
 #include "canvas/CCanvas.h"
 #include "gis/trk/CGisItemTrk.h"
-#include "gis/trk/filter/CFilterReset.h"
+#include "gis/trk/filter/CFilterSplitSegment.h"
 
-CFilterReset::CFilterReset(CGisItemTrk &trk, QWidget *parent)
+CFilterSplitSegment::CFilterSplitSegment(CGisItemTrk &trk, QWidget *parent)
     : QWidget(parent)
     , trk(trk)
-
 {
     setupUi(this);
 
-    connect(toolApply, SIGNAL(clicked()), this, SLOT(slotApply()));
+    connect(toolApply, &QToolButton::clicked, this, &CFilterSplitSegment::slotApply);
 }
 
-CFilterReset::~CFilterReset()
+CFilterSplitSegment::~CFilterSplitSegment()
 {
 }
 
-void CFilterReset::slotApply()
+void CFilterSplitSegment::slotApply()
 {
-    CCanvas::setOverrideCursor(Qt::WaitCursor,"CFilterReset");
-    trk.filterReset();
-    CCanvas::restoreOverrideCursor("CFilterReset");
+    CCanvas::setOverrideCursor(Qt::WaitCursor, "CFilterSplitSegment");
+    trk.filterSplitSegment();
+    CCanvas::restoreOverrideCursor("CFilterSplitSegment");
 }
diff --git a/src/gis/trk/filter/CFilterInvalid.h b/src/gis/trk/filter/CFilterSplitSegment.h
similarity index 73%
copy from src/gis/trk/filter/CFilterInvalid.h
copy to src/gis/trk/filter/CFilterSplitSegment.h
index 7cca586..f15acf6 100644
--- a/src/gis/trk/filter/CFilterInvalid.h
+++ b/src/gis/trk/filter/CFilterSplitSegment.h
@@ -1,5 +1,6 @@
 /**********************************************************************************************
     Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+    Copyright (C) 2015 Christian Eichler code at christian-eichler.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -16,21 +17,20 @@
 
 **********************************************************************************************/
 
-#ifndef CFILTERINVALID_H
-#define CFILTERINVALID_H
+#ifndef CFILTERSPLITSEGMENT_H
+#define CFILTERSPLITSEGMENT_H
 
-#include "ui_IFilterInvalid.h"
+#include "ui_IFilterSplitSegment.h"
 #include <QWidget>
-#include <functional>
 
 class CGisItemTrk;
 
-class CFilterInvalid : public QWidget, private Ui::IFilterInvalid
+class CFilterSplitSegment : public QWidget, private Ui::IFilterSplitSegment
 {
     Q_OBJECT
 public:
-    CFilterInvalid(CGisItemTrk& trk, QWidget *parent);
-    virtual ~CFilterInvalid();
+    CFilterSplitSegment(CGisItemTrk& trk, QWidget * parent);
+    virtual ~CFilterSplitSegment();
 
 private slots:
     void slotApply();
@@ -39,5 +39,5 @@ private:
     CGisItemTrk& trk;
 };
 
-#endif // CFILTERINVALID_H
+#endif // CFILTERSPLITSEGMENT_H
 
diff --git a/src/gis/trk/filter/IFilterDeleteExtension.ui b/src/gis/trk/filter/IFilterDeleteExtension.ui
new file mode 100644
index 0000000..4ef5231
--- /dev/null
+++ b/src/gis/trk/filter/IFilterDeleteExtension.ui
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>IFilterDeleteExtension</class>
+ <widget class="QWidget" name="IFilterDeleteExtension">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>811</width>
+    <height>82</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <property name="leftMargin">
+    <number>3</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <property name="spacing">
+    <number>3</number>
+   </property>
+   <item row="0" column="0" rowspan="2">
+    <widget class="QLabel" name="label_3">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text">
+      <string/>
+     </property>
+     <property name="pixmap">
+      <pixmap resource="../../../resources.qrc">:/icons/48x48/FilterModifyExtension.png</pixmap>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1">
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string><b>Remove Extension from all Track Points</b></string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1">
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <property name="spacing">
+      <number>3</number>
+     </property>
+     <item>
+      <widget class="QLabel" name="label_2">
+       <property name="text">
+        <string>Remove </string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QComboBox" name="comboExtensions">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="sizeAdjustPolicy">
+        <enum>QComboBox::AdjustToContents</enum>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLabel" name="label_4">
+       <property name="text">
+        <string>from all Track Points</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer">
+       <property name="orientation">
+        <enum>Qt::Horizontal</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>40</width>
+         <height>20</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QToolButton" name="toolApply">
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="icon">
+        <iconset resource="../../../resources.qrc">
+         <normaloff>:/icons/32x32/Apply.png</normaloff>:/icons/32x32/Apply.png</iconset>
+       </property>
+       <property name="iconSize">
+        <size>
+         <width>22</width>
+         <height>22</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="2" column="0" colspan="2">
+    <widget class="Line" name="line">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources>
+  <include location="../../../resources.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/src/gis/trk/filter/IFilterSplitSegment.ui b/src/gis/trk/filter/IFilterSplitSegment.ui
new file mode 100644
index 0000000..153573f
--- /dev/null
+++ b/src/gis/trk/filter/IFilterSplitSegment.ui
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>IFilterSplitSegment</class>
+ <widget class="QWidget" name="IFilterSplitSegment">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>811</width>
+    <height>82</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <property name="leftMargin">
+    <number>3</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <property name="spacing">
+    <number>3</number>
+   </property>
+   <item row="0" column="0" rowspan="2">
+    <widget class="QLabel" name="label_3">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text">
+      <string/>
+     </property>
+     <property name="pixmap">
+      <pixmap resource="../../../resources.qrc">:/icons/48x48/TrkCut.png</pixmap>
+     </property>
+    </widget>
+   </item>
+   <item row="0" column="1">
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string><html><head/><body><p><span style=" font-weight:600;">Split Segments into Tracks</span></p></body></html></string>
+     </property>
+    </widget>
+   </item>
+   <item row="1" column="1">
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <property name="spacing">
+      <number>3</number>
+     </property>
+     <item>
+      <widget class="QLabel" name="label_2">
+       <property name="text">
+        <string>Creates a new track for every segment within this track.</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="toolApply">
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="icon">
+        <iconset resource="../../../resources.qrc">
+         <normaloff>:/icons/32x32/Apply.png</normaloff>:/icons/32x32/Apply.png</iconset>
+       </property>
+       <property name="iconSize">
+        <size>
+         <width>22</width>
+         <height>22</height>
+        </size>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item row="2" column="0" colspan="2">
+    <widget class="Line" name="line">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources>
+  <include location="../../../resources.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/src/gis/trk/filter/filter.cpp b/src/gis/trk/filter/filter.cpp
index e960de6..d4f5eb9 100644
--- a/src/gis/trk/filter/filter.cpp
+++ b/src/gis/trk/filter/filter.cpp
@@ -18,7 +18,10 @@
 
 #include "CMainWindow.h"
 #include "GeoMath.h"
+#include "gis/CGisWidget.h"
 #include "gis/trk/CGisItemTrk.h"
+#include "gis/trk/CKnownExtension.h"
+#include "gis/trk/CPropertyTrk.h"
 
 #include <QtMath>
 #include <proj_api.h>
@@ -88,7 +91,6 @@ void CGisItemTrk::filterReducePoints(qreal dist)
                     nothingDone = false;
                     pt.flags |=  trkpt_t::eHidden;
                 }
-
             }
 
             cnt++;
@@ -103,7 +105,7 @@ void CGisItemTrk::filterReducePoints(qreal dist)
     deriveSecondaryData();
     QString val, unit;
     IUnit::self().meter2distance(dist, val, unit);
-    changed(QObject::tr("Hide points by Douglas Peuker algorithm (%1%2)").arg(val).arg(unit), "://icons/48x48/PointHide.png");
+    changed(tr("Hide points by Douglas Peuker algorithm (%1%2)").arg(val).arg(unit), "://icons/48x48/PointHide.png");
 }
 
 void CGisItemTrk::filterRemoveNullPoints()
@@ -120,7 +122,7 @@ void CGisItemTrk::filterRemoveNullPoints()
             trkpt_t& pt = seg.pts[n];
 
             if( (NOFLOAT == pt.lat || 0. == pt.lat)
-             && (NOFLOAT == pt.lon || 0. == pt.lon) )
+                && (NOFLOAT == pt.lon || 0. == pt.lon) )
             {
                 pt.flags |= trkpt_t::eHidden;
                 nothingDone = false;
@@ -138,7 +140,7 @@ void CGisItemTrk::filterRemoveNullPoints()
     }
 
     deriveSecondaryData();
-    changed(QObject::tr("Hide points with invalid coordinates at the beginning of the track"), "://icons/48x48/PointHide.png");
+    changed(tr("Hide points with invalid coordinates at the beginning of the track"), "://icons/48x48/PointHide.png");
 }
 
 void CGisItemTrk::filterReset()
@@ -154,7 +156,7 @@ void CGisItemTrk::filterReset()
         }
     }
     deriveSecondaryData();
-    changed(QObject::tr("Reset all hidden track points to visible"), "://icons/48x48/PointHide.png");
+    changed(tr("Reset all hidden track points to visible"), "://icons/48x48/PointHide.png");
 }
 
 void CGisItemTrk::filterDelete()
@@ -188,7 +190,7 @@ void CGisItemTrk::filterDelete()
     }
 
     deriveSecondaryData();
-    changed(QObject::tr("Permanently removed all hidden track points"), "://icons/48x48/PointHide.png");
+    changed(tr("Permanently removed all hidden track points"), "://icons/48x48/PointHide.png");
 }
 
 void CGisItemTrk::filterSmoothProfile(int points)
@@ -238,7 +240,7 @@ void CGisItemTrk::filterSmoothProfile(int points)
         }
     }
     deriveSecondaryData();
-    changed(QObject::tr("Smoothed profile with a Median filter of size %1").arg(points), "://icons/48x48/SetEle.png");
+    changed(tr("Smoothed profile with a Median filter of size %1").arg(points), "://icons/48x48/SetEle.png");
 }
 
 void CGisItemTrk::filterReplaceElevation()
@@ -258,7 +260,7 @@ void CGisItemTrk::filterReplaceElevation()
     }
 
     QPolygonF ele(line.size());
-    CMainWindow::self().getEelevationAt(line, ele);
+    CMainWindow::self().getElevationAt(line, ele);
 
     int cnt = 0;
     for(int i = 0; i < trk.segs.size(); i++)
@@ -274,7 +276,7 @@ void CGisItemTrk::filterReplaceElevation()
     }
 
     deriveSecondaryData();
-    changed(QObject::tr("Replaced elevation data with data from DEM files."), "://icons/48x48/SetEle.png");
+    changed(tr("Replaced elevation data with data from DEM files."), "://icons/48x48/SetEle.png");
 }
 
 void CGisItemTrk::filterOffsetElevation(int offset)
@@ -297,7 +299,7 @@ void CGisItemTrk::filterOffsetElevation(int offset)
     QString val, unit;
     IUnit::self().meter2elevation(offset, val, unit);
     deriveSecondaryData();
-    changed(QObject::tr("Offset elevation data by %1%2.").arg(val).arg(unit), "://icons/48x48/SetEle.png");
+    changed(tr("Offset elevation data by %1%2.").arg(val).arg(unit), "://icons/48x48/SetEle.png");
 }
 
 void CGisItemTrk::filterNewDate(const QDateTime& date)
@@ -316,7 +318,7 @@ void CGisItemTrk::filterNewDate(const QDateTime& date)
     }
 
     deriveSecondaryData();
-    changed(QObject::tr("Changed start of track to %1.").arg(date.toString()), "://icons/48x48/Time.png");
+    changed(tr("Changed start of track to %1.").arg(date.toString()), "://icons/48x48/Time.png");
 }
 
 void CGisItemTrk::filterObscureDate(int delta)
@@ -335,7 +337,7 @@ void CGisItemTrk::filterObscureDate(int delta)
         }
 
         deriveSecondaryData();
-        changed(QObject::tr("Remove timestamps."), "://icons/48x48/Time.png");
+        changed(tr("Remove timestamps."), "://icons/48x48/Time.png");
     }
     else
     {
@@ -358,7 +360,7 @@ void CGisItemTrk::filterObscureDate(int delta)
         }
 
         deriveSecondaryData();
-        changed(QObject::tr("Set artificial timestamps with delta of %1 sec.").arg(delta), "://icons/48x48/Time.png");
+        changed(tr("Set artificial timestamps with delta of %1 sec.").arg(delta), "://icons/48x48/Time.png");
     }
 }
 
@@ -391,5 +393,47 @@ void CGisItemTrk::filterSpeed(qreal speed)
     deriveSecondaryData();
     QString val, unit;
     IUnit::self().meter2speed(speed, val, unit);
-    changed(QObject::tr("Changed speed to %1%2.").arg(val).arg(unit), "://icons/48x48/Time.png");
+    changed(tr("Changed speed to %1%2.").arg(val).arg(unit), "://icons/48x48/Time.png");
+}
+
+void CGisItemTrk::filterSplitSegment()
+{
+    IGisProject * project = CGisWidget::self().selectProject();
+    if(nullptr == project)
+    {
+        return;
+    }
+
+    int part = 0;
+    foreach(const trkseg_t &seg, trk.segs)
+    {
+        if(0 < seg.pts.count())
+        {
+            qint32 idx1 = seg.pts[                  0].idxTotal;
+            qint32 idx2 = seg.pts[seg.pts.count() - 1].idxTotal;
+
+            new CGisItemTrk(tr("%1 (Segment %2)").arg(trk.name).arg(part), idx1, idx2, trk, project);
+            part++;
+        }
+    }
+}
+
+void CGisItemTrk::filterDeleteExtension(const QString &extStr)
+{
+    for(int i = 0; i < trk.segs.size(); i++)
+    {
+        trkseg_t& seg = trk.segs[i];
+
+        for(int n = 0; n < seg.pts.size(); n++)
+        {
+            seg.pts[n].extensions.remove(extStr);
+        }
+    }
+
+    extrema.remove(extStr);
+    existingExtensions.remove(extStr);
+    propHandler->setupData();
+
+    const CKnownExtension &ext = CKnownExtension::get(extStr);
+    changed(tr("Removed extension %1 from all Track Points").arg(ext.name), "://icons/48x48/FilterModifyExtension.png");
 }
diff --git a/src/gis/wpt/CDetailsGeoCache.cpp b/src/gis/wpt/CDetailsGeoCache.cpp
index 4dcab14..9a46c30 100644
--- a/src/gis/wpt/CDetailsGeoCache.cpp
+++ b/src/gis/wpt/CDetailsGeoCache.cpp
@@ -87,14 +87,14 @@ CDetailsGeoCache::CDetailsGeoCache(CGisItemWpt &wpt, QWidget *parent)
 
     timerDownload = new QTimer(this);
     timerDownload->setSingleShot(true);
-    connect(timerDownload, SIGNAL(timeout()), this, SLOT(slotDownloadDone()));
+    connect(timerDownload,     &QTimer::timeout,       this, &CDetailsGeoCache::slotDownloadDone);
 
-    connect(checkHint, SIGNAL(toggled(bool)), this, SLOT(slotHintChanged(bool)));
-    connect(webDesc, SIGNAL(linkClicked(QUrl)), this, SLOT(slotLinkClicked(QUrl)));
-    connect(toolUpdateSpoiler, SIGNAL(clicked()), this, SLOT(slotCollectSpoiler()));
+    connect(checkHint,         &QCheckBox::toggled,    this, &CDetailsGeoCache::slotHintChanged);
+    connect(webDesc,           &QWebView::linkClicked, this, &CDetailsGeoCache::slotLinkClicked);
+    connect(toolUpdateSpoiler, &QToolButton::clicked,  this, &CDetailsGeoCache::slotCollectSpoiler);
 
     networkManager = new QNetworkAccessManager(this);
-    connect(networkManager,SIGNAL(finished(QNetworkReply*)),this,SLOT(slotRequestFinished(QNetworkReply*)));
+    connect(networkManager, &QNetworkAccessManager::finished, this, &CDetailsGeoCache::slotRequestFinished);
 
     const QList<CGisItemWpt::image_t>& images = wpt.getImages();
     photoAlbum->reload(images);
diff --git a/src/gis/wpt/CDetailsWpt.cpp b/src/gis/wpt/CDetailsWpt.cpp
index 4d63e85..983d8be 100644
--- a/src/gis/wpt/CDetailsWpt.cpp
+++ b/src/gis/wpt/CDetailsWpt.cpp
@@ -41,19 +41,21 @@ CDetailsWpt::CDetailsWpt(CGisItemWpt &wpt, QWidget *parent)
 
     toolLock->setDisabled(wpt.isOnDevice());
 
-    connect(labelName,      SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
-    connect(labelPosition,  SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
-    connect(labelElevation, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
-    connect(labelProximity, SIGNAL(linkActivated(QString)), this, SLOT(slotLinkActivated(QString)));
-    connect(textCmtDesc,    SIGNAL(anchorClicked(QUrl)),    this, SLOT(slotLinkActivated(QUrl)));
-    connect(toolIcon,       SIGNAL(clicked()),              this, SLOT(slotChangeIcon()));
-    connect(toolLock,       SIGNAL(toggled(bool)),          this, SLOT(slotChangeReadOnlyMode(bool)));
-
-    connect(listHistory, SIGNAL(sigChanged()), this, SLOT(setupGui()));
-
-    connect(toolAddImage, SIGNAL(clicked()), photoAlbum, SLOT(slotAddImage()));
-    connect(toolDelImage, SIGNAL(clicked()), photoAlbum, SLOT(slotDelImage()));
-    connect(photoAlbum, SIGNAL(sigChanged(QList<CGisItemWpt::image_t>)), this, SLOT(slotChangedImages(QList<CGisItemWpt::image_t>)));
+    connect(labelPosition,  &QLabel::linkActivated,          this,       static_cast<void (CDetailsWpt::*)(const QString&)>(&CDetailsWpt::slotLinkActivated));
+    connect(labelElevation, &QLabel::linkActivated,          this,       static_cast<void (CDetailsWpt::*)(const QString&)>(&CDetailsWpt::slotLinkActivated));
+    connect(labelProximity, &QLabel::linkActivated,          this,       static_cast<void (CDetailsWpt::*)(const QString&)>(&CDetailsWpt::slotLinkActivated));
+    connect(textCmtDesc,    &QTextBrowser::anchorClicked,    this,       static_cast<void (CDetailsWpt::*)(const QUrl&)   >(&CDetailsWpt::slotLinkActivated));
+
+    connect(lineName,       &CLineEdit::textEdited,          this,       &CDetailsWpt::slotNameChanged);
+    connect(lineName,       &CLineEdit::editingFinished,     this,       &CDetailsWpt::slotNameChangeFinished);
+    connect(toolIcon,       &QToolButton::clicked,           this,       &CDetailsWpt::slotChangeIcon);
+    connect(toolLock,       &QToolButton::toggled,           this,       &CDetailsWpt::slotChangeReadOnlyMode);
+
+    connect(listHistory,    &CHistoryListWidget::sigChanged, this,       &CDetailsWpt::setupGui);
+
+    connect(toolAddImage,   &QToolButton::clicked,           photoAlbum, &CPhotoAlbum::slotAddImage);
+    connect(toolDelImage,   &QToolButton::clicked,           photoAlbum, &CPhotoAlbum::slotDelImage);
+    connect(photoAlbum,     &CPhotoAlbum::sigChanged,        this,       &CDetailsWpt::slotChangedImages);
 }
 
 CDetailsWpt::~CDetailsWpt()
@@ -81,7 +83,8 @@ void CDetailsWpt::setupGui()
     toolIcon->setEnabled(!isReadOnly);
     toolIcon->setIcon(wpt.getIcon());
     toolIcon->setObjectName(wpt.getIconName());
-    labelName->setText(IGisItem::toLink(isReadOnly, "name", wpt.getName(), ""));
+    lineName->setReadOnly(isReadOnly);
+    lineName->setText(wpt.getName());
     labelPosition->setText(IGisItem::toLink(isReadOnly, "position", strPos, ""));
 
     labelTainted->setVisible(wpt.isTainted());
@@ -127,18 +130,28 @@ void CDetailsWpt::setupGui()
     originator = false;
 }
 
-void CDetailsWpt::slotLinkActivated(const QString& link)
+void CDetailsWpt::slotNameChanged(const QString &name)
 {
-    if(link == "name")
+    setWindowTitle(name);
+}
+
+void CDetailsWpt::slotNameChangeFinished()
+{
+    lineName->clearFocus();
+
+    const QString& name = lineName->text();
+    slotNameChanged(name);
+
+    if(name != wpt.getName())
     {
-        QString name = QInputDialog::getText(this, tr("Edit name..."), tr("Enter new waypoint name."), QLineEdit::Normal, wpt.getName());
-        if(name.isEmpty())
-        {
-            return;
-        }
         wpt.setName(name);
+        setupGui();
     }
-    else if(link == "elevation")
+}
+
+void CDetailsWpt::slotLinkActivated(const QString& link)
+{
+    if(link == "elevation")
     {
         QVariant var(wpt.getElevation());
         CElevationDialog dlg(this, var, QVariant(NOINT), wpt.getPosition());
diff --git a/src/gis/wpt/CDetailsWpt.h b/src/gis/wpt/CDetailsWpt.h
index 7705c58..fe1b00c 100644
--- a/src/gis/wpt/CDetailsWpt.h
+++ b/src/gis/wpt/CDetailsWpt.h
@@ -22,7 +22,7 @@
 #include "ui_IDetailsWpt.h"
 #include <QDialog>
 
-#include <gis/wpt/CGisItemWpt.h>
+#include "gis/wpt/CGisItemWpt.h"
 
 class CDetailsWpt : public QDialog, private Ui::IDetailsWpt
 {
@@ -32,6 +32,8 @@ public:
     virtual ~CDetailsWpt();
 
 private slots:
+    void slotNameChanged(const QString &name);
+    void slotNameChangeFinished();
     void slotLinkActivated(const QString& link);
     void slotLinkActivated(const QUrl& url);
     void slotChangeIcon();
diff --git a/src/gis/wpt/CGisItemWpt.cpp b/src/gis/wpt/CGisItemWpt.cpp
index ac05a5a..51003b0 100644
--- a/src/gis/wpt/CGisItemWpt.cpp
+++ b/src/gis/wpt/CGisItemWpt.cpp
@@ -38,18 +38,28 @@
 
 IGisItem::key_t CGisItemWpt::keyUserFocus;
 
-/// used to add a new waypoint
-CGisItemWpt::CGisItemWpt(const QPointF& pos, const QString& name, const QString &icon, IGisProject *project)
+CGisItemWpt::CGisItemWpt(const QPointF &pos, qreal ele, const QDateTime &time, const QString &name, const QString &icon, IGisProject *project)
     : IGisItem(project, eTypeWpt, NOIDX)
 {
     wpt.name    = name;
     wpt.sym     = icon;
     wpt.lon     = pos.x();
     wpt.lat     = pos.y();
-    wpt.time    = QDateTime::currentDateTimeUtc();
+    wpt.ele     = (ele == NOFLOAT) ? NOINT : qRound(ele);
+    wpt.time    = time;
+
+    boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);
 
+    setupHistory();
+    updateDecoration(eMarkNone, eMarkNone);
+}
+
+/// used to add a new waypoint
+CGisItemWpt::CGisItemWpt(const QPointF& pos, const QString& name, const QString &icon, IGisProject *project)
+    : CGisItemWpt(pos, NOFLOAT, QDateTime::currentDateTimeUtc(), name, icon, project)
+{
     flags = eFlagCreatedInQms|eFlagWriteAllowed;
-    qreal ele = CMainWindow::self().getEelevationAt(pos * DEG_TO_RAD);
+    qreal ele = CMainWindow::self().getElevationAt(pos * DEG_TO_RAD);
     wpt.ele = (ele == NOFLOAT) ? NOINT : qRound(ele);
 
     boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);
@@ -71,7 +81,7 @@ CGisItemWpt::CGisItemWpt(const QPointF& pos, const CGisItemWpt& parentWpt, IGisP
     history.events.clear();
     flags = eFlagCreatedInQms|eFlagWriteAllowed;
 
-    qreal ele = CMainWindow::self().getEelevationAt(pos * DEG_TO_RAD);
+    qreal ele = CMainWindow::self().getElevationAt(pos * DEG_TO_RAD);
     wpt.ele = (ele == NOFLOAT) ? NOINT : qRound(ele);
 
     boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);
@@ -89,7 +99,7 @@ CGisItemWpt::CGisItemWpt(const CGisItemWpt &parentWpt, IGisProject *project, int
 
     if(clone)
     {
-        wpt.name += QObject::tr("_Clone");
+        wpt.name += tr("_Clone");
         key.clear();
         history.events.clear();
         setupHistory();
@@ -104,6 +114,7 @@ CGisItemWpt::CGisItemWpt(const CGisItemWpt &parentWpt, IGisProject *project, int
         flags &= ~eFlagWriteAllowed;
     }
 
+    boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);
     updateDecoration(eMarkChanged, eMarkNone);
 }
 
@@ -119,12 +130,16 @@ CGisItemWpt::CGisItemWpt(const QDomNode &xml, IGisProject *project)
     updateDecoration(eMarkNone, eMarkNone);
 }
 
-CGisItemWpt::CGisItemWpt(const history_t& hist, IGisProject * project)
+CGisItemWpt::CGisItemWpt(const history_t& hist, const QString &dbHash, IGisProject * project)
     : IGisItem(project, eTypeWpt, project->childCount())
 {
     history = hist;
     loadHistory(hist.histIdxCurrent);
     boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);
+    if(!dbHash.isEmpty())
+    {
+        lastDatabaseHash = dbHash;
+    }
 }
 
 CGisItemWpt::CGisItemWpt(quint64 id, QSqlDatabase& db, IGisProject * project)
@@ -145,10 +160,35 @@ CGisItemWpt::CGisItemWpt(const CTwoNavProject::wpt_t &tnvWpt, IGisProject * proj
     updateDecoration(eMarkNone, eMarkNone);
 }
 
+CGisItemWpt::CGisItemWpt(CFitStream& stream, IGisProject * project)
+    : IGisItem(project, eTypeWpt, NOIDX)
+    , proximity(NOFLOAT)
+    , posScreen(NOPOINTF)
+{
+    readWptFromFit(stream);
+    boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);
+
+    genKey();
+    setupHistory();
+    updateDecoration(eMarkNone, eMarkNone);
+}
+
 CGisItemWpt::~CGisItemWpt()
 {
 }
 
+IGisItem * CGisItemWpt::createClone()
+{
+    int idx = -1;
+    IGisProject * project = dynamic_cast<IGisProject*>(parent());
+    if(project)
+    {
+        idx = project->indexOfChild(this);
+    }
+    return new CGisItemWpt(*this, project, idx, true);
+}
+
+
 void CGisItemWpt::setSymbol()
 {
     setIcon();
@@ -224,7 +264,7 @@ QString CGisItemWpt::getInfo(bool allowEdit) const
         }
         QString val, unit;
         IUnit::self().meter2elevation(wpt.ele, val, unit);
-        str += QObject::tr("Elevation: %1 %2").arg(val).arg(unit);
+        str += tr("Elevation: %1 %2").arg(val).arg(unit);
     }
 
     if(proximity != NOFLOAT)
@@ -235,7 +275,7 @@ QString CGisItemWpt::getInfo(bool allowEdit) const
         }
         QString val, unit;
         IUnit::self().meter2distance(proximity, val, unit);
-        str += QObject::tr("Proximity: %1 %2").arg(val).arg(unit);
+        str += tr("Proximity: %1 %2").arg(val).arg(unit);
     }
 
     QString desc = removeHtml(wpt.desc).simplified();
@@ -309,7 +349,7 @@ void CGisItemWpt::setName(const QString& str)
     setText(CGisListWks::eColumnName, str);
 
     wpt.name = str;
-    changed(QObject::tr("Changed name"),"://icons/48x48/EditText.png");
+    changed(tr("Changed name"),"://icons/48x48/EditText.png");
 }
 
 void CGisItemWpt::setPosition(const QPointF& pos)
@@ -319,19 +359,19 @@ void CGisItemWpt::setPosition(const QPointF& pos)
 
     boundingRect = QRectF(QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD,QPointF(wpt.lon,wpt.lat)*DEG_TO_RAD);
 
-    changed(QObject::tr("Changed position"),"://icons/48x48/WptMove.png");
+    changed(tr("Changed position"),"://icons/48x48/WptMove.png");
 }
 
 void CGisItemWpt::setElevation(qint32 val)
 {
     wpt.ele = val;
-    changed(QObject::tr("Changed elevation"),"://icons/48x48/SetEle.png");
+    changed(tr("Changed elevation"),"://icons/48x48/SetEle.png");
 }
 
 void CGisItemWpt::setProximity(qreal val)
 {
     proximity = val;
-    changed(QObject::tr("Changed proximity"),"://icons/48x48/WptProx.png");
+    changed(tr("Changed proximity"),"://icons/48x48/WptProx.png");
 }
 
 void CGisItemWpt::setIcon(const QString& name)
@@ -345,37 +385,37 @@ void CGisItemWpt::setIcon(const QString& name)
     QString path;
     getWptIconByName(name, focus, &path);
 
-    changed(QObject::tr("Changed icon"), path);
+    changed(tr("Changed icon"), path);
 }
 
 void CGisItemWpt::setComment(const QString& str)
 {
     wpt.cmt = str;
-    changed(QObject::tr("Changed comment"), "://icons/48x48/EditText.png");
+    changed(tr("Changed comment"), "://icons/48x48/EditText.png");
 }
 
 void CGisItemWpt::setDescription(const QString& str)
 {
     wpt.desc = str;
-    changed(QObject::tr("Changed description"), "://icons/48x48/EditText.png");
+    changed(tr("Changed description"), "://icons/48x48/EditText.png");
 }
 
 void CGisItemWpt::setLinks(const QList<link_t>& links)
 {
     wpt.links = links;
-    changed(QObject::tr("Changed links"), "://icons/48x48/Link.png");
+    changed(tr("Changed links"), "://icons/48x48/Link.png");
 }
 
 void CGisItemWpt::setImages(const QList<image_t>& imgs)
 {
     images = imgs;
-    changed(QObject::tr("Changed images"), "://icons/48x48/Image.png");
+    changed(tr("Changed images"), "://icons/48x48/Image.png");
 }
 
 void CGisItemWpt::addImage(const image_t& img)
 {
     images.append(img);
-    changed(QObject::tr("Add image"), "://icons/48x48/Image.png");
+    changed(tr("Add image"), "://icons/48x48/Image.png");
 }
 
 
diff --git a/src/gis/wpt/CGisItemWpt.h b/src/gis/wpt/CGisItemWpt.h
index 59ce15a..a5c7737 100644
--- a/src/gis/wpt/CGisItemWpt.h
+++ b/src/gis/wpt/CGisItemWpt.h
@@ -22,6 +22,7 @@
 #include "gis/IGisItem.h"
 #include "gis/tnv/CTwoNavProject.h"
 
+#include <QCoreApplication>
 #include <QPointer>
 
 class IGisProject;
@@ -31,9 +32,10 @@ class QSqlDatabase;
 class CQlgtWpt;
 class QTextEdit;
 class QDir;
-
+class CFitStream;
 class CGisItemWpt : public IGisItem
 {
+    Q_DECLARE_TR_FUNCTIONS(CGisItemWpt)
 public:
     enum geocacheservice_e {eGC, eOC, eTC};
 
@@ -83,6 +85,8 @@ public:
         QString fileName;
     };
 
+    CGisItemWpt(const QPointF &pos, qreal ele, const QDateTime &time, const QString &name, const QString &icon, IGisProject *project);
+
     /**
        @brief Create a completely new waypoint
        @param pos       the waypoint's position [°]
@@ -117,7 +121,7 @@ public:
        @param hist      the change history
        @param project   the project to append with item
      */
-    CGisItemWpt(const history_t& hist, IGisProject * project);
+    CGisItemWpt(const history_t& hist, const QString& dbHash, IGisProject * project);
 
     /**
        @brief Read item from database by it's database ID
@@ -136,13 +140,17 @@ public:
 
     CGisItemWpt(const CQlgtWpt& wpt1);
 
+    CGisItemWpt(CFitStream& stream, IGisProject * project);
+
     virtual ~CGisItemWpt();
 
+    IGisItem * createClone() override;
+
     /**
        @brief Save waypoint to GPX tree
        @param gpx   The <gpx> node to append by the waypoint
      */
-    void save(QDomNode& gpx);
+    void save(QDomNode& gpx) override;
     /**
        @brief Save waypoint to TwoNav waypoint file
        @param out   the text stream to write to
@@ -153,22 +161,22 @@ public:
        @param stream  the data stream to read from
        @return A reference to the stream
      */
-    QDataStream& operator<<(QDataStream& stream);
+    QDataStream& operator<<(QDataStream& stream) override;
     /**
        @brief Serialize waypoint into a binary data stream
        @param stream  the data stream to write to.
        @return A reference to the stream
      */
-    QDataStream& operator>>(QDataStream& stream) const;
+    QDataStream& operator>>(QDataStream& stream) const override;
 
     void setName(const QString& str);
     void setPosition(const QPointF& pos);
     void setElevation(qint32 val);
     void setProximity(qreal val);
     void setIcon(const QString& name);
-    void setComment(const QString& str);
-    void setDescription(const QString& str);
-    void setLinks(const QList<link_t>& links);
+    void setComment(const QString& str)         override;
+    void setDescription(const QString& str)         override;
+    void setLinks(const QList<link_t>& links) override;
     void setImages(const QList<image_t>& imgs);
 
     /**
@@ -206,12 +214,12 @@ public:
     void addImage(const image_t& img);
 
 
-    const QString& getName() const
+    const QString& getName() const override
     {
         return wpt.name.isEmpty() ? noName : wpt.name;
     }
 
-    QString getInfo(bool allowEdit = false) const;
+    QString getInfo(bool allowEdit = false) const override;
     QPointF getPosition() const
     {
         return QPointF(wpt.lon, wpt.lat);
@@ -233,11 +241,11 @@ public:
     {
         return wpt.sym;
     }
-    const QString& getComment() const
+    const QString& getComment() const override
     {
         return wpt.cmt;
     }
-    const QString& getDescription() const
+    const QString& getDescription() const override
     {
         return wpt.desc;
     }
@@ -245,7 +253,7 @@ public:
     {
         return geocache;
     }
-    const QList<link_t>& getLinks() const
+    const QList<link_t>& getLinks() const override
     {
         return wpt.links;
     }
@@ -254,27 +262,28 @@ public:
         return images;
     }
 
-    IScrOpt * getScreenOptions(const QPoint &origin, IMouse * mouse);
-    QPointF getPointCloseBy(const QPoint& )
+    IScrOpt* getScreenOptions(const QPoint &origin, IMouse * mouse) override;
+
+    QPointF getPointCloseBy(const QPoint& ) override
     {
         return posScreen;
     }
 
-    void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis);
-    void drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis);
-    void drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis);
-    void drawHighlight(QPainter& p);
-    bool isCloseTo(const QPointF& pos);
-    void mouseMove(const QPointF& pos);
+    void drawItem(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, CGisDraw * gis) override;
+    void drawItem(QPainter& p, const QRectF& viewport, CGisDraw * gis) override;
+    void drawLabel(QPainter& p, const QPolygonF& viewport, QList<QRectF>& blockedAreas, const QFontMetricsF& fm, CGisDraw * gis) override;
+    void drawHighlight(QPainter& p) override;
+    bool isCloseTo(const QPointF& pos) override;
+    void mouseMove(const QPointF& pos) override;
     void mousePress(const QPointF& pos);
     void mouseRelease(const QPointF& pos);
     bool isGeocache()
     {
         return geocache.hasData;
     }
-    void gainUserFocus(bool yes);
+    void gainUserFocus(bool yes) override;
 
-    void edit();
+    void edit() override;
 
     /**
        @brief Remove all links from the waypoint's link list with a given type
@@ -299,9 +308,10 @@ public:
 
 private:
     void setIcon();
-    void setSymbol();
+    void setSymbol() override;
     void readGpx(const QDomNode& xml);
     void readTwoNav(const CTwoNavProject::wpt_t &tnvWpt);
+    void readWptFromFit(CFitStream &stream);
     void readGcExt(const QDomNode& xmlCache);
     void writeGcExt(QDomNode& xmlCache);
     void drawBubble(QPainter& p);
@@ -325,10 +335,10 @@ private:
 
     QPointer<CScrOptWpt> scrOpt;
 
-    bool doBubble = false;
-    bool doSpecialCursor = false;
-    bool doBubbleMove = false;
-    bool doBubbleSize = false;
+    bool doBubble          = false;
+    bool doSpecialCursor   = false;
+    bool doBubbleMove      = false;
+    bool doBubbleSize      = false;
     bool mouseIsOverBubble = false;
     QRect rectBubble;
     QRect rectBubbleMove {0,0,16,16};
@@ -340,5 +350,5 @@ private:
     quint32 widthBubble = 300;
 };
 
-#endif //CGISITEMWPT_H
+#endif // CGISITEMWPT_H
 
diff --git a/src/gis/wpt/CProjWpt.cpp b/src/gis/wpt/CProjWpt.cpp
index 96c08a3..4ac01c1 100644
--- a/src/gis/wpt/CProjWpt.cpp
+++ b/src/gis/wpt/CProjWpt.cpp
@@ -43,8 +43,8 @@ CProjWpt::CProjWpt(CGisItemWpt& wpt, QWidget *parent)
     IUnit::self().meter2distance(0,val,unit);
     labelDistUnit->setText(unit);
 
-    connect(labelName, SIGNAL(linkActivated(QString)), this, SLOT(slotChangeName()));
-    connect(toolIcon, SIGNAL(clicked()), this, SLOT(slotChangeIcon()));
+    connect(labelName, &QLabel::linkActivated, this, &CProjWpt::slotChangeName);
+    connect(toolIcon,  &QToolButton::clicked,  this, &CProjWpt::slotChangeIcon);
 }
 
 CProjWpt::~CProjWpt()
@@ -79,8 +79,8 @@ void CProjWpt::accept()
         return;
     }
 
-    IGisProject * project = dynamic_cast<IGisProject*>(wpt.parent());
-    if(project == 0)
+    IGisProject *project = dynamic_cast<IGisProject*>(wpt.parent());
+    if(nullptr == project)
     {
         return;
     }
diff --git a/src/gis/wpt/CProjWpt.h b/src/gis/wpt/CProjWpt.h
index f53f1b6..393a55c 100644
--- a/src/gis/wpt/CProjWpt.h
+++ b/src/gis/wpt/CProjWpt.h
@@ -32,7 +32,7 @@ public:
     virtual ~CProjWpt();
 
 public slots:
-    void accept();
+    void accept() override;
 
 private slots:
     void slotChangeIcon();
diff --git a/src/gis/wpt/CScrOptWpt.cpp b/src/gis/wpt/CScrOptWpt.cpp
index d64f558..1206de2 100644
--- a/src/gis/wpt/CScrOptWpt.cpp
+++ b/src/gis/wpt/CScrOptWpt.cpp
@@ -48,19 +48,19 @@ CScrOptWpt::CScrOptWpt(CGisItemWpt *wpt, const QPoint& point, IMouse *parent)
     move(anchor.toPoint() + QPoint(-width()/2,SCR_OPT_OFFSET));
     show();
 
-    connect(toolDelete, SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolEdit,   SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolCopy,   SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolMove,   SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolProj,   SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolBubble, SIGNAL(clicked()), this, SLOT(hide()));
-
-    connect(toolDelete, SIGNAL(clicked()), this, SLOT(slotDelete()));
-    connect(toolEdit,   SIGNAL(clicked()), this, SLOT(slotEdit()));
-    connect(toolCopy,   SIGNAL(clicked()), this, SLOT(slotCopy()));
-    connect(toolMove,   SIGNAL(clicked()), this, SLOT(slotMove()));
-    connect(toolProj,   SIGNAL(clicked()), this, SLOT(slotProj()));
-    connect(toolBubble, SIGNAL(clicked()), this, SLOT(slotBubble()));
+    connect(toolDelete, &QToolButton::clicked, this, &CScrOptWpt::hide);
+    connect(toolEdit,   &QToolButton::clicked, this, &CScrOptWpt::hide);
+    connect(toolCopy,   &QToolButton::clicked, this, &CScrOptWpt::hide);
+    connect(toolMove,   &QToolButton::clicked, this, &CScrOptWpt::hide);
+    connect(toolProj,   &QToolButton::clicked, this, &CScrOptWpt::hide);
+    connect(toolBubble, &QToolButton::clicked, this, &CScrOptWpt::hide);
+
+    connect(toolDelete, &QToolButton::clicked, this, &CScrOptWpt::slotDelete);
+    connect(toolEdit,   &QToolButton::clicked, this, &CScrOptWpt::slotEdit);
+    connect(toolCopy,   &QToolButton::clicked, this, &CScrOptWpt::slotCopy);
+    connect(toolMove,   &QToolButton::clicked, this, &CScrOptWpt::slotMove);
+    connect(toolProj,   &QToolButton::clicked, this, &CScrOptWpt::slotProj);
+    connect(toolBubble, &QToolButton::clicked, this, &CScrOptWpt::slotBubble);
 
     adjustSize();
 }
@@ -108,7 +108,7 @@ void CScrOptWpt::slotBubble()
 void CScrOptWpt::draw(QPainter& p)
 {
     IGisItem * item = CGisWidget::self().getItemByKey(key);
-    if(item == 0)
+    if(nullptr == item)
     {
         deleteLater();
         return;
diff --git a/src/gis/wpt/CScrOptWpt.h b/src/gis/wpt/CScrOptWpt.h
index 3e6ed12..34de118 100644
--- a/src/gis/wpt/CScrOptWpt.h
+++ b/src/gis/wpt/CScrOptWpt.h
@@ -35,7 +35,7 @@ public:
     CScrOptWpt(CGisItemWpt * wpt, const QPoint &point, IMouse *parent);
     virtual ~CScrOptWpt();
 
-    void draw(QPainter& p);
+    void draw(QPainter& p) override;
 
 private slots:
     void slotDelete();
diff --git a/src/gis/wpt/CSetupNewWpt.cpp b/src/gis/wpt/CSetupNewWpt.cpp
index 089987e..47cebd6 100644
--- a/src/gis/wpt/CSetupNewWpt.cpp
+++ b/src/gis/wpt/CSetupNewWpt.cpp
@@ -44,9 +44,9 @@ CSetupNewWpt::CSetupNewWpt(QPointF &pt, QString &icon, QString &name, QWidget *p
 
     lineName->setText(name);
 
-    connect(linePosition, SIGNAL(textEdited(QString)), this, SLOT(slotEditPosition(QString)));
-    connect(lineName,     SIGNAL(textEdited(QString)), this, SLOT(slotEditName(QString)));
-    connect(toolIcon,     SIGNAL(clicked()),           this, SLOT(slotChangeIcon()));
+    connect(linePosition, &QLineEdit::textEdited, this, &CSetupNewWpt::slotEditPosition);
+    connect(lineName,     &QLineEdit::textEdited, this, &CSetupNewWpt::slotEditName);
+    connect(toolIcon,     &QToolButton::clicked,  this, &CSetupNewWpt::slotChangeIcon);
 
     checkInput();
 }
diff --git a/src/gis/wpt/CSetupNewWpt.h b/src/gis/wpt/CSetupNewWpt.h
index 2ced1bd..488ca5e 100644
--- a/src/gis/wpt/CSetupNewWpt.h
+++ b/src/gis/wpt/CSetupNewWpt.h
@@ -31,8 +31,8 @@ public:
     virtual ~CSetupNewWpt();
 
 public slots:
-    void accept();
-    void reject();
+    void accept() override;
+    void reject() override;
 
 private slots:
     void slotEditPosition(const QString& str);
diff --git a/src/gis/wpt/IDetailsWpt.ui b/src/gis/wpt/IDetailsWpt.ui
index 6ac2b16..9174d9a 100644
--- a/src/gis/wpt/IDetailsWpt.ui
+++ b/src/gis/wpt/IDetailsWpt.ui
@@ -174,16 +174,79 @@
          <item row="0" column="1">
           <layout class="QHBoxLayout" name="horizontalLayout">
            <item>
-            <widget class="QLabel" name="labelName">
+            <widget class="CLineEdit" name="lineName">
+             <property name="palette">
+              <palette>
+               <active>
+                <colorrole role="Base">
+                 <brush brushstyle="SolidPattern">
+                  <color alpha="0">
+                   <red>0</red>
+                   <green>0</green>
+                   <blue>0</blue>
+                  </color>
+                 </brush>
+                </colorrole>
+                <colorrole role="Window">
+                 <brush brushstyle="SolidPattern">
+                  <color alpha="0">
+                   <red>0</red>
+                   <green>0</green>
+                   <blue>0</blue>
+                  </color>
+                 </brush>
+                </colorrole>
+               </active>
+               <inactive>
+                <colorrole role="Base">
+                 <brush brushstyle="SolidPattern">
+                  <color alpha="0">
+                   <red>0</red>
+                   <green>0</green>
+                   <blue>0</blue>
+                  </color>
+                 </brush>
+                </colorrole>
+                <colorrole role="Window">
+                 <brush brushstyle="SolidPattern">
+                  <color alpha="0">
+                   <red>0</red>
+                   <green>0</green>
+                   <blue>0</blue>
+                  </color>
+                 </brush>
+                </colorrole>
+               </inactive>
+               <disabled>
+                <colorrole role="Base">
+                 <brush brushstyle="SolidPattern">
+                  <color alpha="0">
+                   <red>0</red>
+                   <green>0</green>
+                   <blue>0</blue>
+                  </color>
+                 </brush>
+                </colorrole>
+                <colorrole role="Window">
+                 <brush brushstyle="SolidPattern">
+                  <color alpha="0">
+                   <red>0</red>
+                   <green>0</green>
+                   <blue>0</blue>
+                  </color>
+                 </brush>
+                </colorrole>
+               </disabled>
+              </palette>
+             </property>
              <property name="font">
               <font>
-               <pointsize>15</pointsize>
                <weight>75</weight>
                <bold>true</bold>
               </font>
              </property>
-             <property name="text">
-              <string>-</string>
+             <property name="frame">
+              <bool>false</bool>
              </property>
             </widget>
            </item>
@@ -381,6 +444,11 @@
    <header>widgets/CHistoryListWidget.h</header>
   </customwidget>
   <customwidget>
+   <class>CLineEdit</class>
+   <extends>QLineEdit</extends>
+   <header>widgets/CLineEdit.h</header>
+  </customwidget>
+  <customwidget>
    <class>CPhotoAlbum</class>
    <extends>QWidget</extends>
    <header>widgets/CPhotoAlbum.h</header>
diff --git a/src/grid/CGridSetup.cpp b/src/grid/CGridSetup.cpp
index f7786af..199696c 100644
--- a/src/grid/CGridSetup.cpp
+++ b/src/grid/CGridSetup.cpp
@@ -38,10 +38,10 @@ CGridSetup::CGridSetup(CGrid *grid, CMapDraw * map)
     palette.setColor(labelGridColor->foregroundRole(), grid->color);
     labelGridColor->setPalette(palette);
 
-    connect(toolRestoreDefault, SIGNAL(clicked()), this, SLOT(slotRestoreDefault()));
-    connect(toolFromMap, SIGNAL(clicked()), this, SLOT(slotProjFromMap()));
-    connect(toolProjWizzard, SIGNAL(clicked()), this, SLOT(slotProjWizard()));
-    connect(toolGridColor,SIGNAL(clicked()),this,SLOT(slotSelectGridColor()));
+    connect(toolRestoreDefault, &QToolButton::clicked, this, &CGridSetup::slotRestoreDefault);
+    connect(toolFromMap,        &QToolButton::clicked, this, &CGridSetup::slotProjFromMap);
+    connect(toolProjWizzard,    &QToolButton::clicked, this, &CGridSetup::slotProjWizard);
+    connect(toolGridColor,      &QToolButton::clicked, this, &CGridSetup::slotSelectGridColor);
 }
 
 CGridSetup::~CGridSetup()
diff --git a/src/grid/CGridSetup.h b/src/grid/CGridSetup.h
index 030844d..9b8516e 100644
--- a/src/grid/CGridSetup.h
+++ b/src/grid/CGridSetup.h
@@ -33,7 +33,7 @@ public:
     virtual ~CGridSetup();
 
 public slots:
-    void accept();
+    void accept() override;
 
 private slots:
     void slotProjWizard();
diff --git a/src/grid/CProjWizard.cpp b/src/grid/CProjWizard.cpp
index 7363c59..c311ef3 100644
--- a/src/grid/CProjWizard.cpp
+++ b/src/grid/CProjWizard.cpp
@@ -62,16 +62,17 @@ CProjWizard::CProjWizard(QLineEdit &line)
     comboHemisphere->addItem(tr("north"), "");
     comboHemisphere->addItem(tr("south"), "+south");
 
-    connect(radioMercator, SIGNAL(clicked()), this, SLOT(slotChange()));
-    connect(radioWorldMercator, SIGNAL(clicked()), this, SLOT(slotChange()));
-    connect(radioUPSNorth, SIGNAL(clicked()), this, SLOT(slotChange()));
-    connect(radioUPSSouth, SIGNAL(clicked()), this, SLOT(slotChange()));
-    connect(radioUTM, SIGNAL(clicked()), this, SLOT(slotChange()));
-    connect(radioUserDef, SIGNAL(clicked()), this, SLOT(slotChange()));
-    connect(comboDatum, SIGNAL(currentIndexChanged(int)), this, SLOT(slotChange()));
-    connect(comboHemisphere, SIGNAL(currentIndexChanged(int)), this, SLOT(slotChange()));
-    connect(lineUserDef, SIGNAL(textChanged(const QString &)), this, SLOT(slotChange()));
-    connect(spinUTMZone, SIGNAL(valueChanged(int)), this, SLOT(slotChange()));
+    connect(radioMercator,      &QRadioButton::clicked,  this, &CProjWizard::slotChange);
+    connect(radioWorldMercator, &QRadioButton::clicked,  this, &CProjWizard::slotChange);
+    connect(radioUPSNorth,      &QRadioButton::clicked,  this, &CProjWizard::slotChange);
+    connect(radioUPSSouth,      &QRadioButton::clicked,  this, &CProjWizard::slotChange);
+    connect(radioUTM,           &QRadioButton::clicked,  this, &CProjWizard::slotChange);
+    connect(radioUserDef,       &QRadioButton::clicked,  this, &CProjWizard::slotChange);
+    connect(lineUserDef,        &QLineEdit::textChanged, this, &CProjWizard::slotChange);
+
+    connect(spinUTMZone,        static_cast<void (QSpinBox::*)(int) >(&QSpinBox::valueChanged),         this, &CProjWizard::slotChange);
+    connect(comboDatum,         static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &CProjWizard::slotChange);
+    connect(comboHemisphere,    static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &CProjWizard::slotChange);
 
     QString projstr = line.text();
     QRegExp re2("\\s*\\+proj=merc \\+a=6378137 \\+b=6378137 \\+lat_ts=0.001 \\+lon_0=0.0 \\+x_0=0.0 \\+y_0=0 \\+k=1.0 \\+units=m \\+nadgrids=@null \\+no_defs");
@@ -119,7 +120,7 @@ void CProjWizard::findDatum(const QString& str)
     while(di->nMapInfoDatumID != -1)
     {
         cmp.clear();
-        if(di->pszOGCDatumName != QString(""))
+        if(di->pszOGCDatumName != QString())
         {
             const MapInfoSpheroidInfo * si = asSpheroidInfoList;
             while(si->nMapInfoId != -1)
@@ -180,7 +181,7 @@ void CProjWizard::slotChange()
 
     int idx = comboDatum->itemData(comboDatum->currentIndex()).toInt();
     const MapInfoDatumInfo di = asDatumInfoListQL[idx];
-    if(di.pszOGCDatumName != QString(""))
+    if(di.pszOGCDatumName != QString())
     {
         const MapInfoSpheroidInfo * si = asSpheroidInfoList;
         while(si->nMapInfoId != -1)
diff --git a/src/grid/CProjWizard.h b/src/grid/CProjWizard.h
index ea4fd11..accb568 100644
--- a/src/grid/CProjWizard.h
+++ b/src/grid/CProjWizard.h
@@ -31,7 +31,7 @@ public:
     static bool validProjStr(const QString projStr);
 
 public slots:
-    void accept();
+    void accept() override;
     void slotChange();
 
 private:
diff --git a/src/helpers/CAppSetup.cpp b/src/helpers/CAppSetup.cpp
index 637f0dd..2d8814a 100644
--- a/src/helpers/CAppSetup.cpp
+++ b/src/helpers/CAppSetup.cpp
@@ -31,11 +31,11 @@
 #define _MKSTR(x)      _MKSTR_1(x)
 #endif
 
-CAppSetup* instance;
+CAppSetup* instance = nullptr;
 
 CAppSetup* CAppSetup::getPlattformInstance()
 {
-    if(instance == 0)
+    if(nullptr == instance)
     {
 #ifdef Q_OS_MAC
         instance = new CAppSetupMac();
@@ -305,6 +305,7 @@ void CAppSetupWin::prepareGdal()
 
     qputenv("GDAL_DATA", gdalDir.toUtf8());
     qputenv("PROJ_LIB", projDir.toUtf8());
+    qunsetenv("GDAL_DRIVER_PATH");
 
     CAppSetup::prepareGdal();
 }
diff --git a/src/helpers/CAppSetup.h b/src/helpers/CAppSetup.h
index e5a0137..2753b48 100644
--- a/src/helpers/CAppSetup.h
+++ b/src/helpers/CAppSetup.h
@@ -51,12 +51,12 @@ protected:
 class CAppSetupMac : public CAppSetup
 {
 public:
-    virtual void prepareGdal();
-    virtual QString routinoPath(QString xmlFile);
-    virtual void prepareTranslators(QApplication* app);
+    void prepareGdal() override;
+    QString routinoPath(QString xmlFile) override;
+    void prepareTranslators(QApplication* app) override;
 
 protected:
-    virtual QString logFilename();
+    QString logFilename() override;
     QString getResourceDir(QString subdir);
     CAppSetupMac();
 
@@ -67,8 +67,8 @@ protected:
 class CAppSetupLinux : public CAppSetup
 {
 public:
-    virtual QString routinoPath(QString xmlFile);
-    virtual void prepareTranslators(QApplication* app);
+    QString routinoPath(QString xmlFile) override;
+    void prepareTranslators(QApplication* app) override;
 
 protected:
     CAppSetupLinux();
@@ -79,10 +79,10 @@ protected:
 class CAppSetupWin : public CAppSetup
 {
 public:
-    virtual QString routinoPath(QString xmlFile);
-    virtual void prepareGdal();
-    virtual void prepareTranslators(QApplication* app);
-    virtual void prepareConfig();
+    QString routinoPath(QString xmlFile)       override;
+    void prepareGdal()                         override;
+    void prepareTranslators(QApplication* app) override;
+    void prepareConfig()                       override;
 
 protected:
     CAppSetupWin();
diff --git a/src/helpers/CDraw.cpp b/src/helpers/CDraw.cpp
index d380b09..76989f2 100644
--- a/src/helpers/CDraw.cpp
+++ b/src/helpers/CDraw.cpp
@@ -32,9 +32,9 @@ QBrush CDraw::brushBackWhite(QColor(255,255,255,255));
 QBrush CDraw::brushBackYellow(QColor(0xff, 0xff, 0xcc, 0xE0));
 
 
-QImage CDraw::createBasicArrow(const QBrush &brush)
+QImage CDraw::createBasicArrow(const QBrush &brush, qreal scale)
 {
-    QImage arrow(21, 16, QImage::Format_ARGB32);
+    QImage arrow(21*scale, 16*scale, QImage::Format_ARGB32);
     arrow.fill(qRgba(0, 0, 0, 0));
 
     QPainter painter(&arrow);
@@ -46,10 +46,10 @@ QImage CDraw::createBasicArrow(const QBrush &brush)
 
     QPointF arrowPoints[4] =
     {
-        QPointF(20.0,  7.0), // front
-        QPointF( 0.0,  0.0), // upper tail
-        QPointF( 5.0,  7.0), // mid   tail
-        QPointF( 0.0, 15.0)  // lower tail
+        QPointF(20.0*scale,  7.0*scale), // front
+        QPointF( 0.0*scale,  0.0*scale), // upper tail
+        QPointF( 5.0*scale,  7.0*scale), // mid   tail
+        QPointF( 0.0*scale, 15.0*scale)  // lower tail
     };
     painter.drawPolygon(arrowPoints, 4);
     painter.end();
@@ -67,9 +67,11 @@ static inline int pointDistanceSquare(const QPointF &p1, const QPointF &p2)
     return (p2.x() - p1.x()) * (p2.x() - p1.x()) + (p2.y() - p1.y()) * (p2.y() - p1.y());
 }
 
-void CDraw::arrows(const QPolygonF &line, const QRectF &viewport, QPainter &p, int minPointDist, int minArrowDist)
+void CDraw::arrows(const QPolygonF &line, const QRectF &viewport, QPainter &p, int minPointDist, int minArrowDist, qreal scale)
 {
-    QImage arrow = createBasicArrow(p.brush());
+    QImage arrow = createBasicArrow(p.brush(), scale);
+    qreal xoff = qCeil(arrow.width()/2.0);
+    qreal yoff = qFloor((arrow.height()-1)/2.0);
 
     const qreal minArrowDistSquare = minArrowDist * minArrowDist;
     const qreal minPointDistSquare = minPointDist * minPointDist;
@@ -95,7 +97,7 @@ void CDraw::arrows(const QPolygonF &line, const QRectF &viewport, QPainter &p, i
                 p.translate(arrowPos);
                 qreal direction = ( qAtan2((pt.y() - prevPt.y()), (pt.x() - prevPt.x())) * 180.) / M_PI;
                 p.rotate(direction);
-                p.drawImage(-11, -7, arrow);
+                p.drawImage(-xoff, -yoff, arrow);
 
                 p.restore();
 
diff --git a/src/helpers/CDraw.h b/src/helpers/CDraw.h
index 9788e82..f8d9e63 100644
--- a/src/helpers/CDraw.h
+++ b/src/helpers/CDraw.h
@@ -59,7 +59,7 @@ public:
        @param minPointDist  The minimum distance of two points (in px)
        @param minArrowDist  The minimum distance of two consecutive arrows (in px)
      */
-    static void arrows(const QPolygonF &line, const QRectF &viewport, QPainter &p, int minPointDist, int minArrowDist);
+    static void arrows(const QPolygonF &line, const QRectF &viewport, QPainter &p, int minPointDist, int minArrowDist, qreal scale);
 
     static void text(const QString& str, QPainter &p, const QPoint &center, const QColor &color, const QFont &font = CMainWindow::self().getMapFont());
     static void text(const QString& str, QPainter &p, const QRect  &r,      const QColor &color);
@@ -85,7 +85,7 @@ private:
        @brief   Creates a new arrow using the brush specified
        @return  A QImage containing the arrow
      */
-    static QImage createBasicArrow(const QBrush &brush);
+    static QImage createBasicArrow(const QBrush &brush, qreal scale);
 };
 
 #endif // CPAINTER_H
diff --git a/src/helpers/CElevationDialog.cpp b/src/helpers/CElevationDialog.cpp
index a3d0305..37a2f12 100644
--- a/src/helpers/CElevationDialog.cpp
+++ b/src/helpers/CElevationDialog.cpp
@@ -32,8 +32,8 @@ CElevationDialog::CElevationDialog(QWidget * parent, QVariant &val, const QVaria
     setupUi(this);
 
     QPushButton * pushReset = buttonBox->addButton(QDialogButtonBox::Reset);
-    connect(pushReset, SIGNAL(clicked()), this, SLOT(slotReset()));
-    connect(toolGetEle, SIGNAL(clicked()), this, SLOT(slotGetEle()));
+    connect(pushReset,  &QPushButton::clicked, this, &CElevationDialog::slotReset);
+    connect(toolGetEle, &QToolButton::clicked, this, &CElevationDialog::slotGetEle);
 
     QString str, unit;
     IUnit::self().meter2elevation(100, str, unit);
@@ -71,7 +71,7 @@ void CElevationDialog::slotReset()
 
 void CElevationDialog::slotGetEle()
 {
-    QVariant ele = CMainWindow::self().getEelevationAt(pos * DEG_TO_RAD);
+    QVariant ele = CMainWindow::self().getElevationAt(pos * DEG_TO_RAD);
     if(ele != NOFLOAT)
     {
         QString str, unit;
diff --git a/src/helpers/CElevationDialog.h b/src/helpers/CElevationDialog.h
index eec3421..f7efaee 100644
--- a/src/helpers/CElevationDialog.h
+++ b/src/helpers/CElevationDialog.h
@@ -30,7 +30,7 @@ public:
     virtual ~CElevationDialog();
 
 public slots:
-    void accept();
+    void accept() override;
 
 private slots:
     void slotReset();
diff --git a/src/helpers/CFileExt.h b/src/helpers/CFileExt.h
index 0a147ca..9afc8b5 100644
--- a/src/helpers/CFileExt.h
+++ b/src/helpers/CFileExt.h
@@ -27,7 +27,7 @@ class CFileExt : public QFile
 public:
     CFileExt(const QString &filename)
         : QFile(filename)
-        , mapped(NULL)
+        , mapped(nullptr)
     {
         cnt++;
     }
diff --git a/src/helpers/CInputDialog.cpp b/src/helpers/CInputDialog.cpp
index 8aaca45..3d75f6b 100644
--- a/src/helpers/CInputDialog.cpp
+++ b/src/helpers/CInputDialog.cpp
@@ -27,7 +27,7 @@ CInputDialog::CInputDialog(QWidget *parent, const QString& text, QVariant& val,
 {
     setupUi(this);
     QPushButton * pushReset = buttonBox->addButton(QDialogButtonBox::Reset);
-    connect(pushReset, SIGNAL(clicked()), this, SLOT(slotReset()));
+    connect(pushReset, &QPushButton::clicked, this, &CInputDialog::slotReset);
 
     label->setText(text);
     if(val != reset)
diff --git a/src/helpers/CInputDialog.h b/src/helpers/CInputDialog.h
index 1b80d76..5cefef4 100644
--- a/src/helpers/CInputDialog.h
+++ b/src/helpers/CInputDialog.h
@@ -30,7 +30,7 @@ public:
     virtual ~CInputDialog();
 
 public slots:
-    void accept();
+    void accept() override;
 
 private slots:
     void slotReset();
diff --git a/src/helpers/CLimit.cpp b/src/helpers/CLimit.cpp
new file mode 100644
index 0000000..c85e16b
--- /dev/null
+++ b/src/helpers/CLimit.cpp
@@ -0,0 +1,205 @@
+/**********************************************************************************************
+    Copyright (C) 2014-2016 Oliver Eichler oliver.eichler at gmx.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "helpers/CLimit.h"
+#include "helpers/CSettings.h"
+
+
+QSet<CLimit*> CLimit::allLimits;
+
+CLimit::CLimit(const QString &cfgPath, fGetLimit getMin, fGetLimit getMax, fGetLimit getMinAuto, fGetLimit getMaxAuto, fGetUnit getUnit, fMarkChanged markChanged)
+    : cfgPath(cfgPath)
+    , funcGetMin(getMin)
+    , funcGetMax(getMax)
+    , funcGetMinAuto(getMinAuto)
+    , funcGetMaxAuto(getMaxAuto)
+    , funcGetUnit(getUnit)
+    , funcMarkChanged(markChanged)
+{
+    allLimits << this;
+}
+
+CLimit::~CLimit()
+{
+    allLimits.remove(this);
+}
+
+void CLimit::setMode(mode_e m)
+{
+    bool markAsChanged = mode != m;
+
+    mode = m;
+
+    if(markAsChanged)
+    {
+        funcMarkChanged();
+    }
+
+    emit sigChanged();
+}
+
+void CLimit::setSource(const QString& src)
+{
+    bool isInitial = source.isEmpty();
+    if(source != src)
+    {
+        source  = src;
+        minUser = funcGetMin(source);
+        maxUser = funcGetMax(source);
+        if(!isInitial)
+        {
+            funcMarkChanged();
+        }
+    }
+}
+
+qreal CLimit::getMin() const
+{
+    SETTINGS;
+    qreal val = NOFLOAT;
+
+    switch(mode)
+    {
+    case eModeUser:
+        val = minUser;
+        break;
+
+    case eModeAuto:
+        val = funcGetMinAuto(source);
+        break;
+
+    case eModeSys:
+        cfg.beginGroup(cfgPath);
+        val = cfg.value(source + "/min", funcGetMin(source)).toReal();
+        cfg.endGroup();
+        break;
+    }
+
+    return val;
+}
+
+qreal CLimit::getMax() const
+{
+    SETTINGS;
+    qreal val = NOFLOAT;
+
+    switch(mode)
+    {
+    case eModeUser:
+        val = maxUser;
+        break;
+
+    case eModeAuto:
+        val = funcGetMaxAuto(source);
+        break;
+
+    case eModeSys:
+        cfg.beginGroup(cfgPath);
+        val = cfg.value(source + "/max", funcGetMax(source)).toReal();
+        cfg.endGroup();
+        break;
+    }
+
+    return val;
+}
+
+void CLimit::setMin(const qreal &val)
+{
+    SETTINGS;
+
+    switch(mode)
+    {
+    case eModeUser:
+    {
+        bool markAsChanged = (minUser != NOFLOAT) && (minUser != val);
+        minUser = val;
+        if(markAsChanged)
+        {
+            funcMarkChanged();
+        }
+        break;
+    }
+
+    case eModeSys:
+    {
+        cfg.beginGroup(cfgPath);
+        cfg.setValue(source + "/min", val);
+        cfg.endGroup();
+
+        updateSys();
+        break;
+    }
+    }
+
+    emit sigChanged();
+}
+
+void CLimit::setMax(const qreal &val)
+{
+    SETTINGS;
+
+    switch(mode)
+    {
+    case eModeUser:
+    {
+        bool markAsChanged = (maxUser == NOFLOAT) && (maxUser != val);
+        maxUser = val;
+        if(markAsChanged)
+        {
+            funcMarkChanged();
+        }
+        break;
+    }
+
+    case eModeSys:
+    {
+        cfg.beginGroup(cfgPath);
+        cfg.setValue(source + "/max", val);
+        cfg.endGroup();
+
+        updateSys();
+        break;
+    }
+    }
+
+    emit sigChanged();
+}
+
+QString CLimit::getUnit() const
+{
+    return funcGetUnit(source);
+}
+
+void CLimit::updateSys()
+{
+    foreach(CLimit * limit, allLimits)
+    {
+        if(limit != this)
+        {
+            limit->updateSys(source);
+        }
+    }
+}
+
+void CLimit::updateSys(const QString& src)
+{
+    if((mode == eModeSys) && (source == src))
+    {
+        emit sigChanged();
+    }
+}
diff --git a/src/helpers/CLimit.h b/src/helpers/CLimit.h
new file mode 100644
index 0000000..ab485cc
--- /dev/null
+++ b/src/helpers/CLimit.h
@@ -0,0 +1,98 @@
+/**********************************************************************************************
+    Copyright (C) 2014-2016 Oliver Eichler oliver.eichler at gmx.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CLIMIT_H
+#define CLIMIT_H
+
+#include <QObject>
+#include <QSet>
+#include <QString>
+#include <QVariant>
+#include <functional>
+
+#include "units/IUnit.h"
+
+using fGetLimit    = std::function<qreal(const QString&)>;
+using fGetUnit     = std::function<QString(const QString&)>;
+using fMarkChanged = std::function<void(void)>;
+
+class CLimit : public QObject
+{
+    Q_OBJECT
+public:
+    CLimit(const QString& cfgPath, fGetLimit getMin, fGetLimit getMax, fGetLimit getMinAuto, fGetLimit getMaxAuto, fGetUnit getUnit, fMarkChanged markChanged);
+    virtual ~CLimit();
+
+    enum mode_e
+    {
+        eModeSys
+        , eModeUser
+        , eModeAuto
+    };
+
+    void setMode(mode_e m);
+    void setSource(const QString& src);
+
+    const QString& getSource() const
+    {
+        return source;
+    }
+
+    mode_e getMode() const
+    {
+        return mode;
+    }
+
+    qreal getMin() const;
+    qreal getMax() const;
+    QString getUnit() const;
+
+
+public slots:
+    void setMin(const qreal& val);
+    void setMax(const qreal& val);
+
+signals:
+    void sigChanged();
+
+private:
+    friend class CGisItemTrk;
+    friend QDataStream& operator<<(QDataStream& stream, const CLimit& l);
+    friend QDataStream& operator>>(QDataStream& stream, CLimit& l);
+    void updateSys();
+    void updateSys(const QString& src);
+
+    mode_e mode = eModeAuto;
+    QString cfgPath;
+    qreal minUser = NOFLOAT;
+    qreal maxUser = NOFLOAT;
+
+    fGetLimit funcGetMin;
+    fGetLimit funcGetMax;
+    fGetLimit funcGetMinAuto;
+    fGetLimit funcGetMaxAuto;
+    fGetUnit funcGetUnit;
+    fMarkChanged funcMarkChanged;
+
+    QString source;
+
+    static QSet<CLimit*> allLimits;
+};
+
+#endif //CLIMIT_H
+
diff --git a/src/helpers/CLinksDialog.cpp b/src/helpers/CLinksDialog.cpp
index 6856553..10324d4 100644
--- a/src/helpers/CLinksDialog.cpp
+++ b/src/helpers/CLinksDialog.cpp
@@ -26,9 +26,9 @@ CLinksDialog::CLinksDialog(QList<IGisItem::link_t> &links, QWidget *parent)
 {
     setupUi(this);
 
-    connect(toolAdd, SIGNAL(clicked()), this, SLOT(slotAddLink()));
-    connect(toolDelete, SIGNAL(clicked()), this, SLOT(slotDelLink()));
-    connect(treeWidget, SIGNAL(itemSelectionChanged()), this, SLOT(slotItemSelectionChanged()));
+    connect(toolAdd,    &QToolButton::clicked,              this, &CLinksDialog::slotAddLink);
+    connect(toolDelete, &QToolButton::clicked,              this, &CLinksDialog::slotDelLink);
+    connect(treeWidget, &QTreeWidget::itemSelectionChanged, this, &CLinksDialog::slotItemSelectionChanged);
 
     foreach(const IGisItem::link_t& link, links)
     {
diff --git a/src/helpers/CLinksDialog.h b/src/helpers/CLinksDialog.h
index 51d20a6..b276d62 100644
--- a/src/helpers/CLinksDialog.h
+++ b/src/helpers/CLinksDialog.h
@@ -31,7 +31,7 @@ public:
     virtual ~CLinksDialog();
 
 public slots:
-    void accept();
+    void accept() override;
 
 private slots:
     void slotAddLink();
diff --git a/src/helpers/CPhotoViewer.h b/src/helpers/CPhotoViewer.h
index c5b1b90..7272b9b 100644
--- a/src/helpers/CPhotoViewer.h
+++ b/src/helpers/CPhotoViewer.h
@@ -31,10 +31,10 @@ public:
     virtual ~CPhotoViewer();
 
 protected:
-    void paintEvent(QPaintEvent * e);
-    void resizeEvent(QResizeEvent * e);
-    void mousePressEvent(QMouseEvent * e);
-    void keyPressEvent(QKeyEvent *e);
+    void paintEvent(QPaintEvent  *e) override;
+    void resizeEvent(QResizeEvent *e) override;
+    void mousePressEvent(QMouseEvent  *e) override;
+    void keyPressEvent(QKeyEvent    *e) override;
 
 private:
     void tryIdxStep(int delta);
diff --git a/src/helpers/CPositionDialog.cpp b/src/helpers/CPositionDialog.cpp
index b3b5a81..bdad6c9 100644
--- a/src/helpers/CPositionDialog.cpp
+++ b/src/helpers/CPositionDialog.cpp
@@ -33,7 +33,7 @@ CPositionDialog::CPositionDialog(QWidget * parent, QPointF &pos)
 
     labelWarning->hide();
 
-    connect(lineEdit, SIGNAL(textEdited(QString)), this, SLOT(slotEdit(QString)));
+    connect(lineEdit, &QLineEdit::textEdited, this, &CPositionDialog::slotEdit);
 }
 
 CPositionDialog::~CPositionDialog()
diff --git a/src/helpers/CPositionDialog.h b/src/helpers/CPositionDialog.h
index 827b8af..c4b99fe 100644
--- a/src/helpers/CPositionDialog.h
+++ b/src/helpers/CPositionDialog.h
@@ -34,7 +34,7 @@ public:
     static bool getPosition(QPointF& pt, const QString &str);
 
 public slots:
-    void accept();
+    void accept() override;
 
 private slots:
     void slotEdit(const QString& str);
diff --git a/src/helpers/CProgressDialog.cpp b/src/helpers/CProgressDialog.cpp
index 03120a7..4cc2b20 100644
--- a/src/helpers/CProgressDialog.cpp
+++ b/src/helpers/CProgressDialog.cpp
@@ -52,7 +52,7 @@ CProgressDialog * CProgressDialog::self()
 {
     if(stackSelf.isEmpty())
     {
-        return 0;
+        return nullptr;
     }
     return stackSelf.top();
 }
@@ -62,6 +62,11 @@ CProgressDialog::~CProgressDialog()
     stackSelf.pop();
 }
 
+void CProgressDialog::enableCancel(bool yes)
+{
+    buttonBox->setEnabled(yes);
+}
+
 void CProgressDialog::reject()
 {
     setResult(QMessageBox::Abort);
@@ -69,7 +74,10 @@ void CProgressDialog::reject()
 
 void CProgressDialog::setValue(int val)
 {
-    QApplication::processEvents();
+    if(time.elapsed() > 1000)
+    {
+        QApplication::processEvents();
+    }
     progressBar->setValue(val);
     labelTime->setText(tr("Elapsed time: %1 seconds.").arg(time.elapsed()/1000.0, 0,'f',1));
 }
diff --git a/src/helpers/CProgressDialog.h b/src/helpers/CProgressDialog.h
index 9bff710..2493ed9 100644
--- a/src/helpers/CProgressDialog.h
+++ b/src/helpers/CProgressDialog.h
@@ -46,8 +46,10 @@ public:
 
     bool wasCanceled();
 
+    void enableCancel(bool yes);
+
 public slots:
-    void reject();
+    void reject() override;
 
 private:
     QTime time;
diff --git a/src/helpers/CSelectCopyAction.cpp b/src/helpers/CSelectCopyAction.cpp
index ff382f1..de99968 100644
--- a/src/helpers/CSelectCopyAction.cpp
+++ b/src/helpers/CSelectCopyAction.cpp
@@ -35,9 +35,9 @@ CSelectCopyAction::CSelectCopyAction(const IGisItem *src, const IGisItem *tar, Q
 
     adjustSize();
 
-    connect(pushCopy, SIGNAL(clicked()), this, SLOT(slotSelectResult()));
-    connect(pushSkip, SIGNAL(clicked()), this, SLOT(slotSelectResult()));
-    connect(pushClone, SIGNAL(clicked()), this, SLOT(slotSelectResult()));
+    connect(pushCopy,  &QPushButton::clicked, this, &CSelectCopyAction::slotSelectResult);
+    connect(pushSkip,  &QPushButton::clicked, this, &CSelectCopyAction::slotSelectResult);
+    connect(pushClone, &QPushButton::clicked, this, &CSelectCopyAction::slotSelectResult);
 
     CCanvas::setOverrideCursor(Qt::ArrowCursor, "CSelectCopyAction");
 }
@@ -57,8 +57,8 @@ CSelectCopyAction::CSelectCopyAction(const IGisProject * src, const IGisProject
 
     adjustSize();
 
-    connect(pushCopy, SIGNAL(clicked()), this, SLOT(slotSelectResult()));
-    connect(pushSkip, SIGNAL(clicked()), this, SLOT(slotSelectResult()));
+    connect(pushCopy, &QPushButton::clicked, this, &CSelectCopyAction::slotSelectResult);
+    connect(pushSkip, &QPushButton::clicked, this, &CSelectCopyAction::slotSelectResult);
 
     CCanvas::setOverrideCursor(Qt::ArrowCursor, "CSelectCopyAction");
 }
diff --git a/src/helpers/CSelectProjectDialog.cpp b/src/helpers/CSelectProjectDialog.cpp
index 08a6fa3..85ee2d5 100644
--- a/src/helpers/CSelectProjectDialog.cpp
+++ b/src/helpers/CSelectProjectDialog.cpp
@@ -36,14 +36,14 @@ CSelectProjectDialog::CSelectProjectDialog(QString &key, QString &name, type_e&
 {
     setupUi(this);
 
-    QListWidgetItem * lastSelectedItem = 0;
+    QListWidgetItem *lastSelectedItem = nullptr;
 
     if(parent)
     {
         for(int i = 0; i < parent->topLevelItemCount(); i++)
         {
             IGisProject * project = dynamic_cast<IGisProject*>(parent->topLevelItem(i));
-            if(project == 0)
+            if(nullptr == project)
             {
                 continue;
             }
@@ -67,7 +67,7 @@ CSelectProjectDialog::CSelectProjectDialog(QString &key, QString &name, type_e&
 
     frameType->setEnabled(listWidget->count() == 0);
 
-    if(lastSelectedItem == 0)
+    if(nullptr == lastSelectedItem)
     {
         SETTINGS;
         QString filter = cfg.value("Paths/lastGisFilter", "GPS Exchange Format (*.qms)").toString();
@@ -93,13 +93,13 @@ CSelectProjectDialog::CSelectProjectDialog(QString &key, QString &name, type_e&
         buttonBox->button(QDialogButtonBox::Ok)->setEnabled(true);
     }
 
-    connect(listWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(slotItemClicked(QListWidgetItem*)));
-    connect(listWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(slotItemDoubleClicked(QListWidgetItem*)));
-    connect(lineEdit, SIGNAL(textChanged(QString)), this, SLOT(slotProjectChanged(QString)));
-    connect(lineEdit, SIGNAL(textEdited(QString)), this, SLOT(slotProjectEdited(QString)));
-    connect(radioQms, SIGNAL(clicked()), this, SLOT(slotTypeChanged()));
-    connect(radioGpx, SIGNAL(clicked()), this, SLOT(slotTypeChanged()));
-    connect(radioDatabase, SIGNAL(toggled(bool)), this, SLOT(slotTypeChanged()));
+    connect(listWidget,    &QListWidget::itemClicked,       this, &CSelectProjectDialog::slotItemClicked);
+    connect(listWidget,    &QListWidget::itemDoubleClicked, this, &CSelectProjectDialog::slotItemDoubleClicked);
+    connect(lineEdit,      &QLineEdit::textChanged,         this, &CSelectProjectDialog::slotProjectChanged);
+    connect(lineEdit,      &QLineEdit::textEdited,          this, &CSelectProjectDialog::slotProjectEdited);
+    connect(radioQms,      &QRadioButton::clicked,          this, &CSelectProjectDialog::slotTypeChanged);
+    connect(radioGpx,      &QRadioButton::clicked,          this, &CSelectProjectDialog::slotTypeChanged);
+    connect(radioDatabase, &QRadioButton::toggled,          this, &CSelectProjectDialog::slotTypeChanged);
 
     adjustSize();
 
diff --git a/src/helpers/CSelectProjectDialog.h b/src/helpers/CSelectProjectDialog.h
index b88bab4..5148662 100644
--- a/src/helpers/CSelectProjectDialog.h
+++ b/src/helpers/CSelectProjectDialog.h
@@ -40,8 +40,8 @@ public:
     virtual ~CSelectProjectDialog();
 
 public slots:
-    void accept();
-    void reject();
+    void accept() override;
+    void reject() override;
 
 private slots:
     void slotItemClicked(QListWidgetItem * item);
diff --git a/src/helpers/CValue.cpp b/src/helpers/CValue.cpp
new file mode 100644
index 0000000..4cdead2
--- /dev/null
+++ b/src/helpers/CValue.cpp
@@ -0,0 +1,114 @@
+/**********************************************************************************************
+    Copyright (C) 2014-2016 Oliver Eichler oliver.eichler at gmx.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "helpers/CSettings.h"
+#include "helpers/CValue.h"
+
+QSet<CValue*> CValue::allValues;
+
+CValue::CValue(const QString& cfgTag, const QVariant &initDefault, fMarkChanged markChanged, fValueOnChange onChange)
+    : cfgTag(cfgTag)
+    , initDefault(initDefault)
+    , valUser(initDefault)
+    , funcOnChange(onChange)
+    , funcMarkChanged(markChanged)
+{
+    if(onChange != nullptr)
+    {
+        onChange(val());
+    }
+
+    allValues << this;
+}
+
+CValue::~CValue()
+{
+    allValues.remove(this);
+}
+
+void CValue::setMode(mode_e m)
+{
+    bool markAsChanged = mode != m;
+
+    mode = m;
+
+    if(funcOnChange != nullptr)
+    {
+        funcOnChange(val());
+    }
+
+    if(markAsChanged)
+    {
+        funcMarkChanged();
+    }
+}
+
+QVariant CValue::val() const
+{
+    if(mode == eModeUser)
+    {
+        return valUser;
+    }
+
+    SETTINGS;
+    return cfg.value(cfgTag, initDefault);
+}
+
+const QVariant& CValue::operator=(const QVariant& v)
+{
+    bool markAsChanged = false;
+
+    if(mode == eModeUser)
+    {
+        markAsChanged = valUser != v;
+        valUser = v;
+    }
+    else
+    {
+        SETTINGS;
+        cfg.setValue(cfgTag, v);
+
+        foreach(CValue * value, allValues)
+        {
+            if(value != this)
+            {
+                value->updateSys(cfgTag, v);
+            }
+        }
+    }
+
+    if(funcOnChange != nullptr)
+    {
+        funcOnChange(v);
+    }
+
+    if(markAsChanged)
+    {
+        funcMarkChanged();
+    }
+    return v;
+}
+
+
+void CValue::updateSys(const QString& tag, const QVariant &val)
+{
+    if((mode == eModeSys) && (tag == cfgTag) && (funcOnChange != nullptr))
+    {
+        funcOnChange(val);
+    }
+}
diff --git a/src/helpers/CValue.h b/src/helpers/CValue.h
new file mode 100644
index 0000000..261582c
--- /dev/null
+++ b/src/helpers/CValue.h
@@ -0,0 +1,69 @@
+/**********************************************************************************************
+    Copyright (C) 2014-2016 Oliver Eichler oliver.eichler at gmx.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CVALUE_H
+#define CVALUE_H
+
+#include <QSet>
+#include <QVariant>
+#include <functional>
+
+using fValueOnChange = std::function<void(const QVariant&)>;
+using fMarkChanged   = std::function<void(void)>;
+
+class CValue
+{
+public:
+    CValue(const QString& cfgTag, const QVariant& initDefault, fMarkChanged markChanged, fValueOnChange onChange = nullptr);
+    virtual ~CValue();
+
+    enum mode_e
+    {
+        eModeSys
+        , eModeUser
+    };
+
+    void setMode(mode_e m);
+    mode_e getMode() const
+    {
+        return mode;
+    }
+
+    QVariant val() const;
+
+    const QVariant& operator=(const QVariant& v);
+
+private:
+    friend QDataStream& operator<<(QDataStream& stream, const CValue& v);
+    friend QDataStream& operator>>(QDataStream& stream, CValue& v);
+
+    void updateSys(const QString &tag, const QVariant& val);
+
+    mode_e mode = eModeSys;
+    QString cfgTag;
+    QVariant initDefault;
+    QVariant valUser;
+
+    fValueOnChange funcOnChange;
+    fMarkChanged funcMarkChanged;
+
+    static QSet<CValue*> allValues;
+};
+
+#endif //CVALUE_H
+
diff --git a/src/helpers/CWptIconDialog.cpp b/src/helpers/CWptIconDialog.cpp
index 039d3f9..531557a 100644
--- a/src/helpers/CWptIconDialog.cpp
+++ b/src/helpers/CWptIconDialog.cpp
@@ -16,7 +16,10 @@
 
 **********************************************************************************************/
 
+#include "CMainWindow.h"
 #include "gis/WptIcons.h"
+#include "helpers/CAppSetup.h"
+#include "helpers/CSettings.h"
 #include "helpers/CWptIconDialog.h"
 
 #include <QtWidgets>
@@ -60,25 +63,44 @@ static bool keyLessThanAlpha(const QString&  s1, const QString&  s2)
 
 
 CWptIconDialog::CWptIconDialog(QAction *parent)
-    : button(0)
+    : QDialog(CMainWindow::self().getBestWidgetForParent())
     , action(parent)
 {
     setupUi(this);
     setupList(action);
+    setupSignals();
 }
 
 CWptIconDialog::CWptIconDialog(QToolButton *parent)
-    : button(parent)
-    , action(0)
+    : QDialog(CMainWindow::self().getBestWidgetForParent())
+    , button(parent)
 {
     setupUi(this);
     setupList(button);
+    setupSignals();
+}
+
+CWptIconDialog::CWptIconDialog(CMainWindow * parent)
+    : QDialog(parent)
+{
+    setupUi(this);
+    setupList(nullptr);
+    setupSignals();
+}
+
+void CWptIconDialog::setupSignals()
+{
+    connect(listWidget, &QListWidget::itemClicked,   this, &CWptIconDialog::slotItemClicked);
+    connect(listWidget, &QListWidget::itemActivated, this, &CWptIconDialog::slotItemClicked);
+    connect(toolPath,   &QToolButton::clicked,       this, &CWptIconDialog::slotSetupPath);
 }
 
 void CWptIconDialog::setupList(QObject * obj)
 {
-    QString currentIcon = obj->objectName();
-    QListWidgetItem * currentItem = 0;
+    listWidget->clear();
+
+    QString currentIcon = obj == nullptr ? QString() : obj->objectName();
+    QListWidgetItem * currentItem = nullptr;
 
     const QMap<QString, icon_t>& wptIcons = getWptIcons();
     QStringList keys = wptIcons.keys();
@@ -104,8 +126,12 @@ void CWptIconDialog::setupList(QObject * obj)
         listWidget->scrollToItem(currentItem);
     }
 
-    connect(listWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(slotItemClicked(QListWidgetItem*)));
-    connect(listWidget, SIGNAL(itemActivated(QListWidgetItem*)), this, SLOT(slotItemClicked(QListWidgetItem*)));
+    SETTINGS;
+    QString path = cfg.value("Paths/externalWptIcons",CAppSetup::getPlattformInstance()->configDir("WaypointIcons").absolutePath()).toString();
+    labelIconPath->setProperty("path", path);
+    labelIconPath->setText(path.size() > 25 ? "..." + path.right(22) : path);
+
+    adjustSize();
 }
 
 CWptIconDialog::~CWptIconDialog()
@@ -128,3 +154,18 @@ void CWptIconDialog::slotItemClicked(QListWidgetItem * item)
     }
     accept();
 }
+
+void CWptIconDialog::slotSetupPath()
+{
+    QString path = labelIconPath->property("path").toString();
+    path = QFileDialog::getExistingDirectory(this, tr("Path to user icons..."), path);
+    if(path.isEmpty())
+    {
+        return;
+    }
+
+    SETTINGS;
+    cfg.setValue("Paths/externalWptIcons", path);
+    initWptIcons();
+    setupList(button == nullptr ? dynamic_cast<QObject*>(action) : dynamic_cast<QObject*>(button));
+}
diff --git a/src/helpers/CWptIconDialog.h b/src/helpers/CWptIconDialog.h
index 7741313..d7484ab 100644
--- a/src/helpers/CWptIconDialog.h
+++ b/src/helpers/CWptIconDialog.h
@@ -25,6 +25,7 @@
 class QToolButton;
 class QAction;
 class QListWidgetItem;
+class CMainWindow;
 
 class CWptIconDialog : public QDialog, private Ui::IWptIconDialog
 {
@@ -32,16 +33,19 @@ class CWptIconDialog : public QDialog, private Ui::IWptIconDialog
 public:
     CWptIconDialog(QToolButton * parent);
     CWptIconDialog(QAction * parent);
+    CWptIconDialog(CMainWindow * parent);
     virtual ~CWptIconDialog();
 
 private slots:
     void slotItemClicked(QListWidgetItem * item);
+    void slotSetupPath();
 
 private:
     void setupList(QObject *obj);
+    void setupSignals();
 
-    QToolButton * button;
-    QAction     * action;
+    QToolButton * button = nullptr;
+    QAction     * action = nullptr;
 };
 
 #endif //CWPTICONDIALOG_H
diff --git a/src/helpers/ISelectCopyAction.ui b/src/helpers/ISelectCopyAction.ui
index 57d43d2..d401bb0 100644
--- a/src/helpers/ISelectCopyAction.ui
+++ b/src/helpers/ISelectCopyAction.ui
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>471</width>
-    <height>300</height>
+    <height>251</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -15,10 +15,16 @@
   </property>
   <layout class="QFormLayout" name="formLayout">
    <property name="fieldGrowthPolicy">
-    <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
+    <enum>QFormLayout::ExpandingFieldsGrow</enum>
    </property>
    <item row="0" column="1">
     <widget class="QPushButton" name="pushCopy">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
      <property name="text">
       <string>Replace existing item</string>
      </property>
@@ -56,6 +62,12 @@
    </item>
    <item row="4" column="1">
     <widget class="QPushButton" name="pushSkip">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
      <property name="text">
       <string>Do not copy item</string>
      </property>
@@ -93,6 +105,12 @@
    </item>
    <item row="8" column="1">
     <widget class="QPushButton" name="pushClone">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
      <property name="text">
       <string>Create a clone</string>
      </property>
diff --git a/src/helpers/IWptIconDialog.ui b/src/helpers/IWptIconDialog.ui
index fdbe0fe..8269468 100644
--- a/src/helpers/IWptIconDialog.ui
+++ b/src/helpers/IWptIconDialog.ui
@@ -14,6 +14,21 @@
    <string>Icons...</string>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
+   <property name="spacing">
+    <number>3</number>
+   </property>
+   <property name="leftMargin">
+    <number>3</number>
+   </property>
+   <property name="topMargin">
+    <number>3</number>
+   </property>
+   <property name="rightMargin">
+    <number>3</number>
+   </property>
+   <property name="bottomMargin">
+    <number>3</number>
+   </property>
    <item>
     <widget class="QListWidget" name="listWidget">
      <property name="iconSize">
@@ -24,8 +39,67 @@
      </property>
     </widget>
    </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <property name="spacing">
+      <number>3</number>
+     </property>
+     <property name="leftMargin">
+      <number>0</number>
+     </property>
+     <property name="topMargin">
+      <number>0</number>
+     </property>
+     <property name="rightMargin">
+      <number>0</number>
+     </property>
+     <property name="bottomMargin">
+      <number>0</number>
+     </property>
+     <item>
+      <widget class="QLabel" name="label_2">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text">
+        <string>External Icons:</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QLabel" name="labelIconPath">
+       <property name="text">
+        <string>-</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QToolButton" name="toolPath">
+       <property name="text">
+        <string>...</string>
+       </property>
+       <property name="icon">
+        <iconset resource="../resources.qrc">
+         <normaloff>:/icons/32x32/PathBlue.png</normaloff>:/icons/32x32/PathBlue.png</iconset>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QLabel" name="label">
+     <property name="text">
+      <string>All custom icons have to be *.bmp format.</string>
+     </property>
+    </widget>
+   </item>
   </layout>
  </widget>
- <resources/>
+ <resources>
+  <include location="../resources.qrc"/>
+ </resources>
  <connections/>
 </ui>
diff --git a/src/gis/db/CDBItem.h b/src/helpers/Signals.h
similarity index 62%
copy from src/gis/db/CDBItem.h
copy to src/helpers/Signals.h
index 475be4e..9cec331 100644
--- a/src/gis/db/CDBItem.h
+++ b/src/helpers/Signals.h
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+    Copyright (C) 2014-2016 Oliver Eichler oliver.eichler at gmx.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -16,38 +16,27 @@
 
 **********************************************************************************************/
 
-#ifndef CDBITEM_H
-#define CDBITEM_H
+#ifndef SIGNALS_H
+#define SIGNALS_H
 
-#include <QTreeWidgetItem>
+#include <QObject>
+#include <QRegExp>
 
-class IDBFolder;
-class QSqlDatabase;
-
-class CDBItem : public QTreeWidgetItem
+inline void X______________BlockAllSignals______________X(QObject * parent)
 {
-public:
-    CDBItem(QSqlDatabase& db, quint64 id, IDBFolder * parent);
-    virtual ~CDBItem();
-
-    quint64 getId()
+    foreach(QObject * obj, parent->findChildren<QObject*>(QRegExp(".*")))
     {
-        return id;
+        obj->blockSignals(true);
     }
-    const QString& getKey()
+}
+
+inline void X_____________UnBlockAllSignals_____________X(QObject * parent)
+{
+    foreach(QObject * obj, parent->findChildren<QObject*>(QRegExp(".*")))
     {
-        return key;
+        obj->blockSignals(false);
     }
-    void toggle();
-    void remove();
-
-private:
-    QSqlDatabase& db;
-    quint64 id;
-
-    int type;
-    QString key;
-};
+}
 
-#endif //CDBITEM_H
+#endif //SIGNALS_H
 
diff --git a/src/icons/16x16/ActAero.png b/src/icons/16x16/ActAero.png
index 73b7a17..22d0190 100644
Binary files a/src/icons/16x16/ActAero.png and b/src/icons/16x16/ActAero.png differ
diff --git a/src/icons/16x16/ActBike.png b/src/icons/16x16/ActBike.png
index 06c75aa..3bb0c9e 100644
Binary files a/src/icons/16x16/ActBike.png and b/src/icons/16x16/ActBike.png differ
diff --git a/src/icons/16x16/ActCable.png b/src/icons/16x16/ActCable.png
index 404a956..9dc2e20 100644
Binary files a/src/icons/16x16/ActCable.png and b/src/icons/16x16/ActCable.png differ
diff --git a/src/icons/16x16/ActCar.png b/src/icons/16x16/ActCar.png
index e19c0df..d1edfbe 100644
Binary files a/src/icons/16x16/ActCar.png and b/src/icons/16x16/ActCar.png differ
diff --git a/src/icons/16x16/ActCycle.png b/src/icons/16x16/ActCycle.png
index dcf8ae9..afb42d7 100644
Binary files a/src/icons/16x16/ActCycle.png and b/src/icons/16x16/ActCycle.png differ
diff --git a/src/icons/16x16/ActFoot.png b/src/icons/16x16/ActFoot.png
index 5dec671..edbf245 100644
Binary files a/src/icons/16x16/ActFoot.png and b/src/icons/16x16/ActFoot.png differ
diff --git a/src/icons/16x16/ActNone.png b/src/icons/16x16/ActNone.png
index 2b2f324..d581361 100644
Binary files a/src/icons/16x16/ActNone.png and b/src/icons/16x16/ActNone.png differ
diff --git a/src/icons/16x16/ActShip.png b/src/icons/16x16/ActShip.png
index 2c0188b..6a54886 100644
Binary files a/src/icons/16x16/ActShip.png and b/src/icons/16x16/ActShip.png differ
diff --git a/src/icons/16x16/ActSki.png b/src/icons/16x16/ActSki.png
new file mode 100644
index 0000000..30cdc19
Binary files /dev/null and b/src/icons/16x16/ActSki.png differ
diff --git a/src/icons/16x16/ActSwim.png b/src/icons/16x16/ActSwim.png
index b02d11d..3a918c1 100644
Binary files a/src/icons/16x16/ActSwim.png and b/src/icons/16x16/ActSwim.png differ
diff --git a/src/icons/16x16/Activity.png b/src/icons/16x16/Activity.png
index 4d58463..17ee2a4 100644
Binary files a/src/icons/16x16/Activity.png and b/src/icons/16x16/Activity.png differ
diff --git a/src/icons/16x16/EditDetails.png b/src/icons/16x16/EditDetails.png
new file mode 100644
index 0000000..e5ba7a2
Binary files /dev/null and b/src/icons/16x16/EditDetails.png differ
diff --git a/src/icons/32x32/2DFix.png b/src/icons/32x32/2DFix.png
index 208739d..058073e 100644
Binary files a/src/icons/32x32/2DFix.png and b/src/icons/32x32/2DFix.png differ
diff --git a/src/icons/32x32/2NavProject.png b/src/icons/32x32/2NavProject.png
index 9ca826c..282b90e 100644
Binary files a/src/icons/32x32/2NavProject.png and b/src/icons/32x32/2NavProject.png differ
diff --git a/src/icons/32x32/3DFix.png b/src/icons/32x32/3DFix.png
index 67a2fc5..62e554e 100644
Binary files a/src/icons/32x32/3DFix.png and b/src/icons/32x32/3DFix.png differ
diff --git a/src/icons/32x32/A.png b/src/icons/32x32/A.png
index 4411116..a7830dd 100644
Binary files a/src/icons/32x32/A.png and b/src/icons/32x32/A.png differ
diff --git a/src/icons/32x32/ActAero.png b/src/icons/32x32/ActAero.png
index a3f31b7..6b634f4 100644
Binary files a/src/icons/32x32/ActAero.png and b/src/icons/32x32/ActAero.png differ
diff --git a/src/icons/32x32/ActBike.png b/src/icons/32x32/ActBike.png
index cf2daf5..04ed465 100644
Binary files a/src/icons/32x32/ActBike.png and b/src/icons/32x32/ActBike.png differ
diff --git a/src/icons/32x32/ActCable.png b/src/icons/32x32/ActCable.png
index f2d6772..7f93f13 100644
Binary files a/src/icons/32x32/ActCable.png and b/src/icons/32x32/ActCable.png differ
diff --git a/src/icons/32x32/ActCar.png b/src/icons/32x32/ActCar.png
index 525512b..2c8ca5e 100644
Binary files a/src/icons/32x32/ActCar.png and b/src/icons/32x32/ActCar.png differ
diff --git a/src/icons/32x32/ActCycle.png b/src/icons/32x32/ActCycle.png
index 601c310..d551aef 100644
Binary files a/src/icons/32x32/ActCycle.png and b/src/icons/32x32/ActCycle.png differ
diff --git a/src/icons/32x32/ActFoot.png b/src/icons/32x32/ActFoot.png
index d7129ef..bc5e623 100644
Binary files a/src/icons/32x32/ActFoot.png and b/src/icons/32x32/ActFoot.png differ
diff --git a/src/icons/32x32/ActNone.png b/src/icons/32x32/ActNone.png
index f1f51ab..cc2ec04 100644
Binary files a/src/icons/32x32/ActNone.png and b/src/icons/32x32/ActNone.png differ
diff --git a/src/icons/32x32/ActShip.png b/src/icons/32x32/ActShip.png
index 245dbae..e7d1810 100644
Binary files a/src/icons/32x32/ActShip.png and b/src/icons/32x32/ActShip.png differ
diff --git a/src/icons/32x32/ActSki.png b/src/icons/32x32/ActSki.png
new file mode 100644
index 0000000..676642e
Binary files /dev/null and b/src/icons/32x32/ActSki.png differ
diff --git a/src/icons/32x32/ActSwim.png b/src/icons/32x32/ActSwim.png
index 46ad370..ff13669 100644
Binary files a/src/icons/32x32/ActSwim.png and b/src/icons/32x32/ActSwim.png differ
diff --git a/src/icons/32x32/Activity.png b/src/icons/32x32/Activity.png
index ac5d3d9..62d466f 100644
Binary files a/src/icons/32x32/Activity.png and b/src/icons/32x32/Activity.png differ
diff --git a/src/icons/32x32/Add.png b/src/icons/32x32/Add.png
index d9a8b02..62a35ae 100644
Binary files a/src/icons/32x32/Add.png and b/src/icons/32x32/Add.png differ
diff --git a/src/icons/32x32/AddArea.png b/src/icons/32x32/AddArea.png
index 8f7e408..6e63d95 100644
Binary files a/src/icons/32x32/AddArea.png and b/src/icons/32x32/AddArea.png differ
diff --git a/src/icons/32x32/AddImage.png b/src/icons/32x32/AddImage.png
index ea1d62e..86aa9e9 100644
Binary files a/src/icons/32x32/AddImage.png and b/src/icons/32x32/AddImage.png differ
diff --git a/src/icons/32x32/AddMapWorkspace.png b/src/icons/32x32/AddMapWorkspace.png
index ca26f6b..c0111c8 100644
Binary files a/src/icons/32x32/AddMapWorkspace.png and b/src/icons/32x32/AddMapWorkspace.png differ
diff --git a/src/icons/32x32/AddProject.png b/src/icons/32x32/AddProject.png
index 598c22b..97543c6 100644
Binary files a/src/icons/32x32/AddProject.png and b/src/icons/32x32/AddProject.png differ
diff --git a/src/icons/32x32/AddRte.png b/src/icons/32x32/AddRte.png
index 7b9bc17..7b31c28 100644
Binary files a/src/icons/32x32/AddRte.png and b/src/icons/32x32/AddRte.png differ
diff --git a/src/icons/32x32/AddTrk.png b/src/icons/32x32/AddTrk.png
index 54bda7b..9ff7e5f 100644
Binary files a/src/icons/32x32/AddTrk.png and b/src/icons/32x32/AddTrk.png differ
diff --git a/src/icons/32x32/AddWpt.png b/src/icons/32x32/AddWpt.png
index c32f708..acc892c 100644
Binary files a/src/icons/32x32/AddWpt.png and b/src/icons/32x32/AddWpt.png differ
diff --git a/src/icons/32x32/Apply.png b/src/icons/32x32/Apply.png
index 6316482..0e32a15 100644
Binary files a/src/icons/32x32/Apply.png and b/src/icons/32x32/Apply.png differ
diff --git a/src/icons/32x32/Area.png b/src/icons/32x32/Area.png
index e17ad0a..9281c76 100644
Binary files a/src/icons/32x32/Area.png and b/src/icons/32x32/Area.png differ
diff --git a/src/icons/32x32/AreaMove.png b/src/icons/32x32/AreaMove.png
index 5fa1037..9d47faa 100644
Binary files a/src/icons/32x32/AreaMove.png and b/src/icons/32x32/AreaMove.png differ
diff --git a/src/icons/32x32/ArrowDef.png b/src/icons/32x32/ArrowDef.png
new file mode 100644
index 0000000..27e2f2a
Binary files /dev/null and b/src/icons/32x32/ArrowDef.png differ
diff --git a/src/icons/32x32/ArrowUser.png b/src/icons/32x32/ArrowUser.png
new file mode 100644
index 0000000..10c1dc7
Binary files /dev/null and b/src/icons/32x32/ArrowUser.png differ
diff --git a/src/icons/32x32/Bubble.png b/src/icons/32x32/Bubble.png
index d23c409..7964ac7 100644
Binary files a/src/icons/32x32/Bubble.png and b/src/icons/32x32/Bubble.png differ
diff --git a/src/icons/32x32/CSrcATemp.png b/src/icons/32x32/CSrcATemp.png
index d9a20f9..fc28a0a 100644
Binary files a/src/icons/32x32/CSrcATemp.png and b/src/icons/32x32/CSrcATemp.png differ
diff --git a/src/icons/32x32/CSrcAccel.png b/src/icons/32x32/CSrcAccel.png
new file mode 100644
index 0000000..5c48f30
Binary files /dev/null and b/src/icons/32x32/CSrcAccel.png differ
diff --git a/src/icons/32x32/CSrcCourse.png b/src/icons/32x32/CSrcCourse.png
new file mode 100644
index 0000000..7c662fc
Binary files /dev/null and b/src/icons/32x32/CSrcCourse.png differ
diff --git a/src/icons/32x32/CSrcUnknown.png b/src/icons/32x32/CSrcUnknown.png
index 7713c31..1b10841 100644
Binary files a/src/icons/32x32/CSrcUnknown.png and b/src/icons/32x32/CSrcUnknown.png differ
diff --git a/src/icons/32x32/CSrcWTemp.png b/src/icons/32x32/CSrcWTemp.png
index 9296533..f9a54f7 100644
Binary files a/src/icons/32x32/CSrcWTemp.png and b/src/icons/32x32/CSrcWTemp.png differ
diff --git a/src/icons/32x32/Cancel.png b/src/icons/32x32/Cancel.png
index c73c80c..bbb15b6 100644
Binary files a/src/icons/32x32/Cancel.png and b/src/icons/32x32/Cancel.png differ
diff --git a/src/icons/32x32/Check.png b/src/icons/32x32/Check.png
index 02e332a..0bb777d 100644
Binary files a/src/icons/32x32/Check.png and b/src/icons/32x32/Check.png differ
diff --git a/src/icons/32x32/CloneMapWorkspace.png b/src/icons/32x32/CloneMapWorkspace.png
index 2d1ee9c..0cba6a4 100644
Binary files a/src/icons/32x32/CloneMapWorkspace.png and b/src/icons/32x32/CloneMapWorkspace.png differ
diff --git a/src/icons/32x32/Close.png b/src/icons/32x32/Close.png
index b318920..5cffea7 100644
Binary files a/src/icons/32x32/Close.png and b/src/icons/32x32/Close.png differ
diff --git a/src/icons/32x32/Combine.png b/src/icons/32x32/Combine.png
index c753af3..c6cb6a1 100644
Binary files a/src/icons/32x32/Combine.png and b/src/icons/32x32/Combine.png differ
diff --git a/src/icons/32x32/Copy.png b/src/icons/32x32/Copy.png
index b3a7420..901448d 100644
Binary files a/src/icons/32x32/Copy.png and b/src/icons/32x32/Copy.png differ
diff --git a/src/icons/32x32/Cut.png b/src/icons/32x32/Cut.png
index f11af8c..fe5f420 100644
Binary files a/src/icons/32x32/Cut.png and b/src/icons/32x32/Cut.png differ
diff --git a/src/icons/32x32/CutHistory.png b/src/icons/32x32/CutHistory.png
index 2b4287a..d607999 100644
Binary files a/src/icons/32x32/CutHistory.png and b/src/icons/32x32/CutHistory.png differ
diff --git a/src/icons/32x32/DBProject.png b/src/icons/32x32/DBProject.png
index 5dcbef8..cc78a70 100644
Binary files a/src/icons/32x32/DBProject.png and b/src/icons/32x32/DBProject.png differ
diff --git a/src/icons/32x32/Database.png b/src/icons/32x32/Database.png
index 0cc53ca..1b2b688 100644
Binary files a/src/icons/32x32/Database.png and b/src/icons/32x32/Database.png differ
diff --git a/src/icons/32x32/DatabaseConvert.png b/src/icons/32x32/DatabaseConvert.png
index 8077835..3ecc400 100644
Binary files a/src/icons/32x32/DatabaseConvert.png and b/src/icons/32x32/DatabaseConvert.png differ
diff --git a/src/icons/32x32/DatabaseSetup.png b/src/icons/32x32/DatabaseSetup.png
index 208f14d..c01d653 100644
Binary files a/src/icons/32x32/DatabaseSetup.png and b/src/icons/32x32/DatabaseSetup.png differ
diff --git a/src/icons/32x32/DatabaseSync.png b/src/icons/32x32/DatabaseSync.png
new file mode 100644
index 0000000..ce3f315
Binary files /dev/null and b/src/icons/32x32/DatabaseSync.png differ
diff --git a/src/icons/32x32/DelImage.png b/src/icons/32x32/DelImage.png
index 4442cfe..319db22 100644
Binary files a/src/icons/32x32/DelImage.png and b/src/icons/32x32/DelImage.png differ
diff --git a/src/icons/32x32/DeleteMultiple.png b/src/icons/32x32/DeleteMultiple.png
index 005234c..e013078 100644
Binary files a/src/icons/32x32/DeleteMultiple.png and b/src/icons/32x32/DeleteMultiple.png differ
diff --git a/src/icons/32x32/DeleteOne.png b/src/icons/32x32/DeleteOne.png
index 5579db7..d78a123 100644
Binary files a/src/icons/32x32/DeleteOne.png and b/src/icons/32x32/DeleteOne.png differ
diff --git a/src/icons/32x32/Device.png b/src/icons/32x32/Device.png
index e5331a4..abbcc40 100644
Binary files a/src/icons/32x32/Device.png and b/src/icons/32x32/Device.png differ
diff --git a/src/icons/32x32/Down.png b/src/icons/32x32/Down.png
index bfd3060..7b6b254 100644
Binary files a/src/icons/32x32/Down.png and b/src/icons/32x32/Down.png differ
diff --git a/src/icons/32x32/EditDetails.png b/src/icons/32x32/EditDetails.png
index 27b79da..d6f5a93 100644
Binary files a/src/icons/32x32/EditDetails.png and b/src/icons/32x32/EditDetails.png differ
diff --git a/src/icons/32x32/EditText.png b/src/icons/32x32/EditText.png
index dba416d..83a92e2 100644
Binary files a/src/icons/32x32/EditText.png and b/src/icons/32x32/EditText.png differ
diff --git a/src/icons/32x32/Empty.png b/src/icons/32x32/Empty.png
index 6bc96b0..fa1ca33 100644
Binary files a/src/icons/32x32/Empty.png and b/src/icons/32x32/Empty.png differ
diff --git a/src/icons/32x32/Error.png b/src/icons/32x32/Error.png
index 1d08fe9..c6bfd0e 100644
Binary files a/src/icons/32x32/Error.png and b/src/icons/32x32/Error.png differ
diff --git a/src/icons/32x32/FilterModifyExtension.png b/src/icons/32x32/FilterModifyExtension.png
new file mode 100644
index 0000000..474dad4
Binary files /dev/null and b/src/icons/32x32/FilterModifyExtension.png differ
diff --git a/src/icons/32x32/FitProject.png b/src/icons/32x32/FitProject.png
new file mode 100644
index 0000000..b23a00b
Binary files /dev/null and b/src/icons/32x32/FitProject.png differ
diff --git a/src/icons/32x32/FolderDEM.png b/src/icons/32x32/FolderDEM.png
index 9bba91b..0479b14 100644
Binary files a/src/icons/32x32/FolderDEM.png and b/src/icons/32x32/FolderDEM.png differ
diff --git a/src/icons/32x32/FolderMap.png b/src/icons/32x32/FolderMap.png
index b215903..07773ac 100644
Binary files a/src/icons/32x32/FolderMap.png and b/src/icons/32x32/FolderMap.png differ
diff --git a/src/icons/32x32/Font.png b/src/icons/32x32/Font.png
index 156e176..55cb55b 100644
Binary files a/src/icons/32x32/Font.png and b/src/icons/32x32/Font.png differ
diff --git a/src/icons/32x32/FromMap.png b/src/icons/32x32/FromMap.png
index 6733448..a0929c5 100644
Binary files a/src/icons/32x32/FromMap.png and b/src/icons/32x32/FromMap.png differ
diff --git a/src/icons/32x32/GpxProject.png b/src/icons/32x32/GpxProject.png
index 227bde5..618499e 100644
Binary files a/src/icons/32x32/GpxProject.png and b/src/icons/32x32/GpxProject.png differ
diff --git a/src/icons/32x32/Grid.png b/src/icons/32x32/Grid.png
index 12cafdc..e313de1 100644
Binary files a/src/icons/32x32/Grid.png and b/src/icons/32x32/Grid.png differ
diff --git a/src/icons/32x32/GridSetup.png b/src/icons/32x32/GridSetup.png
index 4015af3..32ae429 100644
Binary files a/src/icons/32x32/GridSetup.png and b/src/icons/32x32/GridSetup.png differ
diff --git a/src/icons/32x32/GridWizzard.png b/src/icons/32x32/GridWizzard.png
index a180d35..a79abe7 100644
Binary files a/src/icons/32x32/GridWizzard.png and b/src/icons/32x32/GridWizzard.png differ
diff --git a/src/icons/32x32/Help.png b/src/icons/32x32/Help.png
index 9be7869..bc61e24 100644
Binary files a/src/icons/32x32/Help.png and b/src/icons/32x32/Help.png differ
diff --git a/src/icons/32x32/Image.png b/src/icons/32x32/Image.png
index 3a69b48..f1a7452 100644
Binary files a/src/icons/32x32/Image.png and b/src/icons/32x32/Image.png differ
diff --git a/src/icons/32x32/Info.png b/src/icons/32x32/Info.png
index cdbaa49..92b6b86 100644
Binary files a/src/icons/32x32/Info.png and b/src/icons/32x32/Info.png differ
diff --git a/src/icons/32x32/Left.png b/src/icons/32x32/Left.png
index c6047a5..7109e4e 100644
Binary files a/src/icons/32x32/Left.png and b/src/icons/32x32/Left.png differ
diff --git a/src/icons/32x32/Limit.png b/src/icons/32x32/Limit.png
new file mode 100644
index 0000000..3ce5ac7
Binary files /dev/null and b/src/icons/32x32/Limit.png differ
diff --git a/src/icons/32x32/LimitMax.png b/src/icons/32x32/LimitMax.png
new file mode 100644
index 0000000..18b822d
Binary files /dev/null and b/src/icons/32x32/LimitMax.png differ
diff --git a/src/icons/32x32/LimitMin.png b/src/icons/32x32/LimitMin.png
new file mode 100644
index 0000000..5c14902
Binary files /dev/null and b/src/icons/32x32/LimitMin.png differ
diff --git a/src/icons/32x32/LimitSys.png b/src/icons/32x32/LimitSys.png
new file mode 100644
index 0000000..3212b98
Binary files /dev/null and b/src/icons/32x32/LimitSys.png differ
diff --git a/src/icons/32x32/LimitUsr.png b/src/icons/32x32/LimitUsr.png
new file mode 100644
index 0000000..89ad90a
Binary files /dev/null and b/src/icons/32x32/LimitUsr.png differ
diff --git a/src/icons/32x32/LineMove.png b/src/icons/32x32/LineMove.png
index 9b2684b..bcd8c1c 100644
Binary files a/src/icons/32x32/LineMove.png and b/src/icons/32x32/LineMove.png differ
diff --git a/src/icons/32x32/LineWidthDef.png b/src/icons/32x32/LineWidthDef.png
new file mode 100644
index 0000000..10f2d52
Binary files /dev/null and b/src/icons/32x32/LineWidthDef.png differ
diff --git a/src/icons/32x32/LineWidthUser.png b/src/icons/32x32/LineWidthUser.png
new file mode 100644
index 0000000..1a743a1
Binary files /dev/null and b/src/icons/32x32/LineWidthUser.png differ
diff --git a/src/icons/32x32/Link.png b/src/icons/32x32/Link.png
index 29494e3..9c7acac 100644
Binary files a/src/icons/32x32/Link.png and b/src/icons/32x32/Link.png differ
diff --git a/src/icons/32x32/LoadGIS.png b/src/icons/32x32/LoadGIS.png
index 23bb3d0..2c6a80e 100644
Binary files a/src/icons/32x32/LoadGIS.png and b/src/icons/32x32/LoadGIS.png differ
diff --git a/src/icons/32x32/LoadView.png b/src/icons/32x32/LoadView.png
index d8c0147..f13ddb5 100644
Binary files a/src/icons/32x32/LoadView.png and b/src/icons/32x32/LoadView.png differ
diff --git a/src/icons/32x32/Lock.png b/src/icons/32x32/Lock.png
index b3dfa83..00e632c 100644
Binary files a/src/icons/32x32/Lock.png and b/src/icons/32x32/Lock.png differ
diff --git a/src/icons/32x32/Map.png b/src/icons/32x32/Map.png
index 7d54529..cf282d5 100644
Binary files a/src/icons/32x32/Map.png and b/src/icons/32x32/Map.png differ
diff --git a/src/icons/32x32/MimeDemVRT.png b/src/icons/32x32/MimeDemVRT.png
index 861b66d..f0c1bda 100644
Binary files a/src/icons/32x32/MimeDemVRT.png and b/src/icons/32x32/MimeDemVRT.png differ
diff --git a/src/icons/32x32/MimeGEMF.png b/src/icons/32x32/MimeGEMF.png
new file mode 100644
index 0000000..f8e68c3
Binary files /dev/null and b/src/icons/32x32/MimeGEMF.png differ
diff --git a/src/icons/32x32/MimeIMG.png b/src/icons/32x32/MimeIMG.png
index cc90d24..bd56f61 100644
Binary files a/src/icons/32x32/MimeIMG.png and b/src/icons/32x32/MimeIMG.png differ
diff --git a/src/icons/32x32/MimeJNX.png b/src/icons/32x32/MimeJNX.png
index 6bd3186..469fc6f 100644
Binary files a/src/icons/32x32/MimeJNX.png and b/src/icons/32x32/MimeJNX.png differ
diff --git a/src/icons/32x32/MimeMAP.png b/src/icons/32x32/MimeMAP.png
index 4fb238c..828e296 100644
Binary files a/src/icons/32x32/MimeMAP.png and b/src/icons/32x32/MimeMAP.png differ
diff --git a/src/icons/32x32/MimeRMAP.png b/src/icons/32x32/MimeRMAP.png
index 6bf0a5e..5322152 100644
Binary files a/src/icons/32x32/MimeRMAP.png and b/src/icons/32x32/MimeRMAP.png differ
diff --git a/src/icons/32x32/MimeTMS.png b/src/icons/32x32/MimeTMS.png
index fd4d246..72f112d 100644
Binary files a/src/icons/32x32/MimeTMS.png and b/src/icons/32x32/MimeTMS.png differ
diff --git a/src/icons/32x32/MimeVRT.png b/src/icons/32x32/MimeVRT.png
index 062c2b5..e0e30a4 100644
Binary files a/src/icons/32x32/MimeVRT.png and b/src/icons/32x32/MimeVRT.png differ
diff --git a/src/icons/32x32/MimeWMTS.png b/src/icons/32x32/MimeWMTS.png
index da98e6e..0f454b1 100644
Binary files a/src/icons/32x32/MimeWMTS.png and b/src/icons/32x32/MimeWMTS.png differ
diff --git a/src/icons/32x32/MouseWheel.png b/src/icons/32x32/MouseWheel.png
index b180837..170f2a7 100644
Binary files a/src/icons/32x32/MouseWheel.png and b/src/icons/32x32/MouseWheel.png differ
diff --git a/src/icons/32x32/Move.png b/src/icons/32x32/Move.png
index 3308906..ef1b8be 100644
Binary files a/src/icons/32x32/Move.png and b/src/icons/32x32/Move.png differ
diff --git a/src/icons/32x32/MoveArrow.png b/src/icons/32x32/MoveArrow.png
index 36da43b..9ba0cad 100644
Binary files a/src/icons/32x32/MoveArrow.png and b/src/icons/32x32/MoveArrow.png differ
diff --git a/src/icons/32x32/MySQL.png b/src/icons/32x32/MySQL.png
new file mode 100644
index 0000000..fea9f41
Binary files /dev/null and b/src/icons/32x32/MySQL.png differ
diff --git a/src/icons/32x32/MySQLNoConn.png b/src/icons/32x32/MySQLNoConn.png
new file mode 100644
index 0000000..5597bc4
Binary files /dev/null and b/src/icons/32x32/MySQLNoConn.png differ
diff --git a/src/icons/32x32/NightDay.png b/src/icons/32x32/NightDay.png
index 74edc81..84d2668 100644
Binary files a/src/icons/32x32/NightDay.png and b/src/icons/32x32/NightDay.png differ
diff --git a/src/icons/32x32/NoFix.png b/src/icons/32x32/NoFix.png
index 94c8d79..9375073 100644
Binary files a/src/icons/32x32/NoFix.png and b/src/icons/32x32/NoFix.png differ
diff --git a/src/icons/32x32/NoGo.png b/src/icons/32x32/NoGo.png
index 25503e3..2074a4e 100644
Binary files a/src/icons/32x32/NoGo.png and b/src/icons/32x32/NoGo.png differ
diff --git a/src/icons/32x32/O.png b/src/icons/32x32/O.png
index ec358b7..0902c0d 100644
Binary files a/src/icons/32x32/O.png and b/src/icons/32x32/O.png differ
diff --git a/src/icons/32x32/Off.png b/src/icons/32x32/Off.png
index 7198d96..d85a2a2 100644
Binary files a/src/icons/32x32/Off.png and b/src/icons/32x32/Off.png differ
diff --git a/src/icons/32x32/Opacity.png b/src/icons/32x32/Opacity.png
index 45fa539..bd9db3e 100644
Binary files a/src/icons/32x32/Opacity.png and b/src/icons/32x32/Opacity.png differ
diff --git a/src/icons/32x32/POIText.png b/src/icons/32x32/POIText.png
index 3b2f7ed..2975eb0 100644
Binary files a/src/icons/32x32/POIText.png and b/src/icons/32x32/POIText.png differ
diff --git a/src/icons/32x32/Paste.png b/src/icons/32x32/Paste.png
index 92f6a8f..99e8573 100644
Binary files a/src/icons/32x32/Paste.png and b/src/icons/32x32/Paste.png differ
diff --git a/src/icons/32x32/PathBlue.png b/src/icons/32x32/PathBlue.png
index a790673..7cfba33 100644
Binary files a/src/icons/32x32/PathBlue.png and b/src/icons/32x32/PathBlue.png differ
diff --git a/src/icons/32x32/PathGreen.png b/src/icons/32x32/PathGreen.png
index 768dc51..0fbf859 100644
Binary files a/src/icons/32x32/PathGreen.png and b/src/icons/32x32/PathGreen.png differ
diff --git a/src/icons/32x32/PathOrange.png b/src/icons/32x32/PathOrange.png
index c418ce8..6347f48 100644
Binary files a/src/icons/32x32/PathOrange.png and b/src/icons/32x32/PathOrange.png differ
diff --git a/src/icons/32x32/Pattern.png b/src/icons/32x32/Pattern.png
index 5f13738..903065d 100644
Binary files a/src/icons/32x32/Pattern.png and b/src/icons/32x32/Pattern.png differ
diff --git a/src/icons/32x32/PointHide.png b/src/icons/32x32/PointHide.png
index a749118..1522978 100644
Binary files a/src/icons/32x32/PointHide.png and b/src/icons/32x32/PointHide.png differ
diff --git a/src/icons/32x32/PointMove.png b/src/icons/32x32/PointMove.png
index 5064cf9..2ab357a 100644
Binary files a/src/icons/32x32/PointMove.png and b/src/icons/32x32/PointMove.png differ
diff --git a/src/icons/32x32/PointShow.png b/src/icons/32x32/PointShow.png
index 870bdf0..649c0d6 100644
Binary files a/src/icons/32x32/PointShow.png and b/src/icons/32x32/PointShow.png differ
diff --git a/src/icons/32x32/Print.png b/src/icons/32x32/Print.png
index a4af9c5..56618a1 100644
Binary files a/src/icons/32x32/Print.png and b/src/icons/32x32/Print.png differ
diff --git a/src/icons/32x32/PrintSave.png b/src/icons/32x32/PrintSave.png
index 0c83bee..626d128 100644
Binary files a/src/icons/32x32/PrintSave.png and b/src/icons/32x32/PrintSave.png differ
diff --git a/src/icons/32x32/ProfileToWindow.png b/src/icons/32x32/ProfileToWindow.png
index 2a6bed5..5224b93 100644
Binary files a/src/icons/32x32/ProfileToWindow.png and b/src/icons/32x32/ProfileToWindow.png differ
diff --git a/src/icons/32x32/Progress.png b/src/icons/32x32/Progress.png
index f79623e..f5d007e 100644
Binary files a/src/icons/32x32/Progress.png and b/src/icons/32x32/Progress.png differ
diff --git a/src/icons/32x32/QMapShack.png b/src/icons/32x32/QMapShack.png
index b215903..f0234b7 100644
Binary files a/src/icons/32x32/QMapShack.png and b/src/icons/32x32/QMapShack.png differ
diff --git a/src/icons/32x32/QmsProject.png b/src/icons/32x32/QmsProject.png
index 623b247..4aaa09b 100644
Binary files a/src/icons/32x32/QmsProject.png and b/src/icons/32x32/QmsProject.png differ
diff --git a/src/icons/32x32/Redo.png b/src/icons/32x32/Redo.png
index 2bf3eaf..a860107 100644
Binary files a/src/icons/32x32/Redo.png and b/src/icons/32x32/Redo.png differ
diff --git a/src/icons/32x32/ReloadImage.png b/src/icons/32x32/ReloadImage.png
index 82fd0ee..c236ebf 100644
Binary files a/src/icons/32x32/ReloadImage.png and b/src/icons/32x32/ReloadImage.png differ
diff --git a/src/icons/32x32/Reset.png b/src/icons/32x32/Reset.png
index 8f6446a..7f089dc 100644
Binary files a/src/icons/32x32/Reset.png and b/src/icons/32x32/Reset.png differ
diff --git a/src/icons/32x32/Reverse.png b/src/icons/32x32/Reverse.png
index 1bd284b..429961e 100644
Binary files a/src/icons/32x32/Reverse.png and b/src/icons/32x32/Reverse.png differ
diff --git a/src/icons/32x32/Right.png b/src/icons/32x32/Right.png
index 5ea6494..e6dc941 100644
Binary files a/src/icons/32x32/Right.png and b/src/icons/32x32/Right.png differ
diff --git a/src/icons/32x32/Route.png b/src/icons/32x32/Route.png
index 31a3771..724c36d 100644
Binary files a/src/icons/32x32/Route.png and b/src/icons/32x32/Route.png differ
diff --git a/src/icons/32x32/RouteSetup.png b/src/icons/32x32/RouteSetup.png
index a78ffd4..efa362d 100644
Binary files a/src/icons/32x32/RouteSetup.png and b/src/icons/32x32/RouteSetup.png differ
diff --git a/src/icons/32x32/RteInstr.png b/src/icons/32x32/RteInstr.png
index 72f755d..ec0231a 100644
Binary files a/src/icons/32x32/RteInstr.png and b/src/icons/32x32/RteInstr.png differ
diff --git a/src/icons/32x32/SQLite.png b/src/icons/32x32/SQLite.png
new file mode 100644
index 0000000..0a8c94c
Binary files /dev/null and b/src/icons/32x32/SQLite.png differ
diff --git a/src/icons/32x32/Save.png b/src/icons/32x32/Save.png
index 9db5fc2..22dac67 100644
Binary files a/src/icons/32x32/Save.png and b/src/icons/32x32/Save.png differ
diff --git a/src/icons/32x32/SaveAllGIS.png b/src/icons/32x32/SaveAllGIS.png
index e7ce2aa..7ccce6d 100644
Binary files a/src/icons/32x32/SaveAllGIS.png and b/src/icons/32x32/SaveAllGIS.png differ
diff --git a/src/icons/32x32/SaveGIS.png b/src/icons/32x32/SaveGIS.png
index fb5749b..7ccce6d 100644
Binary files a/src/icons/32x32/SaveGIS.png and b/src/icons/32x32/SaveGIS.png differ
diff --git a/src/icons/32x32/SaveGISAs.png b/src/icons/32x32/SaveGISAs.png
index 80ebbdc..ecb238d 100644
Binary files a/src/icons/32x32/SaveGISAs.png and b/src/icons/32x32/SaveGISAs.png differ
diff --git a/src/icons/32x32/SaveView.png b/src/icons/32x32/SaveView.png
index f2e104d..1a35fa5 100644
Binary files a/src/icons/32x32/SaveView.png and b/src/icons/32x32/SaveView.png differ
diff --git a/src/icons/32x32/Scale.png b/src/icons/32x32/Scale.png
index 6eb44e9..6291e43 100644
Binary files a/src/icons/32x32/Scale.png and b/src/icons/32x32/Scale.png differ
diff --git a/src/icons/32x32/SearchGoogle.png b/src/icons/32x32/SearchGoogle.png
index 5346221..82606b1 100644
Binary files a/src/icons/32x32/SearchGoogle.png and b/src/icons/32x32/SearchGoogle.png differ
diff --git a/src/icons/32x32/SelectColor.png b/src/icons/32x32/SelectColor.png
index bbb9c81..2bbd88d 100644
Binary files a/src/icons/32x32/SelectColor.png and b/src/icons/32x32/SelectColor.png differ
diff --git a/src/icons/32x32/SelectRange.png b/src/icons/32x32/SelectRange.png
index b785f2d..687a4c8 100644
Binary files a/src/icons/32x32/SelectRange.png and b/src/icons/32x32/SelectRange.png differ
diff --git a/src/icons/32x32/SetEle.png b/src/icons/32x32/SetEle.png
index 553c25c..4f82fd4 100644
Binary files a/src/icons/32x32/SetEle.png and b/src/icons/32x32/SetEle.png differ
diff --git a/src/icons/32x32/SetupCoordFormat.png b/src/icons/32x32/SetupCoordFormat.png
index ae9a911..65a527b 100644
Binary files a/src/icons/32x32/SetupCoordFormat.png and b/src/icons/32x32/SetupCoordFormat.png differ
diff --git a/src/icons/32x32/SetupMapWorkspace.png b/src/icons/32x32/SetupMapWorkspace.png
index 505945f..3e3abf1 100644
Binary files a/src/icons/32x32/SetupMapWorkspace.png and b/src/icons/32x32/SetupMapWorkspace.png differ
diff --git a/src/icons/32x32/SetupWptSym.png b/src/icons/32x32/SetupWptSym.png
new file mode 100644
index 0000000..f4b4e6e
Binary files /dev/null and b/src/icons/32x32/SetupWptSym.png differ
diff --git a/src/icons/32x32/SizeArrow.png b/src/icons/32x32/SizeArrow.png
index 2720cec..19afe6e 100644
Binary files a/src/icons/32x32/SizeArrow.png and b/src/icons/32x32/SizeArrow.png differ
diff --git a/src/icons/32x32/SlfProject.png b/src/icons/32x32/SlfProject.png
new file mode 100644
index 0000000..76dcdef
Binary files /dev/null and b/src/icons/32x32/SlfProject.png differ
diff --git a/src/icons/32x32/Start.png b/src/icons/32x32/Start.png
index 5649a5a..01a3c68 100644
Binary files a/src/icons/32x32/Start.png and b/src/icons/32x32/Start.png differ
diff --git a/src/icons/32x32/Tainted.png b/src/icons/32x32/Tainted.png
index 78a19b6..e39c386 100644
Binary files a/src/icons/32x32/Tainted.png and b/src/icons/32x32/Tainted.png differ
diff --git a/src/icons/32x32/TextBold.png b/src/icons/32x32/TextBold.png
index 341b50f..01f906d 100644
Binary files a/src/icons/32x32/TextBold.png and b/src/icons/32x32/TextBold.png differ
diff --git a/src/icons/32x32/TextCenter.png b/src/icons/32x32/TextCenter.png
index a5300dc..d1b0e77 100644
Binary files a/src/icons/32x32/TextCenter.png and b/src/icons/32x32/TextCenter.png differ
diff --git a/src/icons/32x32/TextItalic.png b/src/icons/32x32/TextItalic.png
index c7692ea..e55f75a 100644
Binary files a/src/icons/32x32/TextItalic.png and b/src/icons/32x32/TextItalic.png differ
diff --git a/src/icons/32x32/TextJustified.png b/src/icons/32x32/TextJustified.png
index 21a1d96..82a95f8 100644
Binary files a/src/icons/32x32/TextJustified.png and b/src/icons/32x32/TextJustified.png differ
diff --git a/src/icons/32x32/TextLeft.png b/src/icons/32x32/TextLeft.png
index fa1129a..b8af490 100644
Binary files a/src/icons/32x32/TextLeft.png and b/src/icons/32x32/TextLeft.png differ
diff --git a/src/icons/32x32/TextRight.png b/src/icons/32x32/TextRight.png
index 3f13727..cd7090d 100644
Binary files a/src/icons/32x32/TextRight.png and b/src/icons/32x32/TextRight.png differ
diff --git a/src/icons/32x32/TextUnderlined.png b/src/icons/32x32/TextUnderlined.png
index d36cc54..110f827 100644
Binary files a/src/icons/32x32/TextUnderlined.png and b/src/icons/32x32/TextUnderlined.png differ
diff --git a/src/icons/32x32/Time.png b/src/icons/32x32/Time.png
index fdeac6c..b8a0bf1 100644
Binary files a/src/icons/32x32/Time.png and b/src/icons/32x32/Time.png differ
diff --git a/src/icons/32x32/TimeZoneSetup.png b/src/icons/32x32/TimeZoneSetup.png
index aeef989..e4cb34d 100644
Binary files a/src/icons/32x32/TimeZoneSetup.png and b/src/icons/32x32/TimeZoneSetup.png differ
diff --git a/src/icons/32x32/ToBottom.png b/src/icons/32x32/ToBottom.png
index e8e3ef3..6548d59 100644
Binary files a/src/icons/32x32/ToBottom.png and b/src/icons/32x32/ToBottom.png differ
diff --git a/src/icons/32x32/ToTop.png b/src/icons/32x32/ToTop.png
index b064298..825b959 100644
Binary files a/src/icons/32x32/ToTop.png and b/src/icons/32x32/ToTop.png differ
diff --git a/src/icons/32x32/ToolTip.png b/src/icons/32x32/ToolTip.png
index ed76bc2..0e2f6ce 100644
Binary files a/src/icons/32x32/ToolTip.png and b/src/icons/32x32/ToolTip.png differ
diff --git a/src/icons/32x32/Track.png b/src/icons/32x32/Track.png
index 722cb10..ecfa709 100644
Binary files a/src/icons/32x32/Track.png and b/src/icons/32x32/Track.png differ
diff --git a/src/icons/32x32/TrkCut.png b/src/icons/32x32/TrkCut.png
index 5479e83..6ed5286 100644
Binary files a/src/icons/32x32/TrkCut.png and b/src/icons/32x32/TrkCut.png differ
diff --git a/src/icons/32x32/TrkProfile.png b/src/icons/32x32/TrkProfile.png
index 6544583..a422c45 100644
Binary files a/src/icons/32x32/TrkProfile.png and b/src/icons/32x32/TrkProfile.png differ
diff --git a/src/icons/32x32/UnLock.png b/src/icons/32x32/UnLock.png
index 9b05708..55ffd16 100644
Binary files a/src/icons/32x32/UnLock.png and b/src/icons/32x32/UnLock.png differ
diff --git a/src/icons/32x32/Undo.png b/src/icons/32x32/Undo.png
index 83da60e..411da94 100644
Binary files a/src/icons/32x32/Undo.png and b/src/icons/32x32/Undo.png differ
diff --git a/src/icons/32x32/UnitSetup.png b/src/icons/32x32/UnitSetup.png
index 8315dcb..ecea25f 100644
Binary files a/src/icons/32x32/UnitSetup.png and b/src/icons/32x32/UnitSetup.png differ
diff --git a/src/icons/32x32/Up.png b/src/icons/32x32/Up.png
index 9d726a4..65f99ed 100644
Binary files a/src/icons/32x32/Up.png and b/src/icons/32x32/Up.png differ
diff --git a/src/icons/32x32/V.png b/src/icons/32x32/V.png
index 748df53..8af2693 100644
Binary files a/src/icons/32x32/V.png and b/src/icons/32x32/V.png differ
diff --git a/src/icons/32x32/VrtBuilder.png b/src/icons/32x32/VrtBuilder.png
index b951f18..969bcb9 100644
Binary files a/src/icons/32x32/VrtBuilder.png and b/src/icons/32x32/VrtBuilder.png differ
diff --git a/src/icons/32x32/WptMove.png b/src/icons/32x32/WptMove.png
index 9e1a4d8..87be6b6 100644
Binary files a/src/icons/32x32/WptMove.png and b/src/icons/32x32/WptMove.png differ
diff --git a/src/icons/32x32/WptProj.png b/src/icons/32x32/WptProj.png
index da1a705..b3ce71d 100644
Binary files a/src/icons/32x32/WptProj.png and b/src/icons/32x32/WptProj.png differ
diff --git a/src/icons/32x32/WptProx.png b/src/icons/32x32/WptProx.png
index a9e8706..2cd1406 100644
Binary files a/src/icons/32x32/WptProx.png and b/src/icons/32x32/WptProx.png differ
diff --git a/src/icons/32x32/Zoom.png b/src/icons/32x32/Zoom.png
index 5fd0046..e2f6a41 100644
Binary files a/src/icons/32x32/Zoom.png and b/src/icons/32x32/Zoom.png differ
diff --git a/src/icons/48x48/2DFix.png b/src/icons/48x48/2DFix.png
index 907d3af..4148f12 100644
Binary files a/src/icons/48x48/2DFix.png and b/src/icons/48x48/2DFix.png differ
diff --git a/src/icons/48x48/2NavProject.png b/src/icons/48x48/2NavProject.png
index 5d35e4a..74af190 100644
Binary files a/src/icons/48x48/2NavProject.png and b/src/icons/48x48/2NavProject.png differ
diff --git a/src/icons/48x48/3DFix.png b/src/icons/48x48/3DFix.png
index 741b389..1b6a629 100644
Binary files a/src/icons/48x48/3DFix.png and b/src/icons/48x48/3DFix.png differ
diff --git a/src/icons/48x48/A.png b/src/icons/48x48/A.png
index 18c34e8..a7f511d 100644
Binary files a/src/icons/48x48/A.png and b/src/icons/48x48/A.png differ
diff --git a/src/icons/48x48/ActAero.png b/src/icons/48x48/ActAero.png
index f5ec41f..56ecdf2 100644
Binary files a/src/icons/48x48/ActAero.png and b/src/icons/48x48/ActAero.png differ
diff --git a/src/icons/48x48/ActBike.png b/src/icons/48x48/ActBike.png
index b16ceaa..a8639bf 100644
Binary files a/src/icons/48x48/ActBike.png and b/src/icons/48x48/ActBike.png differ
diff --git a/src/icons/48x48/ActCable.png b/src/icons/48x48/ActCable.png
index c26a5b6..42c4e07 100644
Binary files a/src/icons/48x48/ActCable.png and b/src/icons/48x48/ActCable.png differ
diff --git a/src/icons/48x48/ActCar.png b/src/icons/48x48/ActCar.png
index dba1b3a..97fe2a3 100644
Binary files a/src/icons/48x48/ActCar.png and b/src/icons/48x48/ActCar.png differ
diff --git a/src/icons/48x48/ActCycle.png b/src/icons/48x48/ActCycle.png
index 6c75f9b..9cd1cdd 100644
Binary files a/src/icons/48x48/ActCycle.png and b/src/icons/48x48/ActCycle.png differ
diff --git a/src/icons/48x48/ActFoot.png b/src/icons/48x48/ActFoot.png
index 47fb5ed..3a0b9db 100644
Binary files a/src/icons/48x48/ActFoot.png and b/src/icons/48x48/ActFoot.png differ
diff --git a/src/icons/48x48/ActNone.png b/src/icons/48x48/ActNone.png
index be50d5f..277f4a2 100644
Binary files a/src/icons/48x48/ActNone.png and b/src/icons/48x48/ActNone.png differ
diff --git a/src/icons/48x48/ActShip.png b/src/icons/48x48/ActShip.png
index 21bf86e..cbc673d 100644
Binary files a/src/icons/48x48/ActShip.png and b/src/icons/48x48/ActShip.png differ
diff --git a/src/icons/48x48/ActSki.png b/src/icons/48x48/ActSki.png
new file mode 100644
index 0000000..9377703
Binary files /dev/null and b/src/icons/48x48/ActSki.png differ
diff --git a/src/icons/48x48/ActSwim.png b/src/icons/48x48/ActSwim.png
index 445ba31..777c8ef 100644
Binary files a/src/icons/48x48/ActSwim.png and b/src/icons/48x48/ActSwim.png differ
diff --git a/src/icons/48x48/Activity.png b/src/icons/48x48/Activity.png
index 042ccee..4f4aa1d 100644
Binary files a/src/icons/48x48/Activity.png and b/src/icons/48x48/Activity.png differ
diff --git a/src/icons/48x48/Add.png b/src/icons/48x48/Add.png
index d3e2dc2..be6782c 100644
Binary files a/src/icons/48x48/Add.png and b/src/icons/48x48/Add.png differ
diff --git a/src/icons/48x48/AddArea.png b/src/icons/48x48/AddArea.png
index 587175f..e9adbb9 100644
Binary files a/src/icons/48x48/AddArea.png and b/src/icons/48x48/AddArea.png differ
diff --git a/src/icons/48x48/AddImage.png b/src/icons/48x48/AddImage.png
index 68b12b4..673854b 100644
Binary files a/src/icons/48x48/AddImage.png and b/src/icons/48x48/AddImage.png differ
diff --git a/src/icons/48x48/AddMapWorkspace.png b/src/icons/48x48/AddMapWorkspace.png
index 6b69f53..2e3dbd3 100644
Binary files a/src/icons/48x48/AddMapWorkspace.png and b/src/icons/48x48/AddMapWorkspace.png differ
diff --git a/src/icons/48x48/AddProject.png b/src/icons/48x48/AddProject.png
index 4420466..960a09f 100644
Binary files a/src/icons/48x48/AddProject.png and b/src/icons/48x48/AddProject.png differ
diff --git a/src/icons/48x48/AddRte.png b/src/icons/48x48/AddRte.png
index f32394f..e126abb 100644
Binary files a/src/icons/48x48/AddRte.png and b/src/icons/48x48/AddRte.png differ
diff --git a/src/icons/48x48/AddTrk.png b/src/icons/48x48/AddTrk.png
index 047dd97..6edc554 100644
Binary files a/src/icons/48x48/AddTrk.png and b/src/icons/48x48/AddTrk.png differ
diff --git a/src/icons/48x48/AddWpt.png b/src/icons/48x48/AddWpt.png
index 34aed72..1ee275c 100644
Binary files a/src/icons/48x48/AddWpt.png and b/src/icons/48x48/AddWpt.png differ
diff --git a/src/icons/48x48/Apply.png b/src/icons/48x48/Apply.png
index 11cbe09..3e87649 100644
Binary files a/src/icons/48x48/Apply.png and b/src/icons/48x48/Apply.png differ
diff --git a/src/icons/48x48/Area.png b/src/icons/48x48/Area.png
index 782057a..743bcad 100644
Binary files a/src/icons/48x48/Area.png and b/src/icons/48x48/Area.png differ
diff --git a/src/icons/48x48/AreaMove.png b/src/icons/48x48/AreaMove.png
index 2a81bc9..3d831a0 100644
Binary files a/src/icons/48x48/AreaMove.png and b/src/icons/48x48/AreaMove.png differ
diff --git a/src/icons/48x48/ArrowDef.png b/src/icons/48x48/ArrowDef.png
new file mode 100644
index 0000000..f8dbb99
Binary files /dev/null and b/src/icons/48x48/ArrowDef.png differ
diff --git a/src/icons/48x48/ArrowUser.png b/src/icons/48x48/ArrowUser.png
new file mode 100644
index 0000000..bd14003
Binary files /dev/null and b/src/icons/48x48/ArrowUser.png differ
diff --git a/src/icons/48x48/Bubble.png b/src/icons/48x48/Bubble.png
index 42a3fa4..9b3fd76 100644
Binary files a/src/icons/48x48/Bubble.png and b/src/icons/48x48/Bubble.png differ
diff --git a/src/icons/48x48/CSrcATemp.png b/src/icons/48x48/CSrcATemp.png
index c8d090b..15f1ecb 100644
Binary files a/src/icons/48x48/CSrcATemp.png and b/src/icons/48x48/CSrcATemp.png differ
diff --git a/src/icons/48x48/CSrcAccel.png b/src/icons/48x48/CSrcAccel.png
new file mode 100644
index 0000000..42fefd3
Binary files /dev/null and b/src/icons/48x48/CSrcAccel.png differ
diff --git a/src/icons/48x48/CSrcCourse.png b/src/icons/48x48/CSrcCourse.png
new file mode 100644
index 0000000..91455dd
Binary files /dev/null and b/src/icons/48x48/CSrcCourse.png differ
diff --git a/src/icons/48x48/CSrcUnknown.png b/src/icons/48x48/CSrcUnknown.png
index 58d47d0..f562645 100644
Binary files a/src/icons/48x48/CSrcUnknown.png and b/src/icons/48x48/CSrcUnknown.png differ
diff --git a/src/icons/48x48/CSrcWTemp.png b/src/icons/48x48/CSrcWTemp.png
index 68daa1d..f25bf91 100644
Binary files a/src/icons/48x48/CSrcWTemp.png and b/src/icons/48x48/CSrcWTemp.png differ
diff --git a/src/icons/48x48/Cancel.png b/src/icons/48x48/Cancel.png
index 2919974..a24e8b9 100644
Binary files a/src/icons/48x48/Cancel.png and b/src/icons/48x48/Cancel.png differ
diff --git a/src/icons/48x48/Check.png b/src/icons/48x48/Check.png
index 0b719cc..d2f0798 100644
Binary files a/src/icons/48x48/Check.png and b/src/icons/48x48/Check.png differ
diff --git a/src/icons/48x48/CloneMapWorkspace.png b/src/icons/48x48/CloneMapWorkspace.png
index d1c4f7e..c114356 100644
Binary files a/src/icons/48x48/CloneMapWorkspace.png and b/src/icons/48x48/CloneMapWorkspace.png differ
diff --git a/src/icons/48x48/Close.png b/src/icons/48x48/Close.png
index c0c769f..24f9bac 100644
Binary files a/src/icons/48x48/Close.png and b/src/icons/48x48/Close.png differ
diff --git a/src/icons/48x48/Combine.png b/src/icons/48x48/Combine.png
index b8f0991..6f0ca2d 100644
Binary files a/src/icons/48x48/Combine.png and b/src/icons/48x48/Combine.png differ
diff --git a/src/icons/48x48/Copy.png b/src/icons/48x48/Copy.png
index e93e024..b44fa21 100644
Binary files a/src/icons/48x48/Copy.png and b/src/icons/48x48/Copy.png differ
diff --git a/src/icons/48x48/Cut.png b/src/icons/48x48/Cut.png
index bd84fb4..c224eca 100644
Binary files a/src/icons/48x48/Cut.png and b/src/icons/48x48/Cut.png differ
diff --git a/src/icons/48x48/CutHistory.png b/src/icons/48x48/CutHistory.png
index 1d07549..8a9a6d3 100644
Binary files a/src/icons/48x48/CutHistory.png and b/src/icons/48x48/CutHistory.png differ
diff --git a/src/icons/48x48/DBProject.png b/src/icons/48x48/DBProject.png
index 4f9edfb..ffbd06a 100644
Binary files a/src/icons/48x48/DBProject.png and b/src/icons/48x48/DBProject.png differ
diff --git a/src/icons/48x48/Database.png b/src/icons/48x48/Database.png
index b418ae1..009b81e 100644
Binary files a/src/icons/48x48/Database.png and b/src/icons/48x48/Database.png differ
diff --git a/src/icons/48x48/DatabaseConvert.png b/src/icons/48x48/DatabaseConvert.png
index 738d412..70d6204 100644
Binary files a/src/icons/48x48/DatabaseConvert.png and b/src/icons/48x48/DatabaseConvert.png differ
diff --git a/src/icons/48x48/DatabaseSetup.png b/src/icons/48x48/DatabaseSetup.png
index 59bdc1e..70395b0 100644
Binary files a/src/icons/48x48/DatabaseSetup.png and b/src/icons/48x48/DatabaseSetup.png differ
diff --git a/src/icons/48x48/DatabaseSync.png b/src/icons/48x48/DatabaseSync.png
new file mode 100644
index 0000000..455c504
Binary files /dev/null and b/src/icons/48x48/DatabaseSync.png differ
diff --git a/src/icons/48x48/DelImage.png b/src/icons/48x48/DelImage.png
index dd6504e..da41fee 100644
Binary files a/src/icons/48x48/DelImage.png and b/src/icons/48x48/DelImage.png differ
diff --git a/src/icons/48x48/DeleteMultiple.png b/src/icons/48x48/DeleteMultiple.png
index 3c6537b..d52deb6 100644
Binary files a/src/icons/48x48/DeleteMultiple.png and b/src/icons/48x48/DeleteMultiple.png differ
diff --git a/src/icons/48x48/DeleteOne.png b/src/icons/48x48/DeleteOne.png
index 9460597..77160db 100644
Binary files a/src/icons/48x48/DeleteOne.png and b/src/icons/48x48/DeleteOne.png differ
diff --git a/src/icons/48x48/Device.png b/src/icons/48x48/Device.png
index 1b9e940..95173cc 100644
Binary files a/src/icons/48x48/Device.png and b/src/icons/48x48/Device.png differ
diff --git a/src/icons/48x48/Down.png b/src/icons/48x48/Down.png
index 12754f0..98898c1 100644
Binary files a/src/icons/48x48/Down.png and b/src/icons/48x48/Down.png differ
diff --git a/src/icons/48x48/EditDetails.png b/src/icons/48x48/EditDetails.png
index 96f926f..6bf4304 100644
Binary files a/src/icons/48x48/EditDetails.png and b/src/icons/48x48/EditDetails.png differ
diff --git a/src/icons/48x48/EditText.png b/src/icons/48x48/EditText.png
index 98bb018..cf38b39 100644
Binary files a/src/icons/48x48/EditText.png and b/src/icons/48x48/EditText.png differ
diff --git a/src/icons/48x48/Empty.png b/src/icons/48x48/Empty.png
index 50bc1cd..5e1d1ee 100644
Binary files a/src/icons/48x48/Empty.png and b/src/icons/48x48/Empty.png differ
diff --git a/src/icons/48x48/Error.png b/src/icons/48x48/Error.png
index 15de217..979d275 100644
Binary files a/src/icons/48x48/Error.png and b/src/icons/48x48/Error.png differ
diff --git a/src/icons/48x48/FilterModifyExtension.png b/src/icons/48x48/FilterModifyExtension.png
new file mode 100644
index 0000000..1925b3f
Binary files /dev/null and b/src/icons/48x48/FilterModifyExtension.png differ
diff --git a/src/icons/48x48/FitProject.png b/src/icons/48x48/FitProject.png
new file mode 100644
index 0000000..bd98150
Binary files /dev/null and b/src/icons/48x48/FitProject.png differ
diff --git a/src/icons/48x48/FolderDEM.png b/src/icons/48x48/FolderDEM.png
index 9bfbc93..7084e74 100644
Binary files a/src/icons/48x48/FolderDEM.png and b/src/icons/48x48/FolderDEM.png differ
diff --git a/src/icons/48x48/FolderMap.png b/src/icons/48x48/FolderMap.png
index c5043a1..7c89083 100644
Binary files a/src/icons/48x48/FolderMap.png and b/src/icons/48x48/FolderMap.png differ
diff --git a/src/icons/48x48/Font.png b/src/icons/48x48/Font.png
index d3c73d5..6166cf4 100644
Binary files a/src/icons/48x48/Font.png and b/src/icons/48x48/Font.png differ
diff --git a/src/icons/48x48/FromMap.png b/src/icons/48x48/FromMap.png
index 1519a99..e41d44a 100644
Binary files a/src/icons/48x48/FromMap.png and b/src/icons/48x48/FromMap.png differ
diff --git a/src/icons/48x48/GpxProject.png b/src/icons/48x48/GpxProject.png
index f59d436..e08b06a 100644
Binary files a/src/icons/48x48/GpxProject.png and b/src/icons/48x48/GpxProject.png differ
diff --git a/src/icons/48x48/Grid.png b/src/icons/48x48/Grid.png
index 6e780f8..a8f5148 100644
Binary files a/src/icons/48x48/Grid.png and b/src/icons/48x48/Grid.png differ
diff --git a/src/icons/48x48/GridSetup.png b/src/icons/48x48/GridSetup.png
index a0f502a..1cfee32 100644
Binary files a/src/icons/48x48/GridSetup.png and b/src/icons/48x48/GridSetup.png differ
diff --git a/src/icons/48x48/GridWizzard.png b/src/icons/48x48/GridWizzard.png
index e699fd9..372e10c 100644
Binary files a/src/icons/48x48/GridWizzard.png and b/src/icons/48x48/GridWizzard.png differ
diff --git a/src/icons/48x48/Help.png b/src/icons/48x48/Help.png
index 667beed..e486aff 100644
Binary files a/src/icons/48x48/Help.png and b/src/icons/48x48/Help.png differ
diff --git a/src/icons/48x48/Image.png b/src/icons/48x48/Image.png
index 745eb08..a464d4f 100644
Binary files a/src/icons/48x48/Image.png and b/src/icons/48x48/Image.png differ
diff --git a/src/icons/48x48/Info.png b/src/icons/48x48/Info.png
index 84c7e33..b7507c0 100644
Binary files a/src/icons/48x48/Info.png and b/src/icons/48x48/Info.png differ
diff --git a/src/icons/48x48/Left.png b/src/icons/48x48/Left.png
index 414e372..91f04b9 100644
Binary files a/src/icons/48x48/Left.png and b/src/icons/48x48/Left.png differ
diff --git a/src/icons/48x48/Limit.png b/src/icons/48x48/Limit.png
new file mode 100644
index 0000000..e24d7d6
Binary files /dev/null and b/src/icons/48x48/Limit.png differ
diff --git a/src/icons/48x48/LimitMax.png b/src/icons/48x48/LimitMax.png
new file mode 100644
index 0000000..fbab800
Binary files /dev/null and b/src/icons/48x48/LimitMax.png differ
diff --git a/src/icons/48x48/LimitMin.png b/src/icons/48x48/LimitMin.png
new file mode 100644
index 0000000..741ac8d
Binary files /dev/null and b/src/icons/48x48/LimitMin.png differ
diff --git a/src/icons/48x48/LimitSys.png b/src/icons/48x48/LimitSys.png
new file mode 100644
index 0000000..cdcb38e
Binary files /dev/null and b/src/icons/48x48/LimitSys.png differ
diff --git a/src/icons/48x48/LimitUsr.png b/src/icons/48x48/LimitUsr.png
new file mode 100644
index 0000000..2a9f80c
Binary files /dev/null and b/src/icons/48x48/LimitUsr.png differ
diff --git a/src/icons/48x48/LineMove.png b/src/icons/48x48/LineMove.png
index d1b2866..166b007 100644
Binary files a/src/icons/48x48/LineMove.png and b/src/icons/48x48/LineMove.png differ
diff --git a/src/icons/48x48/LineWidthDef.png b/src/icons/48x48/LineWidthDef.png
new file mode 100644
index 0000000..457532b
Binary files /dev/null and b/src/icons/48x48/LineWidthDef.png differ
diff --git a/src/icons/48x48/LineWidthUser.png b/src/icons/48x48/LineWidthUser.png
new file mode 100644
index 0000000..f6dc0b3
Binary files /dev/null and b/src/icons/48x48/LineWidthUser.png differ
diff --git a/src/icons/48x48/Link.png b/src/icons/48x48/Link.png
index 80d036d..777d04b 100644
Binary files a/src/icons/48x48/Link.png and b/src/icons/48x48/Link.png differ
diff --git a/src/icons/48x48/LoadGIS.png b/src/icons/48x48/LoadGIS.png
index 1abff07..b539495 100644
Binary files a/src/icons/48x48/LoadGIS.png and b/src/icons/48x48/LoadGIS.png differ
diff --git a/src/icons/48x48/LoadView.png b/src/icons/48x48/LoadView.png
index 2de51df..3ad6a3b 100644
Binary files a/src/icons/48x48/LoadView.png and b/src/icons/48x48/LoadView.png differ
diff --git a/src/icons/48x48/Lock.png b/src/icons/48x48/Lock.png
index 7f46dd8..0fb158e 100644
Binary files a/src/icons/48x48/Lock.png and b/src/icons/48x48/Lock.png differ
diff --git a/src/icons/48x48/Map.png b/src/icons/48x48/Map.png
index f0d8c9e..be18400 100644
Binary files a/src/icons/48x48/Map.png and b/src/icons/48x48/Map.png differ
diff --git a/src/icons/48x48/MimeDemVRT.png b/src/icons/48x48/MimeDemVRT.png
index ef225ba..5244086 100644
Binary files a/src/icons/48x48/MimeDemVRT.png and b/src/icons/48x48/MimeDemVRT.png differ
diff --git a/src/icons/48x48/MimeGEMF.png b/src/icons/48x48/MimeGEMF.png
new file mode 100644
index 0000000..50776ed
Binary files /dev/null and b/src/icons/48x48/MimeGEMF.png differ
diff --git a/src/icons/48x48/MimeIMG.png b/src/icons/48x48/MimeIMG.png
index 3c41eff..773bcf8 100644
Binary files a/src/icons/48x48/MimeIMG.png and b/src/icons/48x48/MimeIMG.png differ
diff --git a/src/icons/48x48/MimeJNX.png b/src/icons/48x48/MimeJNX.png
index a1bcb26..917b0d5 100644
Binary files a/src/icons/48x48/MimeJNX.png and b/src/icons/48x48/MimeJNX.png differ
diff --git a/src/icons/48x48/MimeMAP.png b/src/icons/48x48/MimeMAP.png
index 978c799..f7c330d 100644
Binary files a/src/icons/48x48/MimeMAP.png and b/src/icons/48x48/MimeMAP.png differ
diff --git a/src/icons/48x48/MimeRMAP.png b/src/icons/48x48/MimeRMAP.png
index 732cf3a..992fdbf 100644
Binary files a/src/icons/48x48/MimeRMAP.png and b/src/icons/48x48/MimeRMAP.png differ
diff --git a/src/icons/48x48/MimeTMS.png b/src/icons/48x48/MimeTMS.png
index ab8f954..127f098 100644
Binary files a/src/icons/48x48/MimeTMS.png and b/src/icons/48x48/MimeTMS.png differ
diff --git a/src/icons/48x48/MimeVRT.png b/src/icons/48x48/MimeVRT.png
index 2e2edd1..5d8fed2 100644
Binary files a/src/icons/48x48/MimeVRT.png and b/src/icons/48x48/MimeVRT.png differ
diff --git a/src/icons/48x48/MimeWMTS.png b/src/icons/48x48/MimeWMTS.png
index 0c600ac..7d45a2d 100644
Binary files a/src/icons/48x48/MimeWMTS.png and b/src/icons/48x48/MimeWMTS.png differ
diff --git a/src/icons/48x48/MouseWheel.png b/src/icons/48x48/MouseWheel.png
index 0d4f6b0..2d911ec 100644
Binary files a/src/icons/48x48/MouseWheel.png and b/src/icons/48x48/MouseWheel.png differ
diff --git a/src/icons/48x48/Move.png b/src/icons/48x48/Move.png
index 30fe97e..b89baee 100644
Binary files a/src/icons/48x48/Move.png and b/src/icons/48x48/Move.png differ
diff --git a/src/icons/48x48/MoveArrow.png b/src/icons/48x48/MoveArrow.png
index 7155a01..e92c748 100644
Binary files a/src/icons/48x48/MoveArrow.png and b/src/icons/48x48/MoveArrow.png differ
diff --git a/src/icons/48x48/MySQL.png b/src/icons/48x48/MySQL.png
new file mode 100644
index 0000000..673b101
Binary files /dev/null and b/src/icons/48x48/MySQL.png differ
diff --git a/src/icons/48x48/MySQLNoConn.png b/src/icons/48x48/MySQLNoConn.png
new file mode 100644
index 0000000..fb40a92
Binary files /dev/null and b/src/icons/48x48/MySQLNoConn.png differ
diff --git a/src/icons/48x48/NightDay.png b/src/icons/48x48/NightDay.png
index 0b02f6f..95d45f5 100644
Binary files a/src/icons/48x48/NightDay.png and b/src/icons/48x48/NightDay.png differ
diff --git a/src/icons/48x48/NoFix.png b/src/icons/48x48/NoFix.png
index 9ce1776..c2cfb36 100644
Binary files a/src/icons/48x48/NoFix.png and b/src/icons/48x48/NoFix.png differ
diff --git a/src/icons/48x48/NoGo.png b/src/icons/48x48/NoGo.png
index ce6ee19..efc3c05 100644
Binary files a/src/icons/48x48/NoGo.png and b/src/icons/48x48/NoGo.png differ
diff --git a/src/icons/48x48/O.png b/src/icons/48x48/O.png
index ec2b4c6..ed2279d 100644
Binary files a/src/icons/48x48/O.png and b/src/icons/48x48/O.png differ
diff --git a/src/icons/48x48/Off.png b/src/icons/48x48/Off.png
index e6befe1..58f6e25 100644
Binary files a/src/icons/48x48/Off.png and b/src/icons/48x48/Off.png differ
diff --git a/src/icons/48x48/Opacity.png b/src/icons/48x48/Opacity.png
index 3558441..9970b23 100644
Binary files a/src/icons/48x48/Opacity.png and b/src/icons/48x48/Opacity.png differ
diff --git a/src/icons/48x48/POIText.png b/src/icons/48x48/POIText.png
index a6098a6..b749554 100644
Binary files a/src/icons/48x48/POIText.png and b/src/icons/48x48/POIText.png differ
diff --git a/src/icons/48x48/Paste.png b/src/icons/48x48/Paste.png
index ef15ebe..127fdf3 100644
Binary files a/src/icons/48x48/Paste.png and b/src/icons/48x48/Paste.png differ
diff --git a/src/icons/48x48/PathBlue.png b/src/icons/48x48/PathBlue.png
index dbe6313..bdf4ecf 100644
Binary files a/src/icons/48x48/PathBlue.png and b/src/icons/48x48/PathBlue.png differ
diff --git a/src/icons/48x48/PathGreen.png b/src/icons/48x48/PathGreen.png
index 806420b..5894611 100644
Binary files a/src/icons/48x48/PathGreen.png and b/src/icons/48x48/PathGreen.png differ
diff --git a/src/icons/48x48/PathOrange.png b/src/icons/48x48/PathOrange.png
index d66803d..6e151ad 100644
Binary files a/src/icons/48x48/PathOrange.png and b/src/icons/48x48/PathOrange.png differ
diff --git a/src/icons/48x48/Pattern.png b/src/icons/48x48/Pattern.png
index 6518afd..81dba4b 100644
Binary files a/src/icons/48x48/Pattern.png and b/src/icons/48x48/Pattern.png differ
diff --git a/src/icons/48x48/PointHide.png b/src/icons/48x48/PointHide.png
index b97ad53..4bd1a88 100644
Binary files a/src/icons/48x48/PointHide.png and b/src/icons/48x48/PointHide.png differ
diff --git a/src/icons/48x48/PointMove.png b/src/icons/48x48/PointMove.png
index efc0615..b88a4d5 100644
Binary files a/src/icons/48x48/PointMove.png and b/src/icons/48x48/PointMove.png differ
diff --git a/src/icons/48x48/PointShow.png b/src/icons/48x48/PointShow.png
index 197892a..d582237 100644
Binary files a/src/icons/48x48/PointShow.png and b/src/icons/48x48/PointShow.png differ
diff --git a/src/icons/48x48/Print.png b/src/icons/48x48/Print.png
index 662e0d5..1935a93 100644
Binary files a/src/icons/48x48/Print.png and b/src/icons/48x48/Print.png differ
diff --git a/src/icons/48x48/PrintSave.png b/src/icons/48x48/PrintSave.png
index efb7516..dfddc9d 100644
Binary files a/src/icons/48x48/PrintSave.png and b/src/icons/48x48/PrintSave.png differ
diff --git a/src/icons/48x48/ProfileToWindow.png b/src/icons/48x48/ProfileToWindow.png
index 62e53d0..c4d375b 100644
Binary files a/src/icons/48x48/ProfileToWindow.png and b/src/icons/48x48/ProfileToWindow.png differ
diff --git a/src/icons/48x48/Progress.png b/src/icons/48x48/Progress.png
index e676703..31c8588 100644
Binary files a/src/icons/48x48/Progress.png and b/src/icons/48x48/Progress.png differ
diff --git a/src/icons/48x48/QMapShack.png b/src/icons/48x48/QMapShack.png
index c5043a1..ff8b396 100644
Binary files a/src/icons/48x48/QMapShack.png and b/src/icons/48x48/QMapShack.png differ
diff --git a/src/icons/48x48/QmsProject.png b/src/icons/48x48/QmsProject.png
index b580137..6589a99 100644
Binary files a/src/icons/48x48/QmsProject.png and b/src/icons/48x48/QmsProject.png differ
diff --git a/src/icons/48x48/Redo.png b/src/icons/48x48/Redo.png
index 48f1d77..f9ea519 100644
Binary files a/src/icons/48x48/Redo.png and b/src/icons/48x48/Redo.png differ
diff --git a/src/icons/48x48/ReloadImage.png b/src/icons/48x48/ReloadImage.png
index d0b58ce..5fab7e3 100644
Binary files a/src/icons/48x48/ReloadImage.png and b/src/icons/48x48/ReloadImage.png differ
diff --git a/src/icons/48x48/Reset.png b/src/icons/48x48/Reset.png
index 8f94c11..ba052b8 100644
Binary files a/src/icons/48x48/Reset.png and b/src/icons/48x48/Reset.png differ
diff --git a/src/icons/48x48/Reverse.png b/src/icons/48x48/Reverse.png
index 58b0228..5413296 100644
Binary files a/src/icons/48x48/Reverse.png and b/src/icons/48x48/Reverse.png differ
diff --git a/src/icons/48x48/Right.png b/src/icons/48x48/Right.png
index a9fbfbe..8088b71 100644
Binary files a/src/icons/48x48/Right.png and b/src/icons/48x48/Right.png differ
diff --git a/src/icons/48x48/Route.png b/src/icons/48x48/Route.png
index ff58892..13a7ad0 100644
Binary files a/src/icons/48x48/Route.png and b/src/icons/48x48/Route.png differ
diff --git a/src/icons/48x48/RouteSetup.png b/src/icons/48x48/RouteSetup.png
index ea63ee0..df55cea 100644
Binary files a/src/icons/48x48/RouteSetup.png and b/src/icons/48x48/RouteSetup.png differ
diff --git a/src/icons/48x48/RteInstr.png b/src/icons/48x48/RteInstr.png
index 83f007a..5a9e238 100644
Binary files a/src/icons/48x48/RteInstr.png and b/src/icons/48x48/RteInstr.png differ
diff --git a/src/icons/48x48/SQLite.png b/src/icons/48x48/SQLite.png
new file mode 100644
index 0000000..106a43a
Binary files /dev/null and b/src/icons/48x48/SQLite.png differ
diff --git a/src/icons/48x48/Save.png b/src/icons/48x48/Save.png
index 5d2b74d..56cb33d 100644
Binary files a/src/icons/48x48/Save.png and b/src/icons/48x48/Save.png differ
diff --git a/src/icons/48x48/SaveAllGIS.png b/src/icons/48x48/SaveAllGIS.png
index 968a3eb..582e21a 100644
Binary files a/src/icons/48x48/SaveAllGIS.png and b/src/icons/48x48/SaveAllGIS.png differ
diff --git a/src/icons/48x48/SaveGIS.png b/src/icons/48x48/SaveGIS.png
index 968a3eb..582e21a 100644
Binary files a/src/icons/48x48/SaveGIS.png and b/src/icons/48x48/SaveGIS.png differ
diff --git a/src/icons/48x48/SaveGISAs.png b/src/icons/48x48/SaveGISAs.png
index 4728b48..28db3f7 100644
Binary files a/src/icons/48x48/SaveGISAs.png and b/src/icons/48x48/SaveGISAs.png differ
diff --git a/src/icons/48x48/SaveView.png b/src/icons/48x48/SaveView.png
index f1007de..f76f4c3 100644
Binary files a/src/icons/48x48/SaveView.png and b/src/icons/48x48/SaveView.png differ
diff --git a/src/icons/48x48/Scale.png b/src/icons/48x48/Scale.png
index da00a09..2c8f476 100644
Binary files a/src/icons/48x48/Scale.png and b/src/icons/48x48/Scale.png differ
diff --git a/src/icons/48x48/SearchGoogle.png b/src/icons/48x48/SearchGoogle.png
index 4dff3ad..420d42b 100644
Binary files a/src/icons/48x48/SearchGoogle.png and b/src/icons/48x48/SearchGoogle.png differ
diff --git a/src/icons/48x48/SelectColor.png b/src/icons/48x48/SelectColor.png
index a6cf6e3..8a8081c 100644
Binary files a/src/icons/48x48/SelectColor.png and b/src/icons/48x48/SelectColor.png differ
diff --git a/src/icons/48x48/SelectRange.png b/src/icons/48x48/SelectRange.png
index e4ede1e..9f7a9a0 100644
Binary files a/src/icons/48x48/SelectRange.png and b/src/icons/48x48/SelectRange.png differ
diff --git a/src/icons/48x48/SetEle.png b/src/icons/48x48/SetEle.png
index b53eade..fe36a9f 100644
Binary files a/src/icons/48x48/SetEle.png and b/src/icons/48x48/SetEle.png differ
diff --git a/src/icons/48x48/SetupCoordFormat.png b/src/icons/48x48/SetupCoordFormat.png
index ccd52ed..6190eee 100644
Binary files a/src/icons/48x48/SetupCoordFormat.png and b/src/icons/48x48/SetupCoordFormat.png differ
diff --git a/src/icons/48x48/SetupMapWorkspace.png b/src/icons/48x48/SetupMapWorkspace.png
index 5cf14bd..2372748 100644
Binary files a/src/icons/48x48/SetupMapWorkspace.png and b/src/icons/48x48/SetupMapWorkspace.png differ
diff --git a/src/icons/48x48/SetupWptSym.png b/src/icons/48x48/SetupWptSym.png
new file mode 100644
index 0000000..e9e82f0
Binary files /dev/null and b/src/icons/48x48/SetupWptSym.png differ
diff --git a/src/icons/48x48/SizeArrow.png b/src/icons/48x48/SizeArrow.png
index 2fb19fb..ad944ae 100644
Binary files a/src/icons/48x48/SizeArrow.png and b/src/icons/48x48/SizeArrow.png differ
diff --git a/src/icons/48x48/SlfProject.png b/src/icons/48x48/SlfProject.png
new file mode 100644
index 0000000..1773755
Binary files /dev/null and b/src/icons/48x48/SlfProject.png differ
diff --git a/src/icons/48x48/Start.png b/src/icons/48x48/Start.png
index f837815..a0f1155 100644
Binary files a/src/icons/48x48/Start.png and b/src/icons/48x48/Start.png differ
diff --git a/src/icons/48x48/Tainted.png b/src/icons/48x48/Tainted.png
index 3184b25..746b0f8 100644
Binary files a/src/icons/48x48/Tainted.png and b/src/icons/48x48/Tainted.png differ
diff --git a/src/icons/48x48/TextBold.png b/src/icons/48x48/TextBold.png
index 491d97b..e1beb39 100644
Binary files a/src/icons/48x48/TextBold.png and b/src/icons/48x48/TextBold.png differ
diff --git a/src/icons/48x48/TextCenter.png b/src/icons/48x48/TextCenter.png
index 13152e9..70c28f0 100644
Binary files a/src/icons/48x48/TextCenter.png and b/src/icons/48x48/TextCenter.png differ
diff --git a/src/icons/48x48/TextItalic.png b/src/icons/48x48/TextItalic.png
index cf76e08..a708451 100644
Binary files a/src/icons/48x48/TextItalic.png and b/src/icons/48x48/TextItalic.png differ
diff --git a/src/icons/48x48/TextJustified.png b/src/icons/48x48/TextJustified.png
index c1a6828..3a5379f 100644
Binary files a/src/icons/48x48/TextJustified.png and b/src/icons/48x48/TextJustified.png differ
diff --git a/src/icons/48x48/TextLeft.png b/src/icons/48x48/TextLeft.png
index 3bbc01a..149677e 100644
Binary files a/src/icons/48x48/TextLeft.png and b/src/icons/48x48/TextLeft.png differ
diff --git a/src/icons/48x48/TextRight.png b/src/icons/48x48/TextRight.png
index 983c748..2d2d258 100644
Binary files a/src/icons/48x48/TextRight.png and b/src/icons/48x48/TextRight.png differ
diff --git a/src/icons/48x48/TextUnderlined.png b/src/icons/48x48/TextUnderlined.png
index 8f321f1..c9d9d9d 100644
Binary files a/src/icons/48x48/TextUnderlined.png and b/src/icons/48x48/TextUnderlined.png differ
diff --git a/src/icons/48x48/Time.png b/src/icons/48x48/Time.png
index 184ab3a..17f0a63 100644
Binary files a/src/icons/48x48/Time.png and b/src/icons/48x48/Time.png differ
diff --git a/src/icons/48x48/TimeZoneSetup.png b/src/icons/48x48/TimeZoneSetup.png
index fefcf7c..6098fed 100644
Binary files a/src/icons/48x48/TimeZoneSetup.png and b/src/icons/48x48/TimeZoneSetup.png differ
diff --git a/src/icons/48x48/ToBottom.png b/src/icons/48x48/ToBottom.png
index 18f5c87..241319d 100644
Binary files a/src/icons/48x48/ToBottom.png and b/src/icons/48x48/ToBottom.png differ
diff --git a/src/icons/48x48/ToTop.png b/src/icons/48x48/ToTop.png
index 201c357..0f86578 100644
Binary files a/src/icons/48x48/ToTop.png and b/src/icons/48x48/ToTop.png differ
diff --git a/src/icons/48x48/ToolTip.png b/src/icons/48x48/ToolTip.png
index 1b00297..7527547 100644
Binary files a/src/icons/48x48/ToolTip.png and b/src/icons/48x48/ToolTip.png differ
diff --git a/src/icons/48x48/Track.png b/src/icons/48x48/Track.png
index e1adc49..0317234 100644
Binary files a/src/icons/48x48/Track.png and b/src/icons/48x48/Track.png differ
diff --git a/src/icons/48x48/TrkCut.png b/src/icons/48x48/TrkCut.png
index 2f2144e..7cfaa1d 100644
Binary files a/src/icons/48x48/TrkCut.png and b/src/icons/48x48/TrkCut.png differ
diff --git a/src/icons/48x48/TrkProfile.png b/src/icons/48x48/TrkProfile.png
index 910df33..6368bae 100644
Binary files a/src/icons/48x48/TrkProfile.png and b/src/icons/48x48/TrkProfile.png differ
diff --git a/src/icons/48x48/UnLock.png b/src/icons/48x48/UnLock.png
index 2f42de7..ee2c50a 100644
Binary files a/src/icons/48x48/UnLock.png and b/src/icons/48x48/UnLock.png differ
diff --git a/src/icons/48x48/Undo.png b/src/icons/48x48/Undo.png
index 539adb0..d737928 100644
Binary files a/src/icons/48x48/Undo.png and b/src/icons/48x48/Undo.png differ
diff --git a/src/icons/48x48/UnitSetup.png b/src/icons/48x48/UnitSetup.png
index ad28624..17ac21a 100644
Binary files a/src/icons/48x48/UnitSetup.png and b/src/icons/48x48/UnitSetup.png differ
diff --git a/src/icons/48x48/Up.png b/src/icons/48x48/Up.png
index 98d4fd7..29573e7 100644
Binary files a/src/icons/48x48/Up.png and b/src/icons/48x48/Up.png differ
diff --git a/src/icons/48x48/V.png b/src/icons/48x48/V.png
index 175f441..4942cb5 100644
Binary files a/src/icons/48x48/V.png and b/src/icons/48x48/V.png differ
diff --git a/src/icons/48x48/VrtBuilder.png b/src/icons/48x48/VrtBuilder.png
index 3db6b3a..d905237 100644
Binary files a/src/icons/48x48/VrtBuilder.png and b/src/icons/48x48/VrtBuilder.png differ
diff --git a/src/icons/48x48/WptMove.png b/src/icons/48x48/WptMove.png
index d1e33ae..3292c43 100644
Binary files a/src/icons/48x48/WptMove.png and b/src/icons/48x48/WptMove.png differ
diff --git a/src/icons/48x48/WptProj.png b/src/icons/48x48/WptProj.png
index ebf08ca..4367cae 100644
Binary files a/src/icons/48x48/WptProj.png and b/src/icons/48x48/WptProj.png differ
diff --git a/src/icons/48x48/WptProx.png b/src/icons/48x48/WptProx.png
index c168484..cdd3e9f 100644
Binary files a/src/icons/48x48/WptProx.png and b/src/icons/48x48/WptProx.png differ
diff --git a/src/icons/48x48/Zoom.png b/src/icons/48x48/Zoom.png
index 1eee317..0019280 100644
Binary files a/src/icons/48x48/Zoom.png and b/src/icons/48x48/Zoom.png differ
diff --git a/src/icons/ActSki.svg b/src/icons/ActSki.svg
new file mode 100644
index 0000000..b375a04
--- /dev/null
+++ b/src/icons/ActSki.svg
@@ -0,0 +1,105 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="ActFoot.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6"
+     inkscape:cx="8.1187644"
+     inkscape:cy="14.956729"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="985"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="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" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.3622)">
+    <rect
+       style="fill:none;stroke:none"
+       id="rect3792"
+       width="60"
+       height="60"
+       x="0"
+       y="988.61218" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 5,1017.3622 45,25 5,0"
+       id="path4160"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 20,1022.3622 15,-5 -15,-15"
+       id="path4162"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:9;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 21.25,1002.0051 26.428571,7.6785"
+       id="path4164"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:#000080;stroke:#000080;stroke-width:1.41372967;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+       id="path4166"
+       sodipodi:type="arc"
+       sodipodi:cx="52.946434"
+       sodipodi:cy="1011.1122"
+       sodipodi:rx="7.2038417"
+       sodipodi:ry="6.9359918"
+       sodipodi:start="3.1402313"
+       sodipodi:end="3.1371421"
+       sodipodi:open="true"
+       d="m 45.742599,1011.1216 a 7.2038417,6.9359918 0 0 1 7.188465,-6.9454 7.2038417,6.9359918 0 0 1 7.219181,6.9158 7.2038417,6.9359918 0 0 1 -7.177313,6.9561 7.2038417,6.9359918 0 0 1 -7.230268,-6.905" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 40,1007.3622 5,15 10,5"
+       id="path4168"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/src/icons/ArrowDef.svg b/src/icons/ArrowDef.svg
new file mode 100644
index 0000000..a800146
--- /dev/null
+++ b/src/icons/ArrowDef.svg
@@ -0,0 +1,95 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="ArrowDef.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="29.951133"
+     inkscape:cy="35.807015"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="985"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="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" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot3859"
+       style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:12px;line-height:125%;letter-spacing:0px;word-spacing:0px"><flowRegion
+         id="flowRegion3861"><rect
+           id="rect3863"
+           width="75.35714"
+           height="62.142857"
+           x="-9.4642859"
+           y="2.2142856" /></flowRegion><flowPara
+         id="flowPara3865" /></flowRoot>    <g
+       id="g4223"
+       transform="translate(0,1.4604098)">
+      <rect
+         y="991.49402"
+         x="2.6406245"
+         height="40"
+         width="40"
+         id="rect3769"
+         style="fill:none;stroke:none" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path6034-2-1"
+         d="m 15.403665,991.84734 -1.3484,0.0443 -0.3979,1.47959 0,0.1767 0.19895,1.2588 -1.87892,0.4638 -0.41998,-1.2146 -0.0662,-0.1325 -1.06103,-1.12626 -1.19366,0.57416 0.22103,1.5459 0.0885,0.1325 0.66313,1.0821 -1.52523,1.1926 -0.86209,-0.9275 -0.13266,-0.1105 -1.4368096,-0.5963 -0.86211,1.0159 0.86211,1.3251 0.11046,0.088 1.0610396,0.7067 -0.9062896,1.67837 -1.17158,-0.4638 -0.15468,-0.044 -1.52524,0.044 -0.39789,1.2809 1.3042,0.8393 0.15469,0.044 1.25998,0.2208 -0.1547,1.8993 -1. [...]
+         style="fill:#808080;stroke:#000000;stroke-width:0.70703268;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <path
+       style="fill:#000080;fill-rule:evenodd;stroke:#808080;stroke-width:1.18912518px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+       d="m 22.990626,1022.2659 8.549187,1.5449 1.544871,8.5492 8.961442,-19.0555 z"
+       id="path4221"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/src/icons/ArrowUser.svg b/src/icons/ArrowUser.svg
new file mode 100644
index 0000000..29893a7
--- /dev/null
+++ b/src/icons/ArrowUser.svg
@@ -0,0 +1,119 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="ArrowUser.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="29.951133"
+     inkscape:cy="35.807015"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="985"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="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" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot3859"
+       style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:12px;line-height:125%;letter-spacing:0px;word-spacing:0px"><flowRegion
+         id="flowRegion3861"><rect
+           id="rect3863"
+           width="75.35714"
+           height="62.142857"
+           x="-9.4642859"
+           y="2.2142856" /></flowRegion><flowPara
+         id="flowPara3865" /></flowRoot>    <g
+       id="g4245"
+       transform="translate(0,-3.4388454)">
+      <rect
+         y="992.95441"
+         x="2.6406245"
+         height="40"
+         width="40"
+         id="rect3769"
+         style="fill:none;stroke:none" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4221"
+         d="m 22.990626,1022.2659 8.549187,1.5449 1.544871,8.5492 8.961442,-19.0555 z"
+         style="fill:#000080;fill-rule:evenodd;stroke:#808080;stroke-width:1.18912518px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+    </g>
+    <g
+       id="g3856"
+       transform="translate(38.109855,962.98718)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3828"
+         d="m -23.809459,52.661657 -0.134742,-7.426612 5.927764,-16.286397 3.098624,-0.716586 1.91307,2.540693 -5.927764,16.286397 z"
+         style="fill:none;stroke:#ffffff;stroke-width:3.04031777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3026"
+         d="m -18.016437,28.948648 5.011694,1.824107 -5.927764,16.286397 -4.876952,5.602505 -0.134742,-7.426612 z"
+         style="fill:#00ff00;stroke:#008000;stroke-width:1.52015889px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3032"
+         d="m -23.809459,52.661657 -0.134742,-7.426612 3.098624,-0.716586 1.91307,2.540693 z"
+         style="fill:none;stroke:#000000;stroke-width:1.52015889px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3034"
+         d="m -15.51059,29.860701 -5.334987,14.657758"
+         style="fill:none;stroke:#008000;stroke-width:1.52015889px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3036"
+         d="m -18.016437,28.948648 3.098624,-0.716586 1.91307,2.540693 z"
+         style="fill:none;stroke:#008000;stroke-width:1.52015889px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/src/icons/CSrcAccel.svg b/src/icons/CSrcAccel.svg
new file mode 100644
index 0000000..9e07fa9
--- /dev/null
+++ b/src/icons/CSrcAccel.svg
@@ -0,0 +1,126 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="CSrcAccel.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Send"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Send"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4165"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000080;stroke-width:1pt;stroke-opacity:1;fill:#000080;fill-opacity:1"
+         transform="scale(0.2) rotate(180) translate(6,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4156"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000080;stroke-width:1pt;stroke-opacity:1;fill:#000080;fill-opacity:1"
+         transform="scale(0.4) translate(10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4150"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000080;stroke-width:1pt;stroke-opacity:1;fill:#000080;fill-opacity:1"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6"
+     inkscape:cx="55.387672"
+     inkscape:cy="32.295449"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1916"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="18"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="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" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <rect
+       style="opacity:1;fill:#000080;fill-opacity:0;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4142"
+       width="64"
+       height="64"
+       x="-0.0022321509"
+       y="988.36218"
+       ry="0" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:70px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000080;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;"
+       x="11.25"
+       y="1038.255"
+       id="text4186"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4188"
+         x="11.25"
+         y="1038.255">a</tspan></text>
+  </g>
+</svg>
diff --git a/src/icons/CSrcCourse.svg b/src/icons/CSrcCourse.svg
new file mode 100644
index 0000000..69ffc2c
--- /dev/null
+++ b/src/icons/CSrcCourse.svg
@@ -0,0 +1,388 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="CSrcCourse.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:isstock="true"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker5745"
+       inkscape:stockid="InfiniteLineEnd"
+       style="overflow:visible">
+      <g
+         style="fill:#000000;stroke:#000000;stroke-opacity:1;fill-opacity:1"
+         id="g5747">
+        <circle
+           style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+           cx="3"
+           cy="0"
+           r="0.8"
+           id="circle5749" />
+        <circle
+           style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+           cx="6.5"
+           cy="0"
+           r="0.8"
+           id="circle5751" />
+        <circle
+           style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+           cx="10"
+           cy="0"
+           r="0.8"
+           id="circle5753" />
+      </g>
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker5413"
+       inkscape:stockid="InfiniteLineEnd"
+       style="overflow:visible">
+      <g
+         style="fill:#000000;stroke:#000000;stroke-opacity:1;fill-opacity:1"
+         id="g5415">
+        <circle
+           style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+           cx="3"
+           cy="0"
+           r="0.8"
+           id="circle5417" />
+        <circle
+           style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+           cx="6.5"
+           cy="0"
+           r="0.8"
+           id="circle5419" />
+        <circle
+           style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+           cx="10"
+           cy="0"
+           r="0.8"
+           id="circle5421" />
+      </g>
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker5277"
+       inkscape:stockid="InfiniteLineEnd"
+       style="overflow:visible">
+      <g
+         style="fill:#000000;stroke:#000000;stroke-opacity:1;fill-opacity:1"
+         id="g5279">
+        <circle
+           style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+           cx="3"
+           cy="0"
+           r="0.8"
+           id="circle5281" />
+        <circle
+           style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+           cx="6.5"
+           cy="0"
+           r="0.8"
+           id="circle5283" />
+        <circle
+           style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+           cx="10"
+           cy="0"
+           r="0.8"
+           id="circle5285" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Tail"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Tail"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <g
+         id="g4297"
+         transform="scale(-1.2)"
+         style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1">
+        <path
+           id="path4299"
+           d="M -3.8048674,-3.9585227 L 0.54352094,0"
+           style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
+        <path
+           id="path4301"
+           d="M -1.2866832,-3.9585227 L 3.0617053,0"
+           style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
+        <path
+           id="path4303"
+           d="M 1.3053582,-3.9585227 L 5.6537466,0"
+           style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
+        <path
+           id="path4305"
+           d="M -3.8048674,4.1775838 L 0.54352094,0.21974226"
+           style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
+        <path
+           id="path4307"
+           d="M -1.2866832,4.1775838 L 3.0617053,0.21974226"
+           style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
+        <path
+           id="path4309"
+           d="M 1.3053582,4.1775838 L 5.6537466,0.21974226"
+           style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;stroke-linecap:round;stroke-opacity:1;fill-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       style="overflow:visible"
+       inkscape:stockid="InfiniteLineEnd"
+       id="InfiniteLineEnd"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:isstock="true">
+      <g
+         id="g4496"
+         style="fill:#000000;stroke:#000000;stroke-opacity:1;fill-opacity:1">
+        <circle
+           id="circle4498"
+           r="0.8"
+           cy="0"
+           cx="3"
+           style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" />
+        <circle
+           id="circle4500"
+           r="0.8"
+           cy="0"
+           cx="6.5"
+           style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" />
+        <circle
+           id="circle4502"
+           r="0.8"
+           cy="0"
+           cx="10"
+           style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Send"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Send"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4276"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.2) rotate(180) translate(6,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Sstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Sstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4273"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.2) translate(6,0)" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="marker5453"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Send">
+      <path
+         transform="scale(0.2) rotate(180) translate(6,0)"
+         style="fill-rule:evenodd;stroke:#000080;stroke-width:1pt;stroke-opacity:1;fill:#000080;fill-opacity:1"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path5455" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Send"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker5267"
+       style="overflow:visible;"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path5269"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000080;stroke-width:1pt;stroke-opacity:1;fill:#000080;fill-opacity:1"
+         transform="scale(0.2) rotate(180) translate(6,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Sstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker5203"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path5205"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000080;stroke-width:1pt;stroke-opacity:1;fill:#000080;fill-opacity:1"
+         transform="scale(0.2) translate(6,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4156"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.4) translate(10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4150"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000080;stroke-width:1pt;stroke-opacity:1;fill:#000080;fill-opacity:1"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.313708"
+     inkscape:cx="37.468567"
+     inkscape:cy="31.645582"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1916"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="18"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="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" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <rect
+       style="opacity:1;fill:#000080;fill-opacity:0;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4142"
+       width="58.395061"
+       height="57.932121"
+       x="5.7014542"
+       y="994.47675"
+       ry="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5267)"
+       d="m 60.191946,1014.5506 c 0,-13 -8.589286,-20.17863 -20.821429,-20.28573"
+       id="path5183"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:#000081;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 26.919109,1025.1851 5.126543,26.108 0.131445,-31.0609 z"
+       id="path4719"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccc" />
+    <path
+       style="fill:#000081;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 37.224551,1025.2656 26.264376,-5.103 -31.316686,0.073 z"
+       id="path4719-0"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccc" />
+    <path
+       style="fill:#000081;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 37.33973,1015.1225 -5.126543,-26.10783 0.01674,31.24023 z"
+       id="path4719-8"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccc" />
+    <path
+       style="fill:#000081;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 27.075072,1015.1017 -26.26437745,5.1029 31.36826145,-0.012 z"
+       id="path4719-8-0"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:1.02295041;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:3.20000005;stroke-dasharray:none;stroke-opacity:1"
+       d="m 32.170548,1051.4444 5.33481,-26.8893"
+       id="path4856"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:1.02295041;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:3.20000005;stroke-dasharray:none;stroke-opacity:1"
+       d="m 63.153654,1020.1432 -26.969277,-5.4219"
+       id="path4858"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:1.02295041;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:3.20000005;stroke-dasharray:none;stroke-opacity:1"
+       d="m 26.718432,1016.1269 5.478993,-26.96902"
+       id="path4860"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:1.02295041;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:3.20000005;stroke-dasharray:none;stroke-opacity:1"
+       d="M 27.972915,1025.5619 0.77962771,1020.2334"
+       id="path4862"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+  </g>
+</svg>
diff --git a/src/icons/DatabaseSync.svg b/src/icons/DatabaseSync.svg
new file mode 100644
index 0000000..66922cc
--- /dev/null
+++ b/src/icons/DatabaseSync.svg
@@ -0,0 +1,166 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg3376"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="DatabaseSync.svg">
+  <defs
+     id="defs3378" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11"
+     inkscape:cx="15.862319"
+     inkscape:cy="23.880871"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="981"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3010" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata3381">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       id="g4145"
+       transform="translate(3.7272608,1.0891519)">
+      <g
+         style="stroke-width:3.38945651;stroke-miterlimit:4;stroke-dasharray:none"
+         transform="matrix(0.71058554,0,0,0.75774157,8.7726785,6.0245905)"
+         id="g3856">
+        <path
+           sodipodi:type="arc"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:3.60437727;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="path3012-6"
+           sodipodi:cx="30"
+           sodipodi:cy="19"
+           sodipodi:rx="20"
+           sodipodi:ry="5"
+           d="m 47.741363,16.691808 a 20,5 0 0 1 -8.506645,6.743279 20,5 0 0 1 -26.974053,-2.125921 20,5 0 0 1 8.500722,-6.743746 20,5 0 0 1 26.975919,2.12444"
+           sodipodi:start="5.8033439"
+           sodipodi:end="5.8029047"
+           sodipodi:open="true"
+           transform="matrix(0.97628959,0,0,0.90577639,0.75264714,41.745822)" />
+        <rect
+           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+           id="rect3032"
+           width="40"
+           height="40"
+           x="10.056155"
+           y="18.943857" />
+        <path
+           sodipodi:type="arc"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:3.60437727;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="path3012"
+           sodipodi:cx="30"
+           sodipodi:cy="19"
+           sodipodi:rx="20"
+           sodipodi:ry="5"
+           d="m 47.741363,16.691808 a 20,5 0 0 1 -8.506645,6.743279 20,5 0 0 1 -26.974053,-2.125921 20,5 0 0 1 8.500722,-6.743746 20,5 0 0 1 26.975919,2.12444"
+           sodipodi:start="5.8033439"
+           sodipodi:end="5.8029047"
+           sodipodi:open="true"
+           transform="matrix(0.97628959,0,0,0.90577639,0.75264717,1.7458229)" />
+        <path
+           sodipodi:type="arc"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:3.67074943;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="path3012-0"
+           sodipodi:cx="30"
+           sodipodi:cy="19"
+           sodipodi:rx="20"
+           sodipodi:ry="5"
+           d="M 49.959676,19.317345 A 20,5 0 0 1 30.145537,23.999868 20,5 0 0 1 10.060911,19.389931"
+           sodipodi:start="0.063511676"
+           sodipodi:end="3.0635271"
+           transform="matrix(0.9793945,0,0,0.87054856,0.71290745,12.690707)"
+           sodipodi:open="true" />
+        <path
+           sodipodi:type="arc"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:3.67074943;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="path3012-0-2"
+           sodipodi:cx="30"
+           sodipodi:cy="19"
+           sodipodi:rx="20"
+           sodipodi:ry="5"
+           d="M 49.959676,19.317345 A 20,5 0 0 1 30.145537,23.999868 20,5 0 0 1 10.060911,19.389931"
+           sodipodi:start="0.063511676"
+           sodipodi:end="3.0635271"
+           transform="matrix(0.9793945,0,0,0.87054856,0.6219979,22.236163)"
+           sodipodi:open="true" />
+        <path
+           sodipodi:type="arc"
+           style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:3.67074943;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="path3012-0-1"
+           sodipodi:cx="30"
+           sodipodi:cy="19"
+           sodipodi:rx="20"
+           sodipodi:ry="5"
+           d="M 49.959676,19.317345 A 20,5 0 0 1 30.145537,23.999868 20,5 0 0 1 10.060911,19.389931"
+           sodipodi:start="0.063511676"
+           sodipodi:end="3.0635271"
+           transform="matrix(0.9793945,0,0,0.87054856,0.71290699,32.327076)"
+           sodipodi:open="true" />
+        <path
+           style="fill:#ffffff;stroke:#000080;stroke-width:3.38945651;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 10.454545,19 0,40"
+           id="path3084"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:#ffffff;stroke:#000080;stroke-width:3.38945651;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 49.545455,19 0,40"
+           id="path3086"
+           inkscape:connector-curvature="0" />
+      </g>
+      <rect
+         y="15.542849"
+         x="14.933648"
+         height="40"
+         width="40"
+         id="rect4150"
+         style="fill:none;stroke:none;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none" />
+    </g>
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.55265534;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 55.943133,26.909748 -3.260991,3.590955 c -0.518388,-0.393613 -1.055618,-0.772604 -1.642227,-1.104908 -2.202489,-1.247679 -4.592863,-1.895958 -6.96773,-1.95661 -5.224702,-0.13345 -10.363731,2.473647 -13.161267,7.227945 -4.069139,6.915348 -1.652075,15.757669 5.395886,19.750251 7.047961,3.992574 16.059851,1.620991 20.128997,-5.294355 1.3776,-2.34117 1.983967,-4.892634 1.94721,-7.4121 l -7.343096,0.06903 c 0.02469,1.270815 -0.290256,2.547803 -0.985335,3.729069 -2.034574,3.457672  [...]
+       id="path4064"
+       inkscape:export-filename="/home/oeichler/dateien/cpp/MapRoom/src/icons/16x16/reset.png"
+       inkscape:export-xdpi="36.030266"
+       inkscape:export-ydpi="36.030266" />
+  </g>
+</svg>
diff --git a/src/icons/FilterModifyExtension.svg b/src/icons/FilterModifyExtension.svg
new file mode 100644
index 0000000..9e290e7
--- /dev/null
+++ b/src/icons/FilterModifyExtension.svg
@@ -0,0 +1,181 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="FilterModifyExtension.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="7.919596"
+     inkscape:cx="5.4312524"
+     inkscape:cy="15.143237"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1916"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="18"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="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" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <g
+       id="g2999"
+       transform="translate(-1.7110747,11.490486)">
+      <path
+         style="fill:none;stroke:#000080;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 54.195846,1014.5765 c 0,0 -15,1 -22.999999,6 -6.836782,4.273 14.726779,4.2732 10.999999,8 -3.72678,3.7268 -28.376052,2.4145 -32.8593748,5.1854 -2.005004,1.2391 -5.0000008,5 -5.0000008,5"
+         id="path3078"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="csssc" />
+    </g>
+    <rect
+       style="fill:none;stroke:none"
+       id="rect3769"
+       width="40"
+       height="40"
+       x="2.6406245"
+       y="991.49402" />
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot3859"
+       style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:12px;line-height:125%;letter-spacing:0px;word-spacing:0px"><flowRegion
+         id="flowRegion3861"><rect
+           id="rect3863"
+           width="75.35714"
+           height="62.142857"
+           x="-9.4642859"
+           y="2.2142856" /></flowRegion><flowPara
+         id="flowPara3865" /></flowRoot>    <g
+       id="layer1-9"
+       inkscape:label="Ebene 1"
+       transform="matrix(0.67643556,0,0,0.70405692,-2.8073296,299.56164)">
+      <path
+         d="m 28.158906,1034.2969 a 9.2698154,7.55445 0 0 1 -3.825532,10.1377 9.2698154,7.55445 0 0 1 -12.493581,-2.9711 9.2698154,7.55445 0 0 1 3.46532,-10.2235 9.2698154,7.55445 0 0 1 12.593492,2.6764"
+         sodipodi:open="true"
+         sodipodi:end="5.7456763"
+         sodipodi:start="5.8033419"
+         sodipodi:ry="7.55445"
+         sodipodi:rx="9.2698154"
+         sodipodi:cy="1037.7843"
+         sodipodi:cx="19.935957"
+         sodipodi:type="arc"
+         id="path4170"
+         style="opacity:1;fill:#000080;fill-opacity:1;stroke:#000080;stroke-width:5.65799999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="3.1495821"
+         y="988.65399"
+         x="17.021328"
+         height="49.531399"
+         width="6.2991643"
+         id="rect4172"
+         style="opacity:1;fill:#000080;fill-opacity:1;stroke:#000080;stroke-width:4.46860266;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         ry="0"
+         y="988.3689"
+         x="0.0011160693"
+         height="64"
+         width="64"
+         id="rect4142"
+         style="opacity:1;fill:#000080;fill-opacity:0;stroke:#000000;stroke-width:0;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:2.8980968;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 67.722427,980.28102 18.931119,25.50448 -19.226918,22.6134"
+         id="path4137"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ccc" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:2.53583479;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 54.447376,983.04023 15.860418,22.68907 -16.108238,20.1174"
+         id="path4137-1"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ccc" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:2.17357254;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 43.300793,986.23544 11.723927,19.53136 -11.907114,17.3169"
+         id="path4137-1-4"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ccc" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#000080;stroke-width:1.81131053;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 32.8209,991.05801 9.196833,14.74639 -9.340533,13.0748"
+         id="path4137-1-4-8"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ccc" />
+    </g>
+    <g
+       id="g4576"
+       transform="matrix(1.5329038,0,0,1.6343352,-27.443868,-618.33751)">
+      <g
+         transform="translate(69.522529,965.1479)"
+         id="g3856">
+        <path
+           inkscape:connector-curvature="0"
+           id="path3828"
+           d="m -23.809459,52.661657 c -0.04491,-2.475537 -0.08983,-4.951075 -0.134742,-7.426612 1.975921,-5.428799 3.951843,-10.857598 5.927764,-16.286397 1.032875,-0.238862 2.065749,-0.477724 3.098624,-0.716586 0.63769,0.846898 1.27538,1.693795 1.91307,2.540693 -1.975921,5.428799 -3.951843,10.857598 -5.927764,16.286397 -1.625651,1.867502 -3.251301,3.735003 -4.876952,5.602505 z"
+           style="fill:none;stroke:#ffffff;stroke-width:3.04031777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+        <path
+           inkscape:connector-curvature="0"
+           id="path3026"
+           d="m -18.016437,28.948648 c 1.670565,0.608036 3.341129,1.216071 5.011694,1.824107 -1.975921,5.428799 -3.951843,10.857598 -5.927764,16.286397 -1.625651,1.867502 -3.251301,3.735003 -4.876952,5.602505 -0.04491,-2.475537 -0.08983,-4.951075 -0.134742,-7.426612 1.975921,-5.428799 3.951843,-10.857598 5.927764,-16.286397 z"
+           style="fill:#00ff00;stroke:#008000;stroke-width:1.52015889px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+        <path
+           inkscape:connector-curvature="0"
+           id="path3032"
+           d="m -23.809459,52.661657 c -0.04491,-2.475537 -0.08983,-4.951075 -0.134742,-7.426612 1.032875,-0.238862 2.065749,-0.477724 3.098624,-0.716586 0.63769,0.846898 1.27538,1.693795 1.91307,2.540693 -1.625651,1.867502 -3.251301,3.735003 -4.876952,5.602505 z"
+           style="fill:none;stroke:#000000;stroke-width:1.52015889px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+        <path
+           inkscape:connector-curvature="0"
+           id="path3034"
+           d="m -15.51059,29.860701 c -1.778329,4.885919 -3.556658,9.771839 -5.334987,14.657758"
+           style="fill:none;stroke:#008000;stroke-width:1.52015889px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+        <path
+           inkscape:connector-curvature="0"
+           id="path3036"
+           d="m -18.016437,28.948648 c 1.032875,-0.238862 2.065749,-0.477724 3.098624,-0.716586 0.63769,0.846898 1.27538,1.693795 1.91307,2.540693 -1.670565,-0.608036 -3.341129,-1.216071 -5.011694,-1.824107 z"
+           style="fill:none;stroke:#008000;stroke-width:1.52015889px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/src/icons/FitProject.svg b/src/icons/FitProject.svg
new file mode 100644
index 0000000..5b6deda
--- /dev/null
+++ b/src/icons/FitProject.svg
@@ -0,0 +1,114 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="FitProject.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="2.1832751"
+     inkscape:cy="35.807015"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1012"
+     inkscape:window-x="-2"
+     inkscape:window-y="-3"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="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" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <path
+       style="fill:none;stroke:#000080;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 54.195846,1014.5765 c 0,0 -15,1 -22.999999,6 -6.836782,4.273 14.726779,4.2732 10.999999,8 -3.72678,3.7268 -28.376052,2.4145 -32.8593748,5.1854 -2.005004,1.2391 -5.0000008,5 -5.0000008,5"
+       id="path3078"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csssc" />
+    <g
+       id="g3015">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3763"
+         d="m 27.270471,992.71371 25.339695,10.78739 -28.507157,10.7873 3.167462,-21.57469"
+         style="fill:#ff00ff;stroke:#ff00ff;stroke-width:1.34993111999999993;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path3761"
+         d="m 20.720056,1031.245 3.609174,-39.39147 3.609174,0 z"
+         style="fill:#000000;stroke:#000000;stroke-width:0.71901649px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+    </g>
+    <rect
+       style="fill:none;stroke:none"
+       id="rect3769"
+       width="40"
+       height="40"
+       x="2.6406245"
+       y="991.49402" />
+    <text
+       xml:space="preserve"
+       style="font-size:14px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
+       x="-1024.3622"
+       y="16"
+       id="text3848"
+       sodipodi:linespacing="125%"
+       transform="matrix(0,-1,1,0,0,0)"><tspan
+         sodipodi:role="line"
+         id="tspan3850"
+         x="-1024.3622"
+         y="16"
+         style="font-size:18px">FIT</tspan></text>
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot3859"
+       style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:12px;line-height:125%;letter-spacing:0px;word-spacing:0px"><flowRegion
+         id="flowRegion3861"><rect
+           id="rect3863"
+           width="75.35714"
+           height="62.142857"
+           x="-9.4642859"
+           y="2.2142856" /></flowRegion><flowPara
+         id="flowPara3865" /></flowRoot>  </g>
+</svg>
diff --git a/src/icons/Limit.svg b/src/icons/Limit.svg
new file mode 100644
index 0000000..a0bb67e
--- /dev/null
+++ b/src/icons/Limit.svg
@@ -0,0 +1,131 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg2985"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="Limit.svg">
+  <defs
+     id="defs2987" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="15.556349"
+     inkscape:cx="5.9192857"
+     inkscape:cy="31.87687"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="985"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     gridtolerance="10">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3019"
+       units="mm"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="false" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2990">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       id="g4147"
+       transform="translate(4.9361827,2.6998623)">
+      <rect
+         y="11.300197"
+         x="1.014256"
+         height="40"
+         width="40"
+         id="rect3797"
+         style="fill:none;stroke:none" />
+      <rect
+         y="11.300197"
+         x="1.014256"
+         height="40"
+         width="40"
+         id="rect2991"
+         style="fill:none;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+      <g
+         transform="translate(0,7.9347116)"
+         id="g4715">
+        <path
+           style="fill:#000080;stroke:none"
+           d="m 0.9999999,43.365485 0,-7.34353 4.9999992,0 L 11,28.678427 l 5.000002,7.343528 9.999999,-14.687058 10,7.34353 L 41,36.021955 l 0,7.34353 z"
+           id="path3815"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2.8920207;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 2.4067135,37.500008 37.1723685,0"
+           id="path4142"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 27.629841,27.56429 6,7 5.928473,-7"
+           id="path4144"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="ccc" />
+        <g
+           id="g4690">
+          <path
+             inkscape:connector-curvature="0"
+             id="path4142-1"
+             d="m 2.4588046,19.784935 37.0687584,0"
+             style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2.88798761;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+          <path
+             sodipodi:nodetypes="ccc"
+             inkscape:connector-curvature="0"
+             id="path4144-8"
+             d="m 2.5142592,29.784935 6,-7 5.9284698,7"
+             style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+        </g>
+      </g>
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:12.71351719px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000080;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="6.0059271"
+       y="31.956848"
+       id="text4143"
+       sodipodi:linespacing="125%"
+       transform="scale(0.95859893,1.0431891)"><tspan
+         sodipodi:role="line"
+         id="tspan4145"
+         x="6.0059271"
+         y="31.956848"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:25.42703438px;line-height:125%;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000080">A</tspan></text>
+  </g>
+</svg>
diff --git a/src/icons/LimitMax.svg b/src/icons/LimitMax.svg
new file mode 100644
index 0000000..019ca74
--- /dev/null
+++ b/src/icons/LimitMax.svg
@@ -0,0 +1,103 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg2985"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="LimitMax.svg">
+  <defs
+     id="defs2987" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="15.556349"
+     inkscape:cx="12.204905"
+     inkscape:cy="30.654351"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="985"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     gridtolerance="10">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3019"
+       units="mm"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="false" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2990">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <rect
+       style="fill:none;stroke:none"
+       id="rect3797"
+       width="40"
+       height="40"
+       x="1.014256"
+       y="11.300197" />
+    <rect
+       style="fill:none;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+       id="rect2991"
+       width="40"
+       height="40"
+       x="1.014256"
+       y="11.300197" />
+    <g
+       id="g4723"
+       transform="translate(0,7.9347116)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3815"
+         d="m 0.9999999,43.365485 0,-7.34353 4.9999992,0 L 11,28.678427 l 5.000002,7.343528 9.999999,-14.687058 10,7.34353 L 41,36.021955 l 0,7.34353 z"
+         style="fill:#000080;stroke:none" />
+      <g
+         id="g4690">
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2.88798761;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 2.4588046,19.784935 37.0687584,0"
+           id="path4142"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 2.5142592,29.784935 6,-7 5.9284698,7"
+           id="path4144"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="ccc" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/src/icons/LimitMin.svg b/src/icons/LimitMin.svg
new file mode 100644
index 0000000..7635489
--- /dev/null
+++ b/src/icons/LimitMin.svg
@@ -0,0 +1,100 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg2985"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="LimitMin.svg">
+  <defs
+     id="defs2987" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="15.556349"
+     inkscape:cx="26.288372"
+     inkscape:cy="30.654351"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="985"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     gridtolerance="10">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3019"
+       units="mm"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="false" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2990">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <rect
+       style="fill:none;stroke:none"
+       id="rect3797"
+       width="40"
+       height="40"
+       x="1.014256"
+       y="11.300197" />
+    <rect
+       style="fill:none;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
+       id="rect2991"
+       width="40"
+       height="40"
+       x="1.014256"
+       y="11.300197" />
+    <g
+       id="g4139"
+       transform="translate(0,7.9347116)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3815"
+         d="m 0.9999999,43.365485 0,-7.34353 4.9999992,0 L 11,28.678427 l 5.000002,7.343528 9.999999,-14.687058 10,7.34353 L 41,36.021955 l 0,7.34353 z"
+         style="fill:#000080;stroke:none" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path4142"
+         d="m 2.4067135,37.500008 37.1723685,0"
+         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2.8920207;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccc"
+         inkscape:connector-curvature="0"
+         id="path4144"
+         d="m 27.629841,27.56429 6,7 5.928473,-7"
+         style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/src/icons/LimitSys.svg b/src/icons/LimitSys.svg
new file mode 100644
index 0000000..04e68d0
--- /dev/null
+++ b/src/icons/LimitSys.svg
@@ -0,0 +1,123 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg2985"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="LimitSys.svg">
+  <defs
+     id="defs2987" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="15.556349"
+     inkscape:cx="-2.8231255"
+     inkscape:cy="30.654351"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="985"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     gridtolerance="10">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3019"
+       units="mm"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="false" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2990">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       id="g4149"
+       transform="translate(4.1482734,-4.3318994)">
+      <rect
+         y="11.300197"
+         x="1.014256"
+         height="40"
+         width="40"
+         id="rect3797"
+         style="fill:none;stroke:none" />
+      <rect
+         y="11.300197"
+         x="1.014256"
+         height="40"
+         width="40"
+         id="rect2991"
+         style="fill:none;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+      <g
+         transform="translate(0,7.9347116)"
+         id="g4715">
+        <path
+           style="fill:#000080;stroke:none"
+           d="m 0.9999999,43.365485 0,-7.34353 4.9999992,0 L 11,28.678427 l 5.000002,7.343528 9.999999,-14.687058 10,7.34353 L 41,36.021955 l 0,7.34353 z"
+           id="path3815"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2.8920207;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 2.4067135,37.500008 37.1723685,0"
+           id="path4142"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 27.629841,27.56429 6,7 5.928473,-7"
+           id="path4144"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="ccc" />
+        <g
+           id="g4690">
+          <path
+             inkscape:connector-curvature="0"
+             id="path4142-1"
+             d="m 2.4588046,19.784935 37.0687584,0"
+             style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2.88798761;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+          <path
+             sodipodi:nodetypes="ccc"
+             inkscape:connector-curvature="0"
+             id="path4144-8"
+             d="m 2.5142592,29.784935 6,-7 5.9284698,7"
+             style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+        </g>
+      </g>
+    </g>
+    <path
+       style="fill:#808080;stroke:#000000;stroke-width:0.56481636;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 15.2799,7.2505529 -1.076713,0.035405 -0.317726,1.182486 0,0.1412186 0.158864,1.0060306 -1.500339,0.3706681 -0.335358,-0.9707065 -0.05286,-0.1058917 -0.847244,-0.9001054 -0.95315,0.4588669 0.176494,1.2354816 0.07067,0.1058917 0.529517,0.8648132 -1.2179138,0.953157 -0.6883881,-0.74129 -0.1059324,-0.08831 -1.1473077,-0.476561 -0.6884041,0.811905 0.6884041,1.059051 0.08821,0.07034 0.8472521,0.564794 -0.7236828,1.341374 -0.9355186,-0.370668 -0.123508,-0.03518 -1.2179213,0.03518 -0 [...]
+       id="path6034-2-1"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/src/icons/LimitUsr.svg b/src/icons/LimitUsr.svg
new file mode 100644
index 0000000..71c9d57
--- /dev/null
+++ b/src/icons/LimitUsr.svg
@@ -0,0 +1,147 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg2985"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="LimitUsr.svg">
+  <defs
+     id="defs2987" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="15.556349"
+     inkscape:cx="-2.8231255"
+     inkscape:cy="46.082135"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="985"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     gridtolerance="10">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3019"
+       units="mm"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="false" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2990">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       id="g4149"
+       transform="translate(2.9018081,-10.098438)">
+      <rect
+         y="11.300197"
+         x="1.014256"
+         height="40"
+         width="40"
+         id="rect3797"
+         style="fill:none;stroke:none" />
+      <rect
+         y="11.300197"
+         x="1.014256"
+         height="40"
+         width="40"
+         id="rect2991"
+         style="fill:none;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
+      <g
+         transform="translate(0,7.9347116)"
+         id="g4715">
+        <path
+           style="fill:#000080;stroke:none"
+           d="m 0.9999999,43.365485 0,-7.34353 4.9999992,0 L 11,28.678427 l 5.000002,7.343528 9.999999,-14.687058 10,7.34353 L 41,36.021955 l 0,7.34353 z"
+           id="path3815"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2.8920207;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 2.4067135,37.500008 37.1723685,0"
+           id="path4142"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 27.629841,27.56429 6,7 5.928473,-7"
+           id="path4144"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="ccc" />
+        <g
+           id="g4690">
+          <path
+             inkscape:connector-curvature="0"
+             id="path4142-1"
+             d="m 2.4588046,19.784935 37.0687584,0"
+             style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:2.88798761;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+          <path
+             sodipodi:nodetypes="ccc"
+             inkscape:connector-curvature="0"
+             id="path4144-8"
+             d="m 2.5142592,29.784935 6,-7 5.9284698,7"
+             style="fill:none;fill-rule:evenodd;stroke:#ff0000;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+        </g>
+      </g>
+    </g>
+    <g
+       id="g3856"
+       transform="matrix(0.89538538,0,0,0.84691917,26.646693,-21.265636)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3828"
+         d="m -23.809459,52.661657 -0.134742,-7.426612 5.927764,-16.286397 3.098624,-0.716586 1.91307,2.540693 -5.927764,16.286397 z"
+         style="fill:none;stroke:#ffffff;stroke-width:3.04031777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3026"
+         d="m -18.016437,28.948648 5.011694,1.824107 -5.927764,16.286397 -4.876952,5.602505 -0.134742,-7.426612 z"
+         style="fill:#00ff00;stroke:#008000;stroke-width:1.52015889px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3032"
+         d="m -23.809459,52.661657 -0.134742,-7.426612 3.098624,-0.716586 1.91307,2.540693 z"
+         style="fill:none;stroke:#000000;stroke-width:1.52015889px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3034"
+         d="m -15.51059,29.860701 -5.334987,14.657758"
+         style="fill:none;stroke:#008000;stroke-width:1.52015889px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3036"
+         d="m -18.016437,28.948648 3.098624,-0.716586 1.91307,2.540693 z"
+         style="fill:none;stroke:#008000;stroke-width:1.52015889px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/src/icons/LineWidthDef.svg b/src/icons/LineWidthDef.svg
new file mode 100644
index 0000000..20ac3cf
--- /dev/null
+++ b/src/icons/LineWidthDef.svg
@@ -0,0 +1,102 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="LineWidthDef.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="9.951133"
+     inkscape:cy="35.807015"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="985"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="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" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <g
+       id="g4142"
+       transform="translate(11.116094,-6.9697291)">
+      <g
+         style="stroke-width:5.42198038;stroke-miterlimit:4;stroke-dasharray:none"
+         transform="matrix(0.72084543,0,0,0.72318949,1.5918202,288.01362)"
+         id="g2999">
+        <path
+           sodipodi:nodetypes="csssc"
+           inkscape:connector-curvature="0"
+           id="path3078"
+           d="m 54.195846,1014.5765 c 0,0 -15,1 -22.999999,6 -6.836782,4.273 14.726779,4.2732 10.999999,8 -3.72678,3.7268 -28.376052,2.4145 -32.8593748,5.1854 -2.005004,1.2391 -5.0000008,5 -5.0000008,5"
+           style="fill:none;stroke:#000080;stroke-width:5.42198038;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      </g>
+      <rect
+         y="1001.2178"
+         x="2.6406245"
+         height="40"
+         width="40"
+         id="rect3769"
+         style="fill:none;stroke:none" />
+    </g>
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot3859"
+       style="font-style:normal;font-weight:normal;font-size:12px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       transform="translate(55.714286,1.25)"><flowRegion
+         id="flowRegion3861"><rect
+           id="rect3863"
+           width="75.35714"
+           height="62.142857"
+           x="-9.4642859"
+           y="2.2142856" /></flowRegion><flowPara
+         id="flowPara3865" /></flowRoot>    <path
+       style="fill:#808080;stroke:#000000;stroke-width:0.70703268;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 26.519758,994.60137 -1.3484,0.0443 -0.3979,1.47959 0,0.1767 0.19895,1.2588 -1.87892,0.4638 -0.41998,-1.2146 -0.0662,-0.1325 -1.06103,-1.12626 -1.19366,0.57416 0.22103,1.5459 0.0885,0.1325 0.66313,1.0821 -1.52523,1.19264 -0.86209,-0.92754 -0.13266,-0.1105 -1.436809,-0.5963 -0.86211,1.0159 0.86211,1.32514 0.11046,0.088 1.061039,0.7067 -0.906289,1.6784 -1.17158,-0.4638 -0.15468,-0.044 -1.52524,0.044 -0.39789,1.2809 1.3042,0.8393 0.15469,0.044 1.25998,0.2208 -0.1547,1.8993 -1.259 [...]
+       id="path6034-2-1"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/src/icons/LineWidthUser.svg b/src/icons/LineWidthUser.svg
new file mode 100644
index 0000000..8447ed5
--- /dev/null
+++ b/src/icons/LineWidthUser.svg
@@ -0,0 +1,124 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="LineWidthUser.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="12.569135"
+     inkscape:cy="35.807015"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="985"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="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" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <g
+       id="g4147">
+      <g
+         style="stroke-width:5.42198038;stroke-miterlimit:4;stroke-dasharray:none"
+         transform="matrix(0.72084543,0,0,0.72318949,1.881354,278.34141)"
+         id="g2999">
+        <path
+           sodipodi:nodetypes="csssc"
+           inkscape:connector-curvature="0"
+           id="path3078"
+           d="m 54.195846,1014.5765 c 0,0 -15,1 -22.999999,6 -6.836782,4.273 14.726779,4.2732 10.999999,8 -3.72678,3.7268 -28.376052,2.4145 -32.8593748,5.1854 -2.005004,1.2391 -5.0000008,5 -5.0000008,5"
+           style="fill:none;stroke:#000080;stroke-width:5.42198038;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      </g>
+      <rect
+         y="991.54553"
+         x="2.9301584"
+         height="40"
+         width="40"
+         id="rect3769"
+         style="fill:none;stroke:none" />
+    </g>
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot3859"
+       style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:12px;line-height:125%;letter-spacing:0px;word-spacing:0px"><flowRegion
+         id="flowRegion3861"><rect
+           id="rect3863"
+           width="75.35714"
+           height="62.142857"
+           x="-9.4642859"
+           y="2.2142856" /></flowRegion><flowPara
+         id="flowPara3865" /></flowRoot>    <g
+       id="g3856"
+       transform="translate(34.399389,965.01715)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3828"
+         d="m -23.809459,52.661657 -0.134742,-7.426612 5.927764,-16.286397 3.098624,-0.716586 1.91307,2.540693 -5.927764,16.286397 z"
+         style="fill:none;stroke:#ffffff;stroke-width:3.04031777;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3026"
+         d="m -18.016437,28.948648 5.011694,1.824107 -5.927764,16.286397 -4.876952,5.602505 -0.134742,-7.426612 z"
+         style="fill:#00ff00;stroke:#008000;stroke-width:1.52015889px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3032"
+         d="m -23.809459,52.661657 -0.134742,-7.426612 3.098624,-0.716586 1.91307,2.540693 z"
+         style="fill:none;stroke:#000000;stroke-width:1.52015889px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3034"
+         d="m -15.51059,29.860701 -5.334987,14.657758"
+         style="fill:none;stroke:#008000;stroke-width:1.52015889px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3036"
+         d="m -18.016437,28.948648 3.098624,-0.716586 1.91307,2.540693 z"
+         style="fill:none;stroke:#008000;stroke-width:1.52015889px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+    </g>
+  </g>
+</svg>
diff --git a/src/icons/MimeGEMF.svg b/src/icons/MimeGEMF.svg
new file mode 100644
index 0000000..6280d19
--- /dev/null
+++ b/src/icons/MimeGEMF.svg
@@ -0,0 +1,91 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg3513"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="MimeGEMF.svg">
+  <defs
+     id="defs3515" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.5"
+     inkscape:cx="-2.8181818"
+     inkscape:cy="32"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1280"
+     inkscape:window-height="960"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3518">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       id="g4232">
+      <rect
+         y="18.496613"
+         x="12.344089"
+         height="33.188591"
+         width="33.129997"
+         id="rect3167-8"
+         style="fill:#ffffff;stroke:#d45500;stroke-width:1.87165701;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3319-6"
+         d="M 16.51697,47.26997 C 16.14626,47.11755 15.74113,46.9413 15.6167,46.87828 15.39236,46.76469 15.39149,46.763 15.513,46.67993 c 0.0674,-0.0461 0.17632,-0.0848 0.24202,-0.0861 0.0657,-9.4e-4 0.32235,-0.07 0.57033,-0.15261 0.7605,-0.25358 1.15015,-0.29959 2.03222,-0.23995 0.44199,0.0299 0.83863,0.072 0.88141,0.0938 0.0427,0.0217 0.11184,0.0126 0.15348,-0.0198 0.0648,-0.0509 0.0615,-0.0787 -0.0221,-0.19259 l -0.0978,-0.13325 0.38503,0.0469 c 0.66965,0.0815 1.82493,0.0633 1.85001,- [...]
+         style="fill:#d45500;stroke:#d45500" />
+      <rect
+         ry="1.5290817e-06"
+         y="41.619385"
+         x="12.924685"
+         height="9.0398445"
+         width="31.968777"
+         id="rect3241"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <text
+         sodipodi:linespacing="125%"
+         id="text3207"
+         y="49.784332"
+         x="12.295306"
+         style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#d45500;fill-opacity:1;stroke:none;"
+         xml:space="preserve"><tspan
+           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:10px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#d45500;"
+           y="49.784332"
+           x="12.295306"
+           id="tspan3209"
+           sodipodi:role="line">GEMF</tspan></text>
+    </g>
+  </g>
+</svg>
diff --git a/src/icons/MySQL.svg b/src/icons/MySQL.svg
new file mode 100644
index 0000000..5472593
--- /dev/null
+++ b/src/icons/MySQL.svg
@@ -0,0 +1,175 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="MySQL.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="7.229447"
+     inkscape:cx="15.83055"
+     inkscape:cy="18.171979"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="976"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:snap-text-baseline="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="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" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot3859"
+       style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:12px;line-height:125%;letter-spacing:0px;word-spacing:0px"><flowRegion
+         id="flowRegion3861"><rect
+           id="rect3863"
+           width="75.35714"
+           height="62.142857"
+           x="-9.4642859"
+           y="2.2142856" /></flowRegion><flowPara
+         id="flowPara3865" /></flowRoot>    <g
+       id="g3856"
+       transform="matrix(0.69904187,0,0,0.76693067,9.9203938,990.79981)"
+       style="stroke:#37c871;stroke-width:3.38945651;stroke-miterlimit:4;stroke-dasharray:none">
+      <path
+         transform="matrix(0.97628959,0,0,0.90577639,0.75264714,41.745822)"
+         sodipodi:open="true"
+         sodipodi:end="5.8029047"
+         sodipodi:start="5.8033439"
+         d="m 47.741363,16.691808 a 20,5 0 0 1 -8.506645,6.743279 20,5 0 0 1 -26.974053,-2.125921 20,5 0 0 1 8.500722,-6.743746 20,5 0 0 1 26.975919,2.12444"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-6"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#37c871;stroke-width:3.60437727;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <rect
+         y="18.943857"
+         x="10.056155"
+         height="40"
+         width="40"
+         id="rect3032"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#37c871" />
+      <path
+         transform="matrix(0.97628959,0,0,0.90577639,0.75264717,1.7458229)"
+         sodipodi:open="true"
+         sodipodi:end="5.8029047"
+         sodipodi:start="5.8033439"
+         d="m 47.741363,16.691808 a 20,5 0 0 1 -8.506645,6.743279 20,5 0 0 1 -26.974053,-2.125921 20,5 0 0 1 8.500722,-6.743746 20,5 0 0 1 26.975919,2.12444"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#37c871;stroke-width:3.60437727;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:open="true"
+         transform="matrix(0.9793945,0,0,0.87054856,0.71290745,12.690707)"
+         sodipodi:end="3.0635271"
+         sodipodi:start="0.063511676"
+         d="M 49.959676,19.317345 A 20,5 0 0 1 30.145537,23.999868 20,5 0 0 1 10.060911,19.389931"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-0"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#37c871;stroke-width:3.67074943;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:open="true"
+         transform="matrix(0.9793945,0,0,0.87054856,0.6219979,22.236163)"
+         sodipodi:end="3.0635271"
+         sodipodi:start="0.063511676"
+         d="M 49.959676,19.317345 A 20,5 0 0 1 30.145537,23.999868 20,5 0 0 1 10.060911,19.389931"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-0-2"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#37c871;stroke-width:3.67074943;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:open="true"
+         transform="matrix(0.9793945,0,0,0.87054856,0.71290699,32.327076)"
+         sodipodi:end="3.0635271"
+         sodipodi:start="0.063511676"
+         d="M 49.959676,19.317345 A 20,5 0 0 1 30.145537,23.999868 20,5 0 0 1 10.060911,19.389931"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-0-1"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#37c871;stroke-width:3.67074943;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3084"
+         d="m 10.454545,19 0,40"
+         style="fill:#ffffff;stroke:#37c871;stroke-width:3.38945651;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3086"
+         d="m 49.545455,19 0,40"
+         style="fill:#ffffff;stroke:#37c871;stroke-width:3.38945651;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.67786312px;line-height:120.00000477%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000080;fill-opacity:1;stroke:none"
+       x="-723.85394"
+       y="748.81592"
+       id="text3350"
+       sodipodi:linespacing="120%"
+       transform="matrix(0.7071068,-0.70710676,0.7071068,0.70710676,0,0)"><tspan
+         sodipodi:role="line"
+         id="tspan3352"
+         x="-723.85394"
+         y="748.81592"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.67786312px;line-height:120.00000477%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000080">MySQL</tspan></text>
+  </g>
+</svg>
diff --git a/src/icons/MySQLNoConn.svg b/src/icons/MySQLNoConn.svg
new file mode 100644
index 0000000..c9a9511
--- /dev/null
+++ b/src/icons/MySQLNoConn.svg
@@ -0,0 +1,187 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="MySQLNoConn.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="7.229447"
+     inkscape:cx="-7.4077416"
+     inkscape:cy="17.895333"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1916"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="18"
+     inkscape:window-maximized="0"
+     inkscape:snap-text-baseline="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="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" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot3859"
+       style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:12px;line-height:125%;letter-spacing:0px;word-spacing:0px"><flowRegion
+         id="flowRegion3861"><rect
+           id="rect3863"
+           width="75.35714"
+           height="62.142857"
+           x="-9.4642859"
+           y="2.2142856" /></flowRegion><flowPara
+         id="flowPara3865" /></flowRoot>    <g
+       id="g3856"
+       transform="matrix(0.69904187,0,0,0.76693067,9.9203938,990.79981)"
+       style="stroke:#37c871;stroke-width:3.38945651;stroke-miterlimit:4;stroke-dasharray:none">
+      <path
+         transform="matrix(0.97628959,0,0,0.90577639,0.75264714,41.745822)"
+         sodipodi:open="true"
+         sodipodi:end="5.8029047"
+         sodipodi:start="5.8033439"
+         d="m 47.741363,16.691808 a 20,5 0 0 1 -8.506645,6.743279 20,5 0 0 1 -26.974053,-2.125921 20,5 0 0 1 8.500722,-6.743746 20,5 0 0 1 26.975919,2.12444"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-6"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#37c871;stroke-width:3.60437727;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <rect
+         y="18.943857"
+         x="10.056155"
+         height="40"
+         width="40"
+         id="rect3032"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#37c871" />
+      <path
+         transform="matrix(0.97628959,0,0,0.90577639,0.75264717,1.7458229)"
+         sodipodi:open="true"
+         sodipodi:end="5.8029047"
+         sodipodi:start="5.8033439"
+         d="m 47.741363,16.691808 a 20,5 0 0 1 -8.506645,6.743279 20,5 0 0 1 -26.974053,-2.125921 20,5 0 0 1 8.500722,-6.743746 20,5 0 0 1 26.975919,2.12444"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#37c871;stroke-width:3.60437727;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:open="true"
+         transform="matrix(0.9793945,0,0,0.87054856,0.71290745,12.690707)"
+         sodipodi:end="3.0635271"
+         sodipodi:start="0.063511676"
+         d="M 49.959676,19.317345 A 20,5 0 0 1 30.145537,23.999868 20,5 0 0 1 10.060911,19.389931"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-0"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#37c871;stroke-width:3.67074943;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:open="true"
+         transform="matrix(0.9793945,0,0,0.87054856,0.6219979,22.236163)"
+         sodipodi:end="3.0635271"
+         sodipodi:start="0.063511676"
+         d="M 49.959676,19.317345 A 20,5 0 0 1 30.145537,23.999868 20,5 0 0 1 10.060911,19.389931"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-0-2"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#37c871;stroke-width:3.67074943;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:open="true"
+         transform="matrix(0.9793945,0,0,0.87054856,0.71290699,32.327076)"
+         sodipodi:end="3.0635271"
+         sodipodi:start="0.063511676"
+         d="M 49.959676,19.317345 A 20,5 0 0 1 30.145537,23.999868 20,5 0 0 1 10.060911,19.389931"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-0-1"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#37c871;stroke-width:3.67074943;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3084"
+         d="m 10.454545,19 0,40"
+         style="fill:#ffffff;stroke:#37c871;stroke-width:3.38945651;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3086"
+         d="m 49.545455,19 0,40"
+         style="fill:#ffffff;stroke:#37c871;stroke-width:3.38945651;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.67786312px;line-height:120.00000477%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000080;fill-opacity:1;stroke:none"
+       x="-723.85394"
+       y="748.81592"
+       id="text3350"
+       sodipodi:linespacing="120%"
+       transform="matrix(0.7071068,-0.70710676,0.7071068,0.70710676,0,0)"><tspan
+         sodipodi:role="line"
+         id="tspan3352"
+         x="-723.85394"
+         y="748.81592"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:14.67786312px;line-height:120.00000477%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000080">MySQL</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ff0000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="31.533443"
+       y="1041.2921"
+       id="text4149"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4151"
+         x="31.533443"
+         y="1041.2921"
+         style="-inkscape-font-specification:'Sans Bold';font-family:Sans;font-weight:bold;font-style:normal;font-stretch:normal;font-variant:normal">x</tspan></text>
+  </g>
+</svg>
diff --git a/src/icons/QMapShack.svg b/src/icons/QMapShack.svg
index e75915f..14f761c 100644
--- a/src/icons/QMapShack.svg
+++ b/src/icons/QMapShack.svg
@@ -9,12 +9,12 @@
    xmlns="http://www.w3.org/2000/svg"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="64px"
-   height="64px"
+   width="149.76425"
+   height="158.90781"
    id="svg3462"
    version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="MapRoom.svg">
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="QMapShack.svg">
   <defs
      id="defs3464" />
   <sodipodi:namedview
@@ -24,18 +24,22 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="5.5"
-     inkscape:cx="32"
-     inkscape:cy="32"
+     inkscape:zoom="2.75"
+     inkscape:cx="0.84106947"
+     inkscape:cy="31.551972"
      inkscape:current-layer="layer1"
      showgrid="true"
      inkscape:document-units="px"
      inkscape:grid-bbox="true"
      inkscape:window-width="1920"
-     inkscape:window-height="1014"
-     inkscape:window-x="-1"
-     inkscape:window-y="-15"
-     inkscape:window-maximized="1" />
+     inkscape:window-height="981"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
   <metadata
      id="metadata3467">
     <rdf:RDF>
@@ -44,28 +48,2070 @@
         <dc:format>image/svg+xml</dc:format>
         <dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
+        <dc:title></dc:title>
       </cc:Work>
     </rdf:RDF>
   </metadata>
   <g
      id="layer1"
      inkscape:label="Layer 1"
-     inkscape:groupmode="layer">
+     inkscape:groupmode="layer"
+     transform="translate(-18.801369,114.11195)">
     <g
-       id="g2987">
+       id="g5362">
       <rect
-         y="12.314795"
-         x="16.525911"
-         height="33.188591"
-         width="33.129997"
+         y="-112.61195"
+         x="20.301369"
+         height="155.90781"
+         width="146.76425"
          id="rect3167"
-         style="fill:#ffffff;stroke:#000080;stroke-width:1.87165701000000007;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3319"
-         d="m 20.6988,41.088148 c -0.37071,-0.152412 -0.77584,-0.328663 -0.90027,-0.391681 -0.22434,-0.113598 -0.22521,-0.115284 -0.1037,-0.198356 0.0674,-0.04608 0.17632,-0.08477 0.24202,-0.08608 0.0657,-9.37e-4 0.32235,-0.06997 0.57033,-0.15261 0.7605,-0.25358 1.15015,-0.299589 2.03222,-0.239952 0.44199,0.02988 0.83863,0.07203 0.88141,0.0938 0.0427,0.02173 0.11184,0.01264 0.15348,-0.01976 0.0648,-0.05086 0.0615,-0.07868 -0.0221,-0.192586 l -0.0978,-0.133248 0.38503,0.04693 c 0.66965,0. [...]
-         style="fill:#000080" />
+         style="fill:#ffffff;stroke:#000080;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <g
+         transform="matrix(0.08207728,0,0,0.08432853,97.757513,-36.545624)"
+         id="g5153">
+        <path
+           d="m 498.84632,-32.609374 c -0.583,-0.917 -1.334,-3.333 -1.167,-3.833 0.167,-0.5 1.917,-3.75 1.833,-4.167 -0.084,-0.417 -1.417,-2.417 -1.5,-2.833 -0.083,-0.416 0.667,-1.583 0.667,-1.583 l -1.5,-0.25 c 0,0 2.083,-1.334 2.333,-1.667 0.25,-0.333 -0.75,-2.167 -0.75,-2.167 l 0.417,-2.083 2.083,-0.417 1.5,0.167 c 0,0 2,-1.75 2.25,-2.083 0.25,-0.333 0.5,-1.917 0.5,-1.917 0,0 2.75,3.5 3.417,4.583 0.667,1.083 2.25,3.833 2.167,4.583 -0.083,0.75 -0.167,4.75 -0.167,4.75 l 0.917,-0.167 c 0 [...]
+           id="path3671"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 505.51332,-55.442374 c 0,0 -1.167,-2.917 -1.583,-2.917 -0.416,0 -1.583,-0.75 -1.583,-0.75 l 0.667,-1.417 0.25,-1.917 c 0,0 4.083,-2.417 4.667,-3 0.584,-0.583 4.167,-2.5 4.167,-2.5 l 0.5,-3.417 -0.333,-1 2.167,-3.583 2,-0.917 -1.583,-1.667 -0.667,-1.833 -2,0.333 0.417,1.917 c 0,0 -1.333,1.166 -1.833,1.583 -0.5,0.417 -2.083,2.25 -2.333,2.167 -0.25,-0.083 -2.833,-0.417 -2.833,-0.417 0,0 1.416,1.917 1.083,2.333 -0.333,0.416 -3.083,0 -3.083,0 0,0 -1.667,-0.167 -1.833,-0.583 -0 [...]
+           id="path3675"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 517.76332,-31.48438 c 0,0 1.125,-2.125 1.75,-2.125 0.625,0 4.625,-2.75 4.875,-3.125 0.25,-0.375 1.25,-2.125 1.25,-2.125 0,0 2.625,0.375 3.5,0.375 0.875,0 5.25,-0.25 5.875,-0.375 0.625,-0.125 3,-0.125 3.375,0 0.375,0.125 1.125,-1.25 1.25,-1.875 0.125,-0.625 1.375,-2.875 1.875,-3.125 0.5,-0.25 1,-2.75 1,-2.75 0,0 -0.125,-1.5 0.125,-1.875 0.25,-0.375 2.625,-1 2.625,-1 0,0 -0.625,1.875 -1.125,2.125 -0.5,0.25 -0.625,0.875 -0.25,1.5 0.375,0.625 2.125,-0.25 2.125,-0.25 l 4.25,-2 [...]
+           id="path3677"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 517.51332,-30.35938 -1.875,0.75 -0.875,1.25 -2.125,0.5 -0.875,1.5 0.5,1.875 0.875,1 1,-0.75 1,0.5 0,-2.125 1,1.625 0,2.25 -1.25,0.5 -1.375,1.25 0.75,1.5 1.125,0.25 -1,1.5 1.875,1.125 1,-1.625 -0.25,-1.5 1.25,1.875 -0.125,1.375 1.5,-1.75 0.625,-2.125 -0.375,-1.875 2,-2.5 0.875,-1.5 -1.625,-1.5 -1.5,0.125 0.875,-1.25 -1.75,-0.625 -1.25,-1.625 z"
+           id="path3679"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 522.88832,-27.48438 1.625,0.75 0.375,1.625 1.875,1.125 0.625,-2.375 0.75,-1.125 2.75,0.125 1.125,-0.75 1.375,-1.5 0.25,-1.5 -0.5,-1.625 -2.5,0.125 -1.5,0.625 -0.5,1.625 -1.875,0.5 -1.75,0.375 -0.75,1.375 -1.375,0.625 z"
+           id="path3681"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 557.13832,-71.23438 0,-1.875 0.25,-1.625 -1,-1 0,-1.875 1.375,-1.75 1.5,-0.875 -0.375,-3.375 1.5,2 2,0.375 1.5,-2.5 -0.875,-1.25 1.625,-1.5 -0.625,-1.75 1,-2.5 -0.875,-3.375 2,-2.25 1.75,0.25 0,2 0.625,2.25 2.375,2.375 3.5,1.75 1.375,1.125 0.625,0.75 2.25,-0.375 1.625,-1.625 0.375,2 -0.75,1.875 0.5,1.25 1.125,-0.625 -0.625,1.625 -2.625,1.125 -2,1.125 -1.75,-0.25 -2,0.875 -0.875,2.125 -0.625,2.625 -4.25,-2.375 -1.125,-0.875 -1.75,-1.25 -1.375,1.375 -1.25,0.75 -1.875,-1 -1. [...]
+           id="path3683"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 512.51332,-2.98338 -2.875,0.375 -0.25,1.375 1.625,0.75 1.5,-2.5 z"
+           id="path3685"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 506.13832,4.8916261 -2.25,1.25 -0.375,1 1.875,-0.375 0.75,-1.875 z"
+           id="path3687"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 470.5134,-143.77538 2.667,-4.333 3.333,-0.5 4.833,-0.167 4.333,-1 4,1.833 2.667,2 0.5,-1 3.167,2.833 1.167,3.167 2,4.5 2.333,5.333 1.667,3.5 0,2.833 1.333,1.333 4.167,0.667 2.667,0.5 1.5,3 2,2.167 1.167,-0.333 -0.5,2.167 1.167,1.333 0.333,3 1.167,1.167 3,-0.167 2.667,-0.667 3,-1.333 3.167,-0.833 2.5,-0.5 3.333,-1.167 -1.333,2.667 -0.5,3 -1.5,1.667 -0.667,2.5 -0.5,2.167 -1.667,3.167 -1.333,3.833 -1.5,1.5 0.167,1.667 -2,-0.833 -3.167,-1 -1,0.833 -1.5,2.5 -0.833,0 0.667,3.66 [...]
+           id="path3691"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 431.1384,38.01662 -4.875,-0.625 -3.375,0.75 -0.25,1.5 -1.875,1.75 c 0,0 0.25,2 0.625,2.5 0.375,0.5 3,1.25 3,1.25 0,0 2.375,0.25 2.875,-0.375 0.5,-0.625 1.625,-2.125 1.625,-2.125 l 0.5,-2.375 2,-1 -0.25,-1.25 z"
+           id="path3693"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 477.59632,13.308626 c 0,0 -2.583,0.333 -3,0.833 -0.417,0.5 -2.167,3.75 -2.167,3.75 l -1.75,2.667 -0.167,2.5 1,2.083 1.75,1.833 0,1.5 0.833,-0.25 0.417,-1.916 1.417,-1.917 0.667,-2.917 0.25,-2.666 1.5,-2.084 0.083,-3.25 -0.833,-0.166 z"
+           id="path3695"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 332.17932,-121.60937 2.667,-2.333 3,-0.167 1.167,-2.667 2.833,0.667 1.833,-2.333 3.667,0 2.333,-2 1.667,0.333 0.5,-1 2.167,2.167 5.667,-0.167 2,2.5 1.833,1 4,-0.333 6.667,1.667 2,-0.667 0.667,-5 -1.833,-0.833 -0.333,-3.5 1.5,-4.667 1.833,1.333 1.167,-3.5 3.167,1.667 3.833,1.5 3.5,0.833 0.833,1.5 3.167,0.167 0,3.333 1.667,3.333 3,0.833 3.333,0 2.5,-1 4.667,0.5 1.833,0.667 2.667,0 4.167,3.333 3.5,1.667 7.167,1.667 4.167,0 3.333,-1 2.833,-1.167 3,-1.5 1.5,-2.833 3.5,-1.667 2 [...]
+           id="path3697"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 472.63832,44.01662 2,0.25 0.375,-0.75 2.5,1.5 1.875,-0.625 0.875,0.25 -0.625,1.25 -0.625,0.875 1,2.25 1,1.375 0,2.125 -1.5,1.25 0.25,0.875 -2.5,1.5 -0.125,2.25 -0.875,0.875 1.5,0.75 1,1 0,1.375 -1.625,-0.375 0.375,1.625 1.375,1.25 1.875,-1.5 2.25,0 0.75,1.875 c 0,0 0.75,-1.625 1.125,-1.25 0.375,0.375 2.125,1.625 2.125,1.625 l -1.125,1.125 1,1.5 1.625,1.125 -0.5,1.625 -2.625,-1.375 -1.625,-2.25 -2.25,-1.75 0.5,2.625 -2,-1.5 -1.875,-0.625 c 0,0 -0.5,-0.375 -1.375,0.125 -0.8 [...]
+           id="path3699"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 467.88832,76.39162 -1.125,1.625 -1.5,0.25 1.125,1.125 -0.5,0.875 -1,1.125 -1.125,1.25 -2.375,2.625 -2.375,1.375 -1.5,2.375 -0.625,1.625 1.875,-1.625 2,-0.875 1.375,-1.875 1.875,-1.375 1.125,-2.125 -0.125,-0.875 1.75,0.375 1.25,-1.25 1.625,-1 1,-0.75 -1.875,-0.125 -0.75,-0.625 0.75,-2.125 -0.875,0 z"
+           id="path3701"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 476.01332,68.26662 -1.5,-1 -1.625,-0.375 -1.875,0.5 2.125,1.25 0.5,1.5 0.125,1.75 1.375,1 1.75,-1.25 0.125,-1.625 -0.75,-1 -0.25,-0.75 z"
+           id="path3703"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 484.63832,75.64162 -3.375,0.5 -0.625,-1.375 -1.75,-0.75 0.125,2.5 0.125,1.5 -1.875,1.5 c 0,0 1.25,1.25 1.5,0.875 0.25,-0.375 2.375,-2 2.375,-2 l 1.875,-0.75 0.875,-1 0.75,-1 z"
+           id="path3705"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 488.88832,71.14162 0.5,1.875 1.625,1 1.125,1.125 -0.5,1.375 1.375,1 1.875,0.125 -0.75,-2.125 -0.875,-1.875 0.5,-1.375 -1.875,-1.25 -1.625,-0.125 -1.375,0.25 z"
+           id="path3707"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 484.76332,78.39162 -1.125,0.125 -0.625,0.875 -0.375,2.5 -1.5,0.5 -0.75,0.625 1.625,1.5 1,0.875 c 0,0 -0.125,1.375 0.25,1.25 0.375,-0.125 1.75,-0.75 1.75,-0.75 l -0.875,-1.5 -0.25,-2.5 1.75,-1.375 0.125,-1.75 -1,-0.375 z"
+           id="path3709"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 487.51332,77.64162 -1.25,1.125 0.5,1.5 -0.75,1.375 -1.25,0.875 0.375,1.375 1.5,-0.125 0.75,-0.875 0.625,0.625 2,-0.375 0.125,-1.375 -2.125,-0.25 -0.125,-1.375 0.125,-1.5 -0.5,-1 z"
+           id="path3711"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 489.88832,74.89162 -1.125,0.75 0.5,1.625 -0.25,2.25 1,-0.25 0.75,1 0.5,1.875 1.25,-0.75 0.875,-0.5 -0.75,-2.25 -0.125,-1.25 -2,-1.25 -0.625,-1.25 z"
+           id="path3713"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 485.38832,87.89162 -1.75,1.125 -1.375,0.375 0.875,1.625 -2.625,0.125 -1.5,1.125 -0.125,2.75 0.375,1 -2.25,0.75 2.125,1.75 1.75,-1.25 -0.75,-1.125 -0.25,-0.75 1,-1.5 0.875,-1.5 1.125,1.375 1.5,-0.125 1.125,0.125 -0.5,-1.625 1.125,-0.375 1.5,1.75 1,1.5 -0.875,1.625 1.5,2.625 1.75,0.375 2.25,-0.625 -0.375,1.375 c 0,0 1.25,1.125 1.25,0.375 0,-0.75 0.5,-1.75 0.5,-1.75 l -0.75,-2.125 0.375,-1.25 0.75,-0.875 1.125,1.25 1.125,1.125 0.75,-1.875 0.5,-1.875 -0.625,-2.5 -0.375,-1 0.3 [...]
+           id="path3715"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 475.63832,99.76662 -1.75,-0.375 -1.5,0.75 1.125,1.625 1.25,-1 0.875,-1 z"
+           id="path3717"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 483.88832,70.89162 -0.375,1.5 0,1.125 2.25,-0.5 1.625,0.875 -0.5,-1.75 -1.75,-0.75 -1.25,-0.5 z"
+           id="path3719"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 488.51332,64.39162 0.125,1.5 0.625,0.75 1.75,-1.125 -1.25,-1.625 -1.25,0.5 z"
+           id="path3721"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 393.34632,26.058626 2,1.333 1.333,1.5 0.167,2.167 1,2 4.833,-0.334 0.667,1.5 0.667,1.834 1.333,0.666 -2,1.167 -2,0.5 0,2.5 2,1.5 2.167,1.667 3.167,4.5 2.833,2 1.5,2.333 2,2.167 0,2.333 0.5,1.833 0.167,2.334 0,2 0.667,2.5 0.167,4 -1,1.833 -2.667,1.5 -2.667,0.667 0.333,2 1.167,1.666 -1.833,-0.166 -2.667,-0.334 -1.833,1.334 -2.167,0.666 -1.333,0.167 -1,0.667 2.167,0.666 1,1 1.5,0.167 -1.167,2.667 -0.167,1.666 0,1.834 -0.5,0.666 2.5,-1 1.333,-1.833 1.833,-1.833 2.5,-0.5 -0.5, [...]
+           id="path3723"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 388.01332,29.391626 -1.167,1.833 -2,0.333 0.167,2 -1.167,1 0,1.334 2.333,-0.5 0.167,2.5 2.333,0.833 0.667,3.167 -0.5,2.666 -1,3.5 5,-2.666 2.167,1 1.667,-0.167 0.667,-1.833 1.667,0.5 1.667,1.833 2.333,1.167 1.667,3 0.167,3.166 2.5,3 0.833,3.5 -1.333,1.5 2.667,1.667 2.333,-1.833 2.167,0.5 1.667,-0.833 -0.667,-4.167 0,-2.333 -3.5,-4.5 -3.333,-2.167 -2.667,-4.333 -4.167,-3.167 0,-2.5 3.333,-1.5 -0.667,-0.833 -1.333,-3.334 -4.833,0.334 -1,-2 -0.167,-2.167 -3.333,-2.833 -1.833 [...]
+           id="path3725"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 406.84632,62.057626 -4.167,-0.166 -3.833,0.5 -2.667,0.666 -1,3.334 0.667,2.666 0.333,2.834 -0.333,3.166 1.333,3 1.833,-0.666 -0.5,2.166 0.333,1.167 2,-0.666 1.667,-0.834 4.667,-2 3.833,0.333 -0.833,-3.499 5.333,-2.167 1,-2.375 -0.667,-4.292 -0.167,-3.666 -1.667,0.833 -2.167,-0.5 -2.333,1.833 -2.665,-1.667 z"
+           id="path3727"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 383.26332,96.891626 1.375,0.125 1.125,-1.375 1.25,1.25 1.625,0.25 -0.25,2.25 2.875,-0.875 0.875,-0.125 -2.875,-3.125 -1.625,0.25 -1.375,-1.125 -1.5,-1.125 -1.125,-1 1.125,-0.75 -0.625,-3 -1.125,0.5 -0.625,-3.25 -1.75,0.25 -1.5,-2.25 0.75,-2.875 0.5,-1.5 1,-1.125 0.25,-2.25 1,-1.625 0.25,-0.875 0.75,-0.5 0,-2.875 -0.5,-1.75 0.875,-2.125 2.625,0.5 0.875,-0.625 -0.75,3 0.375,2 2.5,-0.375 1.75,0.25 1.875,1.625 -0.25,1.375 1.875,-1.125 1,1.25 0,-4.25 -1,-3.375 1.292,-3.459 4.3 [...]
+           id="path3729"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 400.88832,117.76662 -1,1.25 -2.625,0 -2.875,-2.125 -2.5,-1.375 -3,-2.5 0.25,-1.125 -2.75,-3.375 -0.875,-3.5 -0.375,-2.75 -0.625,-2.625 -1.75,-2.75 1.875,0.125 1.125,-1 1.25,0.875 1.125,0.625 -0.125,1.75 4.125,-0.875 3.125,2.125 2.25,2.75 0.375,3.25 -0.5,4 0,2.375 2.5,1.875 0.75,1.75 0.25,1.25 z"
+           id="path3731"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 425.26332,116.89162 1.625,2 1.5,2 3.5,-0.125 3.25,-0.125 3.125,-2.25 1,-0.5 3.5,1.125 2.125,-0.75 3,-2.75 1.5,-2.875 2,-2.875 0.75,-3 2,-0.875 3,0.75 3.125,0.625 2,-0.375 1.875,-0.625 -1.75,-1.375 0,-0.625 2.875,0 1.375,-1 -0.875,-1.875 -3.125,-1.25 -1.875,0.25 -0.875,0 0,-2.5 -2,-1.375 -0.75,-1.375 -0.75,1.625 -0.875,-1.5 -1,3.125 -0.25,1.875 -1.125,0.375 -2.125,0.625 -1.5,0.875 -0.125,1.5 -1.125,0.75 -1.375,-0.5 -0.625,1.75 -2.25,0 -0.375,2.75 -2.5,2 -2,2 -5,0.375 -2.5, [...]
+           id="path3733"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 532.67932,149.39162 -1.5,1.667 -0.333,2.333 0.667,2.5 1.167,-1.833 -0.833,-1.167 2.167,0 -0.5,-2.333 -0.835,-1.167 z"
+           id="path3741"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 519.84632,157.22462 -1.5,1.334 0,2.5 2.5,-2.5 -1,-1.334 z"
+           id="path3743"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 372.76332,102.89162 -3.875,-0.125 -3.25,-0.25 -1,-1.125 -2.25,-0.625 0.125,3.25 2.25,3 2.875,1.75 1.625,1.625 1.625,0.875 1.75,2.875 0.625,2.5 3.375,0.875 1.5,3 1.625,3.25 0.25,1.375 1.875,0.625 2,3.125 1.875,3.375 0.875,3.25 2.875,1.75 2,3.375 2.875,2.5 2.5,2.5 3,1.125 1.5,2.125 1,2.125 1.875,-1.125 2.625,-0.125 1.5,1.375 0.125,-3.375 0.125,-4.75 -0.125,-2 1.125,-1.625 -0.625,-2 -3.125,-1.25 -1.75,-0.625 -0.875,-2.5 -0.625,-3.25 -3.5,-0.125 -1.25,-0.75 0.75,-1.125 0.875, [...]
+           id="path3745"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 406.17932,133.55862 1.167,-1.834 1.5,1 1,-1.333 1.5,4.5 2,1.167 0,1.833 -2.167,-0.333 -1.167,-1.834 -1.667,-1.166 -2,-1.334 -0.166,-0.666 z"
+           id="path3747"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 416.84632,136.55862 -0.167,2.666 1.667,-0.166 0.5,-1.334 -2,-1.166 z"
+           id="path3749"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 425.26332,116.89162 -2.25,0.667 -1.167,2.5 0,2.333 0.5,2.667 2,2 -0.333,2.666 2.5,0.334 0.667,3 -0.5,2 0.833,3.166 3.667,-0.166 2.667,-0.334 0.833,2.167 0.167,1.167 4,-1.334 1.167,-1.166 2.5,2 2.833,-0.334 1.167,1.667 -0.333,2.5 4.833,-3 3.667,-1.833 -0.5,-2.5 1.167,-1.5 -1.333,-3.667 2,-1.5 2.167,-0.667 1.333,-2 -0.167,-1.666 1.333,-4 4.833,0.166 -4.333,-4.666 -1.833,-1.334 1.667,-0.166 -0.667,-3.334 -1.333,-2.5 0.167,-2 0.333,-1 -5.375,-1.333 -2,0.875 -0.625,2.125 -0.83 [...]
+           id="path3751"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 408.34632,152.05862 -0.167,1.333 -2.5,1.833 2.333,0.667 1.833,0.167 0.333,2 3,-0.167 3.167,0.667 2.667,1.5 2.667,-1.5 5,1 1.167,1.833 c 0,0 0.833,1.5 1.333,1.5 0.5,0 4.5,-0.167 4.5,-0.167 l 3,-1 4.333,1.167 1.5,-0.5 2.5,1.167 1.167,-0.167 -1.333,-2.167 2.333,1 1.333,0.667 1.167,0.833 1.5,-1.166 1.833,0 -0.667,1 2.5,0.5 0.832,-0.832 0,-0.002 0.667,1.334 c 0,0 -1.667,0.999 -0.333,1.166 1.334,0.167 5,0 5,0 l 1.167,-1.166 c 0,0 0.167,-1.169 0.667,-0.834 0.5,0.334 2.333,0.5 2. [...]
+           id="path3753"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 492.17932,117.72462 -1.333,1.834 -2.5,1.833 -3.5,-0.5 -4.5,0.333 -3.333,-1.5 -3.5,-0.5 -1.667,2.334 -1.5,0.833 -1.5,1 0.167,3 0,2.833 -2,1.5 0.167,3.334 -1,2.333 -2.667,0.667 1,3.333 1.167,0.5 1.167,-0.833 1.333,2.166 0.5,3 -1.5,2.5 0.667,2.5 4.333,-0.333 -1.167,-2.5 0.667,-2.5 0.167,-3.167 -0.667,-2.5 0.333,-1.5 1.667,-0.833 1.333,-0.167 0.167,3 c 0,0 -1.167,1.334 -0.667,1.334 0.5,0 2.333,1.333 2.333,1.333 l 0.833,1.167 -0.167,2.333 2.667,1.667 1,-2 0.167,3 1.667,-1.334  [...]
+           id="path3755"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 561.01332,136.22462 0,8.167 0.5,7.667 -1.333,2.166 1,2.167 0.333,9.167 -3.833,-3.667 -0.833,-1.167 -2.333,0.667 -2.667,-0.333 -4.167,0.666 1.667,-3 2,-0.666 1.333,-1.5 -1.5,-1.5 -1.333,-2.834 -1.333,-2.5 -1.833,-1.666 -5.333,-1.667 -5.5,-1.667 -1.5,0 -2.667,-1.833 -2.167,-1.667 -1.5,2 -1.667,0.167 -1.5,-2.5 -0.333,-1.833 -4.667,-1.834 1.167,-1.166 5.333,0.333 2.5,-0.167 1.667,-1 -2.167,-0.666 -4.333,-0.167 -1.667,0 -1,-1.833 -2.333,-1 -2.833,-0.167 -0.333,-1.833 c 0,0 0.8 [...]
+           id="path3757"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 504.84632,115.72462 -2.167,3.167 -0.5,3.333 1.333,1 -0.167,3.167 3.333,2.833 -1.333,-4.833 2.167,-0.667 -0.5,-2.5 1.333,-1.833 -2.5,0.667 -1.667,-1.167 0.668,-3.167 z"
+           id="path3759"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 504.84632,138.72462 2.333,-1 5.5,1.167 3.333,0 1,2.167 -1.5,1.666 -3.5,-2.166 -4.167,0 -2.5,-0.167 -0.499,-1.667 z"
+           id="path3761"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 497.51332,138.89162 c 0,0 -2,0.5 -1.667,1 0.333,0.5 1.333,2.5 1.833,2.5 0.5,0 3.167,-1.167 3.167,-1.167 l 0.5,-1.666 -1.5,-1.167 -2.333,0.5 z"
+           id="path3763"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 491.84632,164.55862 0.333,2.833 -1.833,2.167 -1.833,0.5 -1.833,0.833 -0.167,-2.5 1.833,-2.333 2.333,-0.834 1.167,-0.666 z"
+           id="path3765"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 469.84632,166.55862 -2.667,0.166 c 0,0 -2.833,0.168 -2.167,0.334 0.666,0.165 3.667,1.833 3.667,1.833 l 2.167,-0.833 0.667,2.5 2.167,0 0.167,-2 -2,-1.167 -1.333,-0.5 -0.668,-0.333 z"
+           id="path3767"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 491.84632,164.55863 0.417,2.458 2.5,-1.25 2.75,-0.5 2.875,-1.375 1.875,-1.375 -1.75,-1 -3.875,0.25 -1,1 -3.125,0.5 -0.667,1.292 z"
+           id="path3769"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 373.67932,-2.4413739 -3.667,3.16600005 1.5,2.16699995 -3,-0.5 -3,0.667 -2.667,3.666 -0.667,4.8339999 -2.167,5 -0.833,2.5 -2.333,-1.5 -2.333,-0.167 0.333,5.167 -0.5,3.5 -1.333,1 -0.833,2.666 -0.5,1.167 -1,-0.333 0.167,2.666 0.5,2 2.333,2.334 1.667,0.5 1,3.166 -0.333,1.5 1.667,-1.166 1.5,3.333 0.667,3.667 0.667,3.166 -2,1.334 0.167,2.333 3.167,1.333 2,-0.666 2.833,-1.834 2.167,-0.833 0.167,-3.333 2.167,2 0.833,1.5 0.667,1.5 0.5,3.666 2,4 0.667,2.667 1,3 0.167,3.667 0.833,3  [...]
+           id="path3771"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 333.84632,5.7246261 -0.833,3.167 -0.667,0.833 2.667,1.8339999 0.5,1.5 -1.5,0.666 -1,1.667 -1,-0.167 1.5,2.667 1.5,0 0.333,2.5 1,2.5 0.167,3.333 -0.167,3.5 3.167,-0.5 3.167,-1.5 0.167,-2.666 0.667,1.666 1.667,-0.833 0.167,-1.167 2,-0.333 1.167,2 0.333,2.667 0,2.166 2,2 -0.667,-3.166 1.5,0.333 0.833,-3.667 -1.167,-4.833 -1.5,-2.167 -1,3 -1.333,-0.333 -1.333,-1.333 0.667,-3 1.5,-0.667 1.333,-0.833 2,-3.5 -3.667,0 -7,0.166 -0.833,-2 -1,-3.6659999 -1.833,1 -1,-2 -0.833,0.333 - [...]
+           id="path3773"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 336.68032,1.2246261 -0.167,2.334 2.667,0.5 2.5,1.166 1.5,-1 2.833,0.334 3.333,0 0.5,-2.334 -1.667,-1 -0.167,-1.66599995 -4.5,-1.66700005 -2.833,0 -2.333,1.66700005 -1.666,1.66599995 z"
+           id="path3775"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 332.34632,-0.10837385 -1.167,1.83299995 0.833,3.167 -1.667,1.667 -2.167,0 -2.833,-1.167 -2,0.333 -2.333,-1.666 -3.5,-0.334 0,-2 -7.167,-0.666 -2.833,-1.66699995 -3.833,-1.83300005 -3.167,-1.667 -2.5,-1.667 4.167,-6.8330001 2.5,0.167 1.667,0 2.333,1.666 2.667,1.3340001 0.667,0.666 1.167,1.834 2.5,-0.667 3,1.167 1.167,1.333 1,1.167 4.5,0.166 2.667,3.00000005 4.332,0.667 z"
+           id="path3777"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 286.17932,90.224626 c 0.833,0 3.333,-0.833 3.333,-0.833 l -0.167,-2.833 1.833,-0.667 2.667,-0.333 -1,-1.5 1,-2.667 1,0.333 1.5,-2.333 -0.833,-5.5 1.833,-2.833 1.667,-2.5 -1,-4.5 -0.833,-2.667 1.667,-5 2,0.833 2.333,-2.833 3,0 1.333,-2 0,-2.333 1.833,-1.5 4.333,-3 3.833,-2 1.833,-4.334 1,-0.833 1.167,0.667 4.167,-1.334 2,-3 0,-3.5 2.833,-1.5 1.667,-4 0.5,2.834 0.833,1.333 2.833,-0.167 0.167,-4.833 -1.167,-4 -0.333,-3 -1.5,0 -1.5,-2.667 1,0.167 1,-1.667 1.5,-0.666 -0.5,-1.5 [...]
+           id="path3779"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 297.17932,83.224626 -0.333,4.5 -1.167,3 0.667,3.834 0.333,3.5 0.833,1.333 4.833,-0.5 2.333,-1.667 0.5,-4.666 -2,-1.667 -0.667,-2 -1.667,-2.333 -1,-1.667 -1.667,-0.833 -0.998,-0.834 z"
+           id="path3781"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 245.51332,20.391626 -2.667,-1 -1.667,-2.667 -2,-4 -2,0 -4.333,0.334 -2.667,0 -4,-0.667 -5.667,1 -3,0.333 -0.333,-1.666 0.667,-4.3339999 2.667,-1.666 2.333,-2 1,-1.334 -1.333,-0.333 -0.333,-2.99999995 -2.667,-3.33300005 -5,-5.667 4.667,2.333 3.333,0 2.667,-0.333 4.667,0.333 5,-2 2.333,-0.333 2.667,-8.0000001 3.333,-0.333 2.667,-2 2.333,0 0.667,1.333 3,-7.333 3,-0.667 -0.667,-5.333 4.667,-0.333 0,-2 1.667,-3 0.333,-3.667 -0.333,-3 3.667,-1.667 4.667,-2 3.333,1.333 2.167,-1. [...]
+           id="path3791"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 215.34632,-8.7743739 -0.167,-2.0000001 2.333,-3.334 0.333,-3.666 -2.833,-0.667 -0.833,-5.667 -1.167,-2.5 0.667,-2.333 -1,-1 0.333,-2.833 1.333,-3.167 1.5,-4.167 2,0.833 2.333,0.333 0.667,1 2.333,-0.833 1.333,-3.333 4.833,-1.5 1.667,-3.167 1,-2 2.167,-0.167 2.333,-0.5 2.167,0.167 2.667,0.333 3,0.833 4.333,-0.167 1.167,0.167 2,-2 2,-0.5 2.5,-4 1.833,0.167 0.667,2.333 0.833,0.167 0.667,2.833 -0.167,2.333 1.667,0.333 3.5,-2.167 2.167,-1.167 2,-0.333 1.167,1.167 3.167,-0.833 0 [...]
+           id="path3793"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 244.34632,-48.109374 1.667,-3 0.167,-2 -0.167,-4.5 -1.667,-1.167 -0.667,-0.667 -0.167,-1.167 3.667,-0.333 0.5,-2.667 1.5,-3.333 1.5,0.5 0.167,-1.667 1.167,0.333 3.667,-1.833 0.5,2 -1,1.167 1.167,1.167 -2,0.333 -2.333,0.5 -0.833,1 -2,-0.167 0.333,1.5 1.667,0 1.667,0.333 1.5,0.833 3.667,0 2,-0.667 0.833,0.167 1.5,1.333 3,-0.833 1.5,-0.667 2.833,0.833 0.167,1.5 0.833,2.333 0.167,1 2.167,-0.167 2,2 0.333,3.167 -1,0.833 -3,1 -1.833,-1 -2,0.333 -5.667,3.333 -1.667,-0.333 0.333, [...]
+           id="path3795"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 256.70032,-65.296374 4.188,-0.125 2.125,-1.25 2.313,-1.563 1.25,-1.25 -2.438,-1.375 -1.625,0.688 -1.313,-0.125 -1.5,-1.875 -2.625,0.938 -2.625,-1 0.25,-0.75 2.375,-1.125 1.563,-1.438 0.813,-0.625 -1.063,-1.438 1.625,-1.938 2.938,0.063 3.375,0 3.188,1.438 0.813,-0.875 -0.25,-2.875 2,-1.25 1.938,0.063 1.688,1.188 3.063,0.875 3.188,-0.375 2.5,-0.313 3.563,-0.125 2.375,-0.5 2,0.375 1.688,2.188 1.5,1.813 2.125,-0.063 0.375,1.188 -1.375,2.063 -2.5,0.813 -3.063,1.75 -3.188,2.125 [...]
+           id="path3797"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 184.01332,-49.484374 -0.875,-5.25 -0.25,-1.75 1.25,-2 -1.625,-0.625 -1,-1.375 0.75,-2.625 -3,-0.25 0.25,1.25 -1.375,-1.125 0.25,-3 0.75,-1.625 2,0.25 2.5,0.375 2.375,-0.25 1.125,-1.625 -0.125,-1 -2.25,-1.625 -1.375,-1.75 -0.875,-1.875 -2.5,0.75 -0.75,1.25 -0.25,2.75 -1.5,-2.375 0.75,-2.875 2.125,-1.5 3.625,-0.75 2.5,0.25 2.125,1.125 1.375,2.5 1.5,1.375 2.875,0.25 2.5,0.125 1.375,0.125 -0.25,-3.875 3,-0.75 1,-1.25 0.75,-0.5 0.625,-0.875 1.75,-0.125 1.75,1.625 0.75,1.25 1.3 [...]
+           id="path3799"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 194.13832,-73.359374 -0.625,-22 10.75,-2.25 -0.875,3.125 -1.125,3.625 0.25,1.875 0.625,3.25 3,0.5 1.625,-0.125 1.25,1.75 1.75,-1 0.5,-0.875 1.25,0.125 0.5,-2.375 1,0.25 3.75,2.875 4.75,-0.375 3.25,1.25 3.5,-0.625 2.875,2.75 1,5.125 1,2.375 -0.25,1.625 -1.75,1.375 2.25,1.625 5.125,0.5 3,0.75 1.125,1.375 2.375,0.875 1,-2 1.125,-3.125 2.125,-2.5 3,-0.375 3.25,-1.625 1,0.75 -2.813,1.875 -0.25,0.75 2.625,1 2.625,-0.938 1.5,1.875 1.313,0.125 1.625,-0.688 2.438,1.375 -5.188,4 -5 [...]
+           id="path3801"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 194.01332,-72.942374 -2.5,0.083 -1.5,-1.375 -1.375,-2.5 -2.625,-1.542 -2.667,0.333 -1.667,0.167 -1.667,0.833 -1.75,1.083 -0.583,1.917 -1,-0.833 0.333,-1.667 0.833,-2.333 0,-1 -3,-0.167 -1,-1.667 -1.5,0 -0.333,-1.667 -0.833,-2.167 -1.333,-2.5 -1.833,-0.5 -0.667,-2.667 2.5,0.5 3,0.5 -0.833,-1.833 2.5,-3.5 0.5,2.333 1,-2 3.167,0 0.667,1.333 3,-0.667 -1.5,1.833 -1,2.167 0.333,1.167 1.5,-1.5 1.667,-2.167 3.5,0.167 -0.5,-3 -1.5,-1.5 -2,-1.167 -0.667,-2.332996 -2.333,-3 -2,-2.5  [...]
+           id="path3803"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 217.51332,13.724626 -1.75,0.667 -4.25,-1.75 -4.75,0.5 -6.75,-2 -1.75,-0.5 -1,-5.2499999 -3,-0.75 -1.25,1.25 -3.25,1.25 1.25,-2 -5,2.25 -3.25,-2.5 -4.75,-1 -2.5,-3.49999995 -4,-0.25 -0.5,-4.00000005 -2,-3 -1.75,-3 -2.25,-0.5000001 -0.25,1.0000001 -2.5,-2.0000001 -1.5,0.25 -2.5,-2 0,-3.25 -2,-1.75 1,-3.5 -4,-4 -3.25,-0.5 -2.25,-6.5 0.5,-3.75 2,-2.25 0,-2.75 0,-1.25 -2,-0.5 -2.25,-2 0,-2.5 -2.25,-3 -1.25,-3.75 0,-3 -0.5,-3 1.5,-3 2.5,0.25 2.5,1.5 1.25,1.25 1.5,1.75 2,0.25 1. [...]
+           id="path3805"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 153.51332,-58.942374 0,-2.167 c 0,0 -0.333,-2.333 0.333,-1.833 0.666,0.5 1.333,1.167 1.333,1.167 l 0.333,-2.167 -1.167,-1.5 -2.167,-1 0,2.333 -1.333,0.667 -0.667,-2 -0.667,-1.833 -1.333,-0.5 -2.5,-2 -0.333,-2.5 4.5,1.667 1.333,-1.5 -1.5,-1.333 -1.167,-2.167 1.167,-0.333 3.833,1 2.667,2.5 1.833,0.667 2,-2.167 3,3.167 1.333,2.667 3.167,1.667 -3.167,2.667 -0.667,3.333 -0.5,2 -1.667,0.5 0.5,4.083 -3.25,-3 1.583,-2.417 -1.167,-0.833 0.833,-1.25 -1.333,-1.25 -5.163,3.665 z"
+           id="path3807"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 143.51332,-63.359374 -1.667,-1.583 -2,-0.5 0,-2.667 -0.333,-2 -1.5,-2 7.333,-0.167 0.333,2.5 2.5,2 1.333,0.5 1.333,3.833 1.333,-0.667 0,-2.333 2.167,1 1.167,1.5 -0.333,2.167 -1.333,-1.167 -0.333,4 -0.667,0.833 -1.583,-0.5 -1.5,-1.75 -2.083,-1.583 -1.667,-1.167 -1.333,-0.167 -1.167,-0.082 z"
+           id="path3809"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 138.01332,-72.109374 -2,-0.5 -0.667,-2 -3.167,1.333 -1.833,-0.5 -0.667,-3.833 -1.333,-2.333 -3.333,-1 -1.99991,-1.833 -1.5,-1.667 3.66691,-0.167 4.167,0 3.667,2 3.333,1 2.667,0.333 2.667,2.167 2.167,-0.167 3.333,0.333 1.833,2.833 -0.5,0.5 1.167,2.167 1.5,1.333 -1.333,1.5 -4,-1.5 -1.333,-0.5 -6.502,0.501 z"
+           id="path3811"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 144.01332,-49.775374 -2.167,0.333 -1.667,-0.5 -2.833,0.833 -2.167,0 -3,2.667 -2,2.167 -0.333,4 -0.333,3.5 -0.833,2.167 -10.33291,7 0.5,1.167 0.167,4.167 0.833,0.167 0.167,0.833 7.66691,0.834 16.667,13.8330001 6.833,0.333 5,-4.3330001 4.583,-0.5 -2.5,-2 0.083,-2.833 -2.083,-2.167 1,-3.5 -4,-4 -3.25,-0.5 -2.25,-6.5 0.5,-3.75 2,-2.25 -0.417,-3.833 -1.583,-0.667 -2.25,-2 0,-2.5 -2.001,-2.168 z"
+           id="path3813"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 132.17932,-49.109374 -1.333,1.5 -4,-0.333 -5.66691,2 -3.667,-1.5 -4.833,1.5 -1.667,-1.5 -1.667,0.833 0,2.5 -3.333,3.167 -1.5,2.167 0.833,0.167 0.5,4.167 2,0 0.5,1.833 -1.833,1.333 -0.333,2 -0.833,1 -0.333,3.167 1.833,1.167 0.667,1.333 2.167,-0.167 3,-1.333 15.99991,-10.5 0.833,-2.167 0.333,-7 4.833,-4.833 -1.333,-0.5 -1.167,-0.001 0,0 z"
+           id="path3815"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 151.84632,-6.6083739 3.833,0.5 2,2 1,-0.5 1.333,-2.333 0.667,-1.5 -1.833,-1.167 1.5,-0.333 1.917,-1.4170001 -6.083,0.75 -4.334,4.0000001 z"
+           id="path3817"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 105.34641,-28.275374 -2.167,-0.5 0.667,-2.333 1,-1.667 1,-1.667 1.5,0 1,1.833 -1.833,1.333 -0.333,2 -0.834,1.001 z"
+           id="path3819"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 105.01341,-25.109374 -0.5,1.5 -1.667,-0.167 -0.167,2.167 -0.333,2.5 1.167,0.833 -0.667,2.834 -0.667,7.5000001 6,2.166 2.333,-3.333 2,-0.5 1.667,-1.6670001 0,-1 1.167,-0.166 0,-0.667 -3.833,-3.5 0,-1.167 8.667,-3.166 -0.333,-1.167 -0.833,-0.167 -0.167,-4.167 -0.5,-1.167 -8.667,4.833 -2.167,0.167 -0.667,-1.333 -1.833,-1.166 z"
+           id="path3821"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 100.67941,-1.1083739 1.833,0.83300005 1.667,2.49999995 2.333,3.834 2.667,4.1659999 2,2.667 c 0,0 -0.333,1.167 -0.167,1.667 0.166,0.5 1.5,2.666 1.5,2.666 l 4.333,2.667 3.333,6 -1,3 0.833,2.5 0.333,2.167 3.333,2.5 2.49991,2 2.167,4.833 2.167,3.833 2.167,2.167 3,5.167 1.333,-1.667 0.833,-3.333 1.167,0 1,1 c 0,0 4.167,-0.666 4.833,-0.5 0.666,0.166 3.333,1 3.333,1 l 4.667,0.333 1.333,1.167 1.5,-1 2.167,-4 3.333,-2.167 5.167,-1.5 6.5,-0.333 3.333,-1 13.333,-5.334 1.5,-9.5 -0.66 [...]
+           id="path3823"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 180.67932,52.891626 3.333,-1 2.5,-0.667 1.667,0.667 1.833,-3.167 0.5,-1.833 2.667,0 1.833,-0.333 1.333,-3.834 4.667,-0.5 -0.667,-4.166 1.833,-2.5 0.667,0.666 1.167,-1.166 1.667,-3.334 2.333,-2.333 1.833,-3.333 -2.667,-2.334 -1.5,-1.833 -2.333,-1.167 -2.5,-0.166 -3.667,-1.667 -2,-3 -0.667,-1.167 -1.5,0.167 0,2.5 0.833,0.833 -1.833,0.334 -1.667,2.166 -0.833,3 1.5,3.5 -1.5,9.5 -12.833,5.5 -0.5,1.334 2.833,9.5 1.668,-0.167 z"
+           id="path3825"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 174.59632,19.308626 3.333,-0.334 1.083,-1 2.917,0.167 1.667,0.583 1.75,-0.916 1.583,-2.25 0.833,-1.667 1.917,-0.5 1.667,-2.333 1.25,-0.584 1,-0.083 0.083,-1.6669999 1.083,-0.833 0.667,1.417 -0.917,1.8329999 0.083,1.917 -0.083,1.666 -1.583,0.584 0.083,2.083 0.667,0.833 -2.083,0.584 -1.5,2.333 -0.75,2.917 -1.667,1.333 -8.667,-1.833 -3.25,-2.667 -1.166,-1.583 z"
+           id="path3827"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 173.26332,15.641626 -2.417,-1.833 -0.167,-2.167 0.333,-0.75 0.75,-2.2499999 1.417,0.583 0.833,2.3339999 -0.083,1.75 -0.666,2.333 z"
+           id="path3829"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 169.51332,6.9746261 -1.417,1.25 -0.083,1.667 1.167,1.4169999 1.667,-0.834 -0.25,-1.3329999 0.667,-1.25 -0.917,-1.167 -0.834,0.25 z"
+           id="path3831"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 176.17932,43.558626 2.833,9.5 -2,1.833 -0.167,3 -3.167,0.5 -1.333,1 -5.333,1.833 -4,1.167 -1.167,2.167 -5,0.333 -2,2.333 -4.333,0.167 -3.333,0.667 -0.833,1.5 -2,1.333 -2.833,-0.5 -0.667,0.333 -2.167,-0.5 -1,-2.833 -0.333,-2.167 -1,-2.166 0.333,-1.5 -1,-1.5 -0.667,-3.167 0.667,-1.333 0.167,-1 1.167,-2.167 0.667,-2.833 1.333,-0.5 1,1 4.833,-0.5 3.333,1 4.667,0.333 1.333,1.167 1.5,-1 2.167,-4 3.333,-2.167 5.167,-1.5 6,-0.167 3.833,-1.166 0,1.5 z"
+           id="path3833"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 101.76341,-7.3583739 -0.75,-4.7500001 -1.749996,-4.167 0.583,-1.083 0.249996,-1.833 0.083,-2.5 1.25,-0.917 0.167,-2.417 0.75,-1.75 0.833,-2 2,0.75 -0.333,3.25 -0.333,1.167 -1.667,0.083 -0.667,4.5 1.083,0.834 -0.5,2.416 -0.667,8.1670001 -0.332,0.25 z"
+           id="path3837"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 130.63832,-73.234374 -2.5,2.625 -1,0.125 -3.125,1.375 -1.49991,-0.375 -2.5,-0.25 -3.375,1.125 -2.375,-0.375 -2.375,-0.625 -0.5,0.375 -2.875,-1.5 -1.625,-0.375 -0.75,-1.875 -2.75,-0.25 -1.375,-1.75 -2.999996,0.375 -7.875,0.125 -1.875,2.125 -2.5,1.25 -0.625,1.75 -3.375,-0.125 -5.75,-0.5 -0.875,0.25 -2.75,-1.5 -2.375,-1.75 0.125,-2.25 -3.75,-0.5 -1.875,1.25 -0.25,2.5 -1.125,2.625 -1.5,1.125 0.375,1.25 3.125,0.125 1.5,0.125 2,-2.5 2.5,0.25 2.375,-0.25 1.375,-0.125 0.75,1 0.87 [...]
+           id="path3839"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 89.596414,-35.942374 1.917,-1.167 1.833,0 1.333,-0.917 2,0 3.083,-1.917 0.416996,1 -2.666996,2 -0.083,1.333 0.25,1 -1.583,0.417 -1.917,-0.083 -1.25,0.333 -1.083,0.5 -1.25,-0.167 -0.417,-1.333 -0.583,-0.999 z"
+           id="path3841"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 100.01341,-18.441374 -3.166996,2.333 -3.667,0.833 -2.667,-0.333 -2.667,-1.333 -0.5,-1.5 -2.667,1 -2,1 -0.833,-1.5 -2.5,1.666 -3.333,2 -2.833,-1.5 -3.5,0 -3,-1.333 -4,-1.167 -1.833,0.334 -1.667,-0.167 -0.5,-0.667 -1,1.167 0.167,1.333 0.667,1.167 -0.333,2 -0.667,1 1,3.0000001 0.333,2 -0.167,35.4999999 25.833,0 0,-1.167 1.333,0.167 0,1.167 8.333,-0.167 1,0.667 2,0 1.167,-2 1.666996,-0.334 1.5,-2.5 1.333,-0.166 1.667,-1.334 -0.833,-3.166 1.5,-0.834 -2.667,-1.833 -4.166996,-7. [...]
+           id="path3843"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 567.51332,172.05862 -2,5.333 -1,4.667 -0.667,9.333 -0.667,5.333 -1.667,5 -3.333,1 -3.667,-1.333 -1.333,-2.667 -3,-0.666 -4.333,-2.334 -2.333,-1.333 -3,-2 -2.333,-1.667 1.667,-4.666 1.333,-1.334 0.833,3.292 1.75,0 -0.375,-2.5 -1.375,0 -0.625,-2 1.375,-1.125 0.125,-1.375 1.375,-2.125 -1.5,-0.125 -1.125,-1.75 -0.875,1.25 0.125,1.625 -1,-2.25 -1.375,-0.375 -2.625,1.625 -2.5,-1.125 -2.625,0.125 -3.125,-1 -1.625,-1.625 -2.25,-0.5 -3,-0.25 -3,0.25 -2.75,-0.25 2.375,1.875 1.125,1 [...]
+           id="path3845"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 591.63832,312.76662 -0.625,1.75 1.5,2 0.125,1.875 -1.75,0.25 -2.75,0.5 -1.875,2.25 -2.375,-0.375 -2.75,-2.125 -2.375,-0.625 -1.375,0.875 0.875,3.375 0.5,2.75 1.375,1.625 -0.25,2.125 0.125,3 1.375,-0.75 0.75,1.875 1.5,0.5 c 0,0 -1.125,1.375 -0.5,1.5 0.625,0.125 3,0 3,0 l 1.5,0.625 0.5,-2.5 1.125,0.875 -0.25,-2.875 1.875,1.5 c 0,0 2.5,0.625 2.375,0.25 -0.125,-0.375 -0.875,-2.875 -0.875,-2.875 l 0.25,-2.5 0.375,-0.875 0.375,1 0.75,-1.25 -0.25,-2.625 -0.375,-2.75 -0.625,-2.37 [...]
+           id="path3847"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 561.51332,136.39163 3,2 4.167,1.833 5.167,1.667 1.667,1 1.5,0 4.333,4 0.5,3.833 6.333,1.667 2.333,0.5 2,-1.833 0.333,-2 5.167,0 1.833,-1 1.5,1.833 2.5,0 2.333,-2.667 1.666,-0.333 -0.5,-3.5 2.5,0 1,2.667 0.834,-1.667 -1.167,-2.833 -6.667,-3.834 0.167,-1.5 3.167,1.334 5,3.333 2.833,3.667 -1,2.5 -2.667,-0.167 -1.833,0.833 0.833,2 -3.166,0.667 -1.334,1 -3.667,1.5 -3.667,0.333 -2.5,-0.833 -2.333,-1.5 -1.833,1.5 -1,1.5 -0.5,1.667 -2.833,-0.167 0,1.833 2.5,2 1.667,1.834 1,2.5 1. [...]
+           id="path3849"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 698.76332,283.39163 1.75,5 3.25,4.5 2.25,2.75 1,2.25 0.75,4.75 0.5,4 -2.75,3 -3.25,0.75 0.5,3 4,0 3.75,2.25 -1,4.5 -2,1.5 -2.25,-0.25 -0.75,-2.5 -2.75,2 -1.5,-3 -0.25,-1 -3.25,2.75 0,4.75 -4,2.5 -2,4.25 -7.75,5.5 -3.25,1.75 -3,5 -3.25,4.5 0.25,2.5 5.5,0.75 2.5,2 3.5,0.75 4.5,-2.75 1.75,-3.25 1.25,-4.25 1.25,-0.75 0.25,-5 4,-0.75 2.25,-0.25 -0.5,-2.5 0.25,-1.5 2.75,-1.25 2.25,-4.75 0.75,-3.25 0.25,-1 2.25,-0.25 1.25,0.75 3.75,-1.25 2,-3.75 1,-1.75 1.5,-2.5 -0.75,-1.75 1.25 [...]
+           id="path3853"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 619.84632,147.39162 0.834,4.667 2.833,2.333 1.667,2.167 1.5,-2.5 -2.334,-2.334 -2.5,-1 -2,-3.333 z"
+           id="path3851"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 628.68032,155.22462 2.333,3.167 3,0 2.5,0.667 0.833,1.833 4.167,1.667 1.667,0.666 c 0,0 2.333,-1.166 2.833,-0.333 0.5,0.833 0.833,2.5 0.833,2.5 l 2.334,2.167 0.666,1.333 -1,0.5 -2.5,-2.167 -3.666,-1.333 -1.5,0.5 1.333,1.5 2.5,0.667 2.833,0.5 1.5,2.5 2.667,1.5 1.667,-0.834 -2.334,-2.5 -1.333,0 0.333,-1.833 -1,-2.833 -1.333,-2.667 -2.167,-0.167 -2,0 -2,-1.166 -2.166,-1.5 -1.5,-1.334 -1.834,0.167 -2.166,-0.5 -1.834,-0.833 -1.333,-1.167 -1,-1 -1.333,0.333 z"
+           id="path3861"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 720.34632,200.72463 -1.833,3.834 2.167,2.166 3.166,0.167 2.167,-2.333 -1.333,-1.667 -1.834,-1.333 2,-1.667 3.334,-0.167 2.833,0.167 -1.5,-1.667 2,-2.5 -3.833,1 -2.667,2.167 -2.333,2.333 -2.334,-0.5 z"
+           id="path3863"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 669.01332,218.39163 -7.5,-4.5 2.75,5.5 4.75,4.5 4.25,0 -3,-3.25 -1.25,-2.25 z"
+           id="path3869"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 761.01332,184.72463 3.5,2.167 0.833,-1.167 1,1.667 2,-1.333 -1.333,-1.667 -1.5,0.5 -2.167,-1.167 -2.333,1 z"
+           id="path3879"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 88.679414,-141.10937 -3.917,1.125 -1.75,3.375 -0.25,2.5 -2.5,-1.25 -2.25,-0.5 -1.625,-0.625 -1.375,0.75 -5.25,-0.75 -2.75,-0.75 -3.125,0 -6.375,-0.625 -3.25,1.625 -1.25,0.875 1.25,3.375 0.75,2.875 -0.625,2 -2.875,1.875 -1.75,2.375 -0.5,1.625 -2,0.375 -0.75,4.75 2.5,3.75 1.5,-1 3.25,0.875 3,0.375 1.5,0.75 2.375,-1.25 2.25,-0.25 3,-1.625 2,-1.125 1.625,-0.625 2.875,1.375 3.125,0.75 1.5,1.5 1.125,3 1.375,2 0.125,4.25 -1.875,1 -1.375,0.375 -0.625,2.374996 -1.25,0.875 -2.125,0 [...]
+           id="path3881"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 66.763414,-114.73437 0.625,1.125 1.25,2.125 1.875,1.625 1.5,3 0.5,2.75 -0.125,4.874996 0,0.625 2.125,-0.125 1.25,-0.875 0.625,-2.374996 3.25,-1.375 -0.125,-4.25 -1.375,-2 -1.125,-3 -1.5,-1.5 -2.75,-0.75 -3.25,-1.375 -2.75,1.5 z"
+           id="path3883"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 48.763414,-111.98437 -0.5,1.625 -2.375,1.125 -1.125,1.125 -0.75,1.875 -1,3 -2,1.625 -3,0.625 1.5,2.624996 1.875,2.25 1.5,0.75 0.5,1.5 1.75,2.25 2,0.5 1.5,-0.375 -0.375,1.75 1,1.625 0.5,1.375 5.75,0.75 3.75,0 1.875,0.25 4.5,-1.625 1.625,-1.25 2.5,0.875 0.75,0.25 1.125,0 0.75,1.25 1.375,0.25 1.125,-4.125 0.375,-2 0.75,1.5 1.875,-1.125 0.625,-2.125 -0.25,-2.625 -1.25,0.25 -1.625,0.125 -1.25,0.625 -1.75,-1.625 0,-3.249996 0,-4.5 -0.75,-2.25 -1.125,-2.75 -1.875,-1.625 -1.875,- [...]
+           id="path3885"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 66.013414,-74.734374 -1.875,-0.375 -0.375,2 -1.875,0.875 -3.125,-0.125 -2.375,-1 -1.625,-0.375 -2.5,1.375 -1.625,0 -0.25,-3.5 -2,-1.25 -0.5,-1 0.5,-3.75 1.375,-1.125 -1.375,-3 0.375,-2.625 1,1.875 2.75,0.375 5.125,0.375 1.625,0 1.875,0.25 3,-0.875 1.5,-0.75 1.625,-1.25 2.875,1.25 1.5,-0.125 0.75,1.25 1.375,0.25 0.125,2.875 -2.125,0.125 -0.625,0.625 -0.125,3 -1.5,1 -0.75,1.125 1.75,0.125 0.625,1.875 -2.875,-0.5 -2.25,1 z"
+           id="path3887"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 49.63836,-71.60938 -2.75,0.75 -1.125,-0.25 -1.25,1.5 -3.25,0.375 -0.625,3 -1.5,2.25 -0.25,1.25 -4,0.5 1.5,2.875 0.875,-1.625 1.125,2 1.375,0.75 0.375,1.5 -1.25,0.875 1.75,0.25 0.875,1.625 2.125,-0.125 3.75,0.125 1.875,1.375 -1.875,0 -2.375,-1 -2.5,0.375 -1.625,1.375 -1.125,-1.375 -1.25,-1.25 -0.625,1.5 1.25,1.125 0.625,0 -0.5,1.5 1.5,0.25 0.625,-0.75 0.25,-0.75 1.375,1.75 0.25,1.375 0.375,1.375 0.75,1.875 0.375,-1.625 1.875,1.125 0.5,2 c 0,0 0.875,-2 1.25,-1.5 0.375,0.5 1 [...]
+           id="path3889"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 51.51336,-38.48438 1.875,1.25 2,0 1.625,1.25 2.25,0 2.875,-0.125 2.375,-1.125 1.875,-1.125 1.625,0.125 0.625,-1.375 1.5,-1.75 1.125,0.5 1.25,-2.125 -1.125,-0.875 -1.75,1.5 -0.375,1.25 -1,1 -1.625,0.5 -0.875,1.125 -1.75,0.875 -1.25,0.625 -1.125,-0.625 -1.875,-0.5 -1.875,-0.125 -1.125,-0.375 -1.25,-0.75 -1.375,0.5 -2.125,-0.375 -0.5,0.75 z"
+           id="path3891"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 61.888414,-59.484374 1,1.125 1.25,0.75 1.125,-1.125 -1.375,-1.375 -2,0.625 z"
+           id="path3893"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 61.888414,-55.734374 -0.25,2.375 2,0.5 0.625,-1.625 -1,-1.5 -1.375,0.25 z"
+           id="path3895"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 58.388414,-63.484374 -0.375,1.75 1.75,0 0.75,-1.25 -2.125,-0.5 z"
+           id="path3897"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 41.263414,-69.234374 -1.75,-2.208 0.333,-3 1,-1.167 0.5,-1.5 2.167,-0.167 2,-1.5 1.5,0.667 0.875,0 1.125,1.333 1.375,0.917 0.25,3.5 -1,0.75 -2.292,0.5 -1.583,0 -1.75,1.667 -2.75,0.208 z"
+           id="path3899"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 35.513414,-62.775374 0,-1 -1.167,-1.667 -0.333,-3.667 0.167,-2.167 0.167,-1.167 0.333,-1.667 -0.333,-0.5 0.5,-4.667 2.5,0 1.333,1.167 1.333,1.167 -0.167,2.5 -0.167,2 0.333,1.667 1.25,1.542 -0.583,1.792 -0.042,1.208 -1.125,1.958 -0.625,1.542 -3.374,-0.041 z"
+           id="path3901"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 34.388414,-74.109374 -1.25,-1.125 -2,-1.625 -0.5,-2.625 0.5,-2.5 1.75,-1.625 1,-1.625 0.5,-0.5 1.25,1.125 2.25,2.125 -1.125,3 -1.875,-0.25 -0.5,5.625 z"
+           id="path3903"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 35.013414,-86.359374 -0.625,-3 -0.375,-3.25 -0.125,-2.625 0.25,-1.5 -1.375,-2.625 2.375,-1.374996 2.75,0.125 2.875,3.999996 2.125,1.25 1.125,2.125 1.125,1.625 2,0.5 1.5,-0.375 -0.375,1.75 0.625,1.5 -0.5,2.25 1.375,3 -1.375,2 -0.5,2.875 -1.375,-0.125 -1.375,-0.5 -1.625,1.458 -2.167,0.167 -1.458,2.375 0.125,-2.208 -1.5,-1.542 -1.75,-1 1.125,-3 -2.25,-2.125 -1.25,-1.125 0.625,-0.625 z"
+           id="path3905"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 27.638414,-80.984374 -1.375,0.5 0,-2 -1.625,-2.875 -2.875,-1.875 -1,-2.75 -1.125,-2.25 -0.75,-1.625 0.5,-1.375 2.125,0.875 1,-0.875 3.25,0.625 1.25,0.75 1.75,-0.5 1.625,0.375 2,1.625 1.625,-0.25 0.375,3.625 0.625,2.625 -1.125,1.125 -1.25,2.125 -1.5,1.125 -0.5,2.5 -1.25,-0.125 -1.75,-1.375 z"
+           id="path3907"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 16.263414,-96.859374 -3.125,-0.25 -2.875,0.25 -1.0000001,1.25 -1,1 2.2500001,2.5 0.125,-2.25 1,-0.625 2,1.5 0.625,1.375 1.125,0.375 c 0,0 -1.875,1.375 -1.5,1.5 0.375,0.125 2,1.25 2,1.25 l -0.375,1 -0.125,0.75 1.5,1.625 1.5,1.125 0.625,1.5 1.75,-0.75 1.625,0.25 1.25,1 0.375,1.5 0.875,0.375 1.25,0.75 1.25,0.875 1.375,1 1.375,1 1,0.125 -1,-2.25 -0.75,-0.5 -1.75,-1.375 -1,0.625 -0.375,-2.125 -1.625,-2.875 -2.875,-1.875 -2.875,-6.625 0.5,-1.375 2.125,0.875 1,-0.875 3.75,0.875  [...]
+           id="path3909"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 25.638414,-113.10937 -1.125,0.25 -0.5,2.25 -1.75,0.375 -1,3 -1,1.625 1.125,2.125 1.75,0.375 3.875,3.749996 5.75,0 2.375,-1.374996 2.75,0.125 3.125,-1 2,-1.625 1.75,-4.875 1.25,-1.5 2.25,-1.125 0.75,-1.625 -2.5,-3.75 -1.5,0.25 -5,-0.375 -1.75,1.25 -1.625,0.75 -3.5,0.625 -1.25,2 -2.5,0.25 -2.875,-0.125 -0.875,-1.625 z"
+           id="path3911"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 9.7634139,-97.109374 -0.375,-1.75 -1,-2.124996 0.75,-2.5 2.1250001,0.375 2.125,0.375 2.875,-1.25 1.625,-1.125 2.375,-0.5 1.125,2.125 -1.875,1.625 -2.875,4.124996 -0.375,0.875 -2.5,-0.125 -2.875,0.125 -1.1250001,-0.25 z"
+           id="path3913"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 24.513414,-112.85937 -1,-0.875 0.375,-1.75 -0.25,-1.375 -0.25,-1.375 1,-1 3,-0.375 2.875,-1.875 0.875,-1.25 0.125,-1.5 1.75,2.125 2.125,-0.875 1.75,1.375 1.875,-0.25 1.375,0 2.25,-0.375 1.375,-0.625 1.75,1.25 1.75,1.375 -0.75,4.125 -1.5,0.25 -2.75,-0.375 -2.25,0 -1.75,1.25 -1.625,0.75 -3.5,0.625 -1.25,2 -5.375,0.125 -0.75,-1.25 -1.25,-0.125 z"
+           id="path3915"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 53.388414,-135.48437 -0.375,-1.75 0.5,-3 -1.625,-0.875 0.625,-2 1.5,-1.75 0.125,-3.25 -1.25,-4.125 3.25,-0.75 0.625,-1.625 3.125,-1.875 1.125,0 1,-4.125 4,-3 -0.375,-2.375 1.375,-1.25 1.75,-0.875 2.5,0.125 1.125,-2 1,-1 0.625,0.875 5.375,0.5 1.125,1.833 3.5,-0.5 1.333,6.333 1.5,5 2.333,2.333 0.167,2 2.042,2.125 -0.875,3.042 -3.333,-0.167 1.5,6.5 -3.917,1.125 -1.75,3.375 -0.25,2.5 -2.125,-1.125 -2.625,-0.625 -1.625,-0.625 -1.375,0.75 -5.25,-0.75 -2.375,-0.75 -2.75,0.125 -7 [...]
+           id="path3917"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 71.138414,-184.35937 -1.375,1.625 -2.375,-0.375 -2.25,0.5 -4.5,-3.375 -4,0.875 -0.875,0.125 0,-2.5 -1,0 -0.625,1.625 -1.5,-1.875 -1.125,-1.875 -1.375,0.625 -0.375,1.625 -2,1.125 -1.25,0.5 -0.625,1.5 -0.75,-1.625 -0.625,-1.75 0.75,-1.375 1.625,0 0.375,-1.25 -0.75,-1.25 -1.5,-0.25 0.875,-0.75 2.375,-0.875 1.125,1.25 -1.25,1.75 -0.125,0.875 1.25,-0.125 1.25,-0.125 0.875,-0.875 -0.375,-1.375 -0.875,-0.5 1.375,-1.625 1.375,-1.5 1.75,-0.375 2.25,-1.875 0.75,0.625 2.875,0.125 1. [...]
+           id="path3919"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;stroke:#ffffff" />
+        <path
+           d="m 54.138414,-175.85937 -3.25,0.25 -1.125,-2.625 -1.75,-2.125 -1,-1.5 -3.875,1.875 -0.875,2.5 -0.375,2.5 -1.125,2.25 0,3.25 4,-2.5 9.875,-0.375 1.875,0.375 1.5,-0.5 1.625,1.75 3,1 3,3.75 1.375,-1.25 1.75,-0.875 2.5,0.125 1.125,-2 1,-1 -0.542,-1.125 0.042,-4.25 -0.042,-4.083 -0.833,-3.167 -0.875,-0.75 -0.875,1.625 -2.875,-0.375 -2.25,0.5 -4.5,-3.375 -4.875,1 -0.375,6 -0.375,2.625 -0.875,0.5 z"
+           id="path3921"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 40.513414,-168.23437 0.625,2 0.375,2.125 1.125,0.5 1.5,1 2.625,1 2.75,0.5 0.375,2.375 -0.125,1.625 1.875,1.375 0.875,1.75 0.375,1.75 3.25,-0.75 0.625,-1.625 3.125,-1.875 1.125,0 1,-4.125 4,-3 -0.375,-2.375 -3,-3.75 -3,-1 -1.625,-1.75 -1.5,0.5 -1.875,-0.375 -9.375,0.5 -4.5,2.375 -0.25,1.25 z"
+           id="path3923"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 30.513414,-125.98437 -3.125,-0.625 0.875,-1.75 -0.75,-0.875 -1.375,0.75 -2.5,-0.375 -0.5,1.375 -1.625,-1.5 0.25,-1.125 -3.125,-0.125 -2,-0.375 -0.75,-1.25 -0.875,-0.75 0.125,-2.875 -1,-2.25 -0.5,-4.875 -0.25,-1.25 -1.25,-1.75 0.125,-1.625 0.125,-1.25 -1.5,-2.625 0,-0.75 0.75,-1 1.5,0.625 -0.4566,1.08316 0.4163,0.91632 -0.2097,-0.87448 0.75,-2.125 2.5,-1 3.125,-0.875 1.875,-1.75 2.625,-1.25 3.875,-0.5 2.25,-0.25 1.5,1.375 -1.5,0 0.875,1.25 2.125,1 0.875,0.125 2.625,-2 2.62 [...]
+           id="path3925"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff"
+           sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" />
+        <path
+           d="m 21.638414,-117.98437 -1.125,-0.125 -1.5,-0.875 -3.5,-0.5 -0.25,1.75 -2.125,1.125 -2.75,-1 -5.0000001,-4.75 -1,-1.75 0.125,-1.75 -1.125,-2.375 2.625,-0.25 2.625,-1.5 2.1250001,-1.25 1.25,-0.125 0.375,-1.75 0.875,0.125 1.375,1.625 0.375,-1.25 1.125,1.375 0.5,0.625 5.125,0.5 -0.25,1.125 1.625,1.5 0.5,-1.375 2.5,0.375 1.375,-0.75 0.75,0.875 -0.5,1.875 2.75,0.5 0.75,1.75 -0.125,1.5 -0.875,1.25 -2.875,1.875 -3,0.375 -1,1 -1.75,0.25 z"
+           id="path3927"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 9.2634139,-116.35937 -3,2.75 0.5,2.125 -0.625,1 -3,-0.25 -2.62499997,1.125 -1.25,-0.25 -0.75000003,1 -1.875,-0.75 -2,0.25 -1.125,0.25 -1.375,0 0,1.625 0.75,0.625 1.125,0.5 0.875,-0.125 1.375,0.625 -0.125,0.75 1.75,0 2.00000003,-0.625 1.62499997,-0.5 1.125,-0.875 1.25,0.125 0.875,1 0,1.25 1.75,0.125 2,0.5 1.125,0.625 3.7500001,0.75 3.25,-1.5 1.25,-0.875 2,-0.375 1.375,-1.75 1,-3 1.75,-0.375 0.5,-2.25 -1,-0.875 0.375,-1.75 -0.5,-2.75 -1.75,0.25 -1.125,-0.125 -1.5,-0.875 -3. [...]
+           id="path3929"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 17.38836,-63.73438 -1.25,0.25 -1.625,-0.875 -0.5,-1.75 -0.875,-1.125 -1.5,0.625 -1,-1.5 -0.125,-1.375 -1.5,-1 -2.75,-0.125 -2.25,-1.25 -2,-2.25 -1.5,-1.25 -1.625,-1.25 -1.375,-1.625 -2.375,-2 0,-3.5 -0.75,-1.5 -0.875,-1.375 -1,-1.125 -0.875,0.25 -1.375,-1.125 -1.75,-0.25 -1.75,0.5 -0.875,1.75 -1.375,-0.625 -0.125,-1.375 -1.75,-0.125 -1.375,-0.75 -0.375,-3.375 -0.75,-1.125 1.5,-2.125 -0.25,-3.5 3.375,-1.25 0.875,0 1.25,-1.875 1.375,1.75 1.125,1.5 0.875,-1.125 -0.375,-1.625 [...]
+           id="path3931"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -10.32064,-70.35938 -1.667,1.083 -1.417,1.167 -0.833,-0.417 -0.833,-0.667 0.167,2.25 0.833,0.5 0.25,2.167 0,1.5 0.583,0.167 -0.833,1.25 0,1.75 0.833,2.083 1.083,0.583 1.5,-1.25 1.667,-0.167 1,-0.75 -0.417,-3.167 0,-2.083 -0.583,-0.667 1.167,-0.5 -0.083,-1.417 -0.667,-1.167 0.083,-1.083 -0.667,-0.75 -1.166,-0.415 z"
+           id="path3933"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -18.153586,-99.526374 -0.583,-0.916996 -0.333,-2 -1.333,-0.667 -1.917,0.667 -0.417,0.583 0.917,-2.333 1.667,-2.833 1.167,-1.667 1.833,-1.167 0.75,-0.333 2.5,0.417 1,0.167 1.5,-1.083 2.3329999,0 1.333,0.167 -0.083,1.083 -0.167,0.917 0.125,1.042 1.375,1.458 1.375,-0.458 1.125,0.542 0.417,1.333 -2.167,2.25 -4.167,0 0.167,1.75 -0.8749999,1.124996 -1.708,-2.374996 -1.083,-0.5 -0.75,1.5 -1.083,0 -2.918,1.331996 z"
+           id="path3935"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -16.903586,-110.69237 -0.167,-2.833 0.667,-2.417 1.583,-1.833 1.083,-2.083 -3.917,-0.25 -2.083,-0.75 -1.583,-0.417 -0.5,-0.917 0.167,-2.833 -0.667,-1.417 -0.417,-1 1.25,-2.167 -1.333,-1.333 -0.583,-1 0.333,-1.75 0.417,-1.833 -0.083,-2.083 -0.083,-1.167 1.667,-0.25 1.333,-1 1,-1.667 0.333,-2 0,-1.833 0.583,-1 -0.417,-1.083 -1.5,-0.417 -0.333,-0.917 1.083,-0.917 1.083,-0.833 2.333,-0.083 0.5,0.583 0.5,1.25 1,-0.167 -0.167,-1.583 0.333,-1 1.25,0 1.417,0.417 0.5,-0.583 -1.083 [...]
+           id="path3937"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -20.153586,-148.94237 -1.667,1 -3.167,-0.167 -2.167,0 0.167,1.833 2.167,1.667 0.333,2.333 -2.167,2.167 -1.167,-2.167 -0.333,-2.5 -1,-1.833 -0.833,1.5 -0.333,2.333 0,2 -1.5,1 0.333,2.167 1.833,0.333 -0.333,0.833 1.333,0.833 1.667,0 1.167,1.5 2.417,2.167 0.583,-3 -0.5,-4.167 2.167,0.083 1.833,-1.25 0.5,-1.417 0.333,-3.833 0.583,-1 -0.417,-1.083 -1.5,-0.417 -0.332,-0.915 z"
+           id="path3945"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -31.320586,-135.77537 -2,0.833 -0.833,0.5 -1,-0.333 -1.667,1.5 -1.333,0.667 1,1.5 1.167,0.167 0.833,1.333 2.333,0.167 2,2.667 0.5,1.5 2.167,-1.333 0.333,1.667 1.667,1.333 1.5,1.5 0.5,-3 1.167,-1.833 1.5,-2.667 -1.917,-2.333 -2.417,-2.167 -1.167,-1.5 -1.667,0 -1.333,-0.833 -1.333,0.665 z"
+           id="path3947"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -21.486586,-121.77537 -1.5,-0.167 -1.667,-0.167 0.5,-3 1.167,-1.833 1.333,1.917 0.167,3.25 z"
+           id="path3949"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -15.028586,-86.942374 c 0,0.76 -0.616,1.375 -1.375,1.375 -0.759,0 -1.375,-0.615 -1.375,-1.375 0,-0.76 0.616,-1.375 1.375,-1.375 0.759,0 1.375,0.616 1.375,1.375 z"
+           id="path3951"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -43.73664,-134.10938 -3.25,0 -1.25,-1.25 2.25,-1.5 1.75,-2.5 1.75,-0.25 0,-4.25 -2.75,-2 -2.75,0.25 -0.5,1.5 -1.25,-1.5 0.5,-2.5 -1,-2 -0.25,-2.25 -2.5,-3.5 -3,-2.75 -1.5,-1.75 -0.75,-5 -3,-3.25 -1.5,0.25 -1.5,0 1.25,-1.75 1.25,-0.25 -0.75,-2.5 1.75,-1.5 1,-3.25 1.5,-1.5 -0.75,-2.5 -5.5,0 -3,0.75 -0.5,-2 1.75,-2.25 2.5,-2.25 -0.25,-2.25 -2.167,0.5 -2,0.667 -3.333,0 -1,0.833 0,2.167 -1.833,1.333 0.167,1.833 c 0,0 -1.833,0.333 -1.5,1 0.333,0.667 0.5,2.833 0.5,2.833 l -2.333 [...]
+           id="path3953"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -54.82064,-207.27538 -1.833,1.333 0,2.167 -1.667,1.167 1.833,1 -0.167,1.5 1.833,-3 0.667,-2.5 -0.666,-1.667 z"
+           id="path3955"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -62.82064,-194.27538 -1.667,0.5 0.333,1.667 2.833,-0.167 -1.499,-2 z"
+           id="path3957"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -78.98664,-161.44238 -1.167,0.333 -0.833,0.167 -0.833,1.5 -1.333,1.5 -1.5,0 0.667,2.167 1.833,1.667 2.333,-1.5 0.667,-0.667 1.333,1.5 2.5,0.833 1,-1.5 -0.833,-2.333 0,-1.667 -1.5,-2 -2.334,0 z"
+           id="path3959"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -70.153586,-155.27537 -0.667,2.5 2.667,-2 -0.667,-1.333 -1.333,0.833 z"
+           id="path3961"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -77.861586,-140.48437 0,-1.875 1.625,-2.75 -0.125,-2 -0.75,-2.25 0.125,-2.75 1.667,-1.833 -2.5,-0.833 -1.333,-1.5 -0.667,0.667 -2.333,1.5 -1.958,-2 -0.542,-1.833 1.5,0 2.167,-3 -0.375,-1.667 -1.875,0 -1.375,0.75 -2.375,0.5 -1.125,1.5 0,2.125 1.75,0.25 0,1.375 -1,0.625 -0.5,1 -1.75,-0.25 -1.5,-0.375 -1.25,0.125 -0.5,2 -1.25,2 0.25,1.875 1,1 1.375,0.75 1.75,0.5 -1.5,1.625 -0.625,2 2.625,0.125 -4.25,1.125 -0.5,1.75 -1.25,0.5 1.875,0.75 -1.875,1.125 1.125,1.125 1.875,-1.125 - [...]
+           id="path3963"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 69.138414,-204.73437 -2.75,-0.125 -4.25,0 -2.875,0.625 -2,1.25 -1.875,1.25 -2.875,1 -3,0.625 -3.5,-1.25 1.5,-2.125 -1.5,-1.25 -2.5,-1.625 -1.75,-0.625 0.25,-3 0.875,-1.25 0,-2.375 0,-2.75 -0.875,-2.875 -0.25,-1.75 0.125,-1 -0.75,-1.75 0.625,-2.875 2.375,-2.625 0.625,-2 2.25,-2.625 2.5,-2.625 1.75,-1.625 2.625,-2.5 0.75,-2 2,-3.875 2.75,-0.5 0.25,-0.875 -0.5,-2.5 0.25,-2.625 -1.625,-2.25 -1.75,-1.5 -1.5,-1 -1,-3 -0.5,-1.625 0.875,-3.875 -1.125,-2.5 -0.125,-3.375 0.875,-2.6 [...]
+           id="path3969"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;stroke:#ffffff" />
+        <path
+           d="m 40.013414,-293.60937 -2.75,0.5 0,2.75 -0.5,2 0.5,2 -2,-0.25 -2.75,-0.5 -2.25,-1.25 -1.25,2.25 -0.5,3.75 -3,1 -2.75,1.5 -0.75,4 -1.5,2 0,2.75 -2.5,4.75 -1.5,4 -1.5,2.5 -2.25,0.25 -0.75,8.5 -2,4.25 -1.2500001,3.25 3.0000001,2.5 -1.5,2 -4.7500001,0.25 -1.5,3.5 -0.5,4 -1.5,3.75 1.5,4.75 -0.25,4.25 1,4.5 0.5,2.5 -0.5,1.75 0.25,5.25 -0.75,4 -2.625,3.625 -0.62499997,4.5 -2.37500003,-1.375 0.5,4.125 0.37500003,3.125 0.75,3.25 1.125,1.625 0.49999997,2.375 0.875,1.375 1.625,3.375 1 [...]
+           id="path3971"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;stroke:#ffffff" />
+        <path
+           d="m 32.388414,-183.48437 -2.5,1 -2.125,1.75 0.375,4.125 0.625,1.5 2.5,-4 0.125,-1.625 1,-2.75 z"
+           id="path3973"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 23.138414,-178.85937 -1.625,3.375 -0.875,5.125 2.375,-4.375 0.125,-4.125 z"
+           id="path3975"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 89.17936,-300.60938 -3.292,-0.375 -1.875,1.542 -3.333,-0.667 -1,2 -2.833,1.667 -1,3.333 -0.958,-0.25 0.375,-2.875 1.125,-2.75 0.625,-2.875 -2.25,-0.625 -3.125,-3.5 -3,1.125 -2.625,0.25 -2.75,3.5 -0.875,3.75 -0.125,2.25 -2.375,5.875 -2.125,1.5 -3.625,-2.375 -0.875,2.125 -2.625,0 -3.625,-1.25 -0.875,-2.75 -1.5,-3.125 -1.375,-1.875 -1.25,0 -0.875,4 -1.125,-0.625 -2.75,0.5 -0.125,3.125 -0.375,1.625 0.5,2 -4.75,-0.75 -2.25,-1.25 -1,1.75 -0.75,4.25 -5.75,2.5 -0.75,3.625 -1.5,2  [...]
+           id="path3977"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;stroke:#ffffff" />
+        <path
+           d="m 48.17936,-491.27537 -2.333,7.33299 -4.667,-1.333 -7,-5.66699 -4,8.99999 -2.333,-1.667 2.333,7.333 -0.667,3 8.333,0 5.333,-1 -5.333,4.333 -1,1.667 3.667,4.667 3.667,-1 6,3 0.333,2 7.333,-6.333 3.667,-5 5.333,-6 -3.333,-6.667 -5,0 -5.667,2 -1.667,-4.33299 -2.999,-5.333 z"
+           id="path3979"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;stroke:#ffffff" />
+        <path
+           d="m 19.84636,-480.60938 -2.667,6 1.333,8.667 0.333,9.667 -4.667,-10.667 -2,-6.333 -3.333,5.333 0.333,4.333 -3,-4.667 2.667,-3.333 0.333,-6.333 -7,3.333 -3.333,-1 -3.667,5 3.667,6 -1,4.667 3.667,-3 -0.333,9.667 -1.667,2.667 c 0,0 4.333,8 5,9 0.667,1 4,5.333 4,5.333 l 5,-5.333 1,-7.667 3.667,-1.667 -1.667,7 3.667,-4.333 0.667,4 1.667,3 -6.333,2 -2.667,6 c 0,0 -5.667,-1.333 -5.333,0 0.334,1.333 2,7.333 2,7.333 l 7.333,-3 4.667,-0.333 -8,3.333 4.333,4 -7.667,-0.667 0.667,5.667 5, [...]
+           id="path3981"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;stroke:#ffffff" />
+        <path
+           d="m -87.98664,-67.98438 -0.375,3.875 -1,2.5 -1,2.875 -0.125,2.75 0.875,1.125 1.75,-0.625 -0.5,2.5 -0.125,3.375 -0.875,1.875 2.875,0.25 2.75,0.25 2.5,-1.25 0.25,-3.875 1.5,-1.375 -1,-1.5 0.5,-3.75 -1.5,-2.5 1.75,-0.875 0.875,-2.75 0.25,-2.625 -0.125,-3.125 2,-1.125 0.5,-1 -1.25,-1.25 -0.125,-1.125 -1.375,-0.25 -1.625,0.625 -4,-0.25 -0.375,-1.75 -2.75,2.5 -0.375,2.5 0.25,2.5 -0.125,1.5 z"
+           id="path3985"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -161.73664,-51.85938 -2,0.75 3.125,1.75 1.375,-1.875 -2.5,-0.625 z"
+           id="path3989"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -56.15364,-84.94238 -1.333,2.333 -3.75,-0.25 -3.5,-0.5 -2.75,-0.25 -2.5,0.5 -8.5,-0.5 -3.75,-0.5 -1.75,-1 -2.375,0.75 -0.5,1.125 -3.75,0.5 0,2.375 1.25,1.25 1.25,1.625 0.25,2.625 2.875,-2.125 0.375,1.75 4,0.25 1.625,-0.625 1.375,0.25 0.125,1.125 1.25,1.25 -0.875,1.25 -1.625,0.875 0.125,3.125 -0.25,2.625 -0.875,2.75 -1.75,0.5 1.5,2.875 -0.5,3.75 1,1.5 -1.5,1.375 -0.25,3.875 c 0,0 1.5,0.125 2.25,1.125 0.75,1 1.75,2.375 1.75,2.375 0,0 -0.375,2.125 0.875,2.625 1.25,0.5 2.125, [...]
+           id="path3991"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -36.73664,-63.35938 c -0.5,0.25 -3.125,1.625 -3.125,1.625 l -0.5,1 c 0,0 1.375,0.25 1.75,0.5 0.375,0.25 1.75,1.125 1.75,1.125 l 1.875,-2.125 -1.125,-0.75 -0.625,-1.375 z"
+           id="path3993"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -33.98664,-63.48438 2.125,1.25 1.125,-1.375 -1.875,-1 -1.375,1.125 z"
+           id="path3995"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -43.98664,-59.10938 -1.375,2 1.625,1.625 1.125,-2.5 -1.375,-1.125 z"
+           id="path3997"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -111.23664,-4.35838 -1.75,3.75 2.5,-0.5 0.25,-2.625 2.25,-1.75 -0.875,-1.375 -1.625,1.375 -0.125,1.125 -0.625,0 z"
+           id="path3999"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -121.36164,-3.23338 -1.75,1.375 -1.25,1.125 1.875,1.125 1.875,-1.875 -0.75,-1.75 z"
+           id="path4001"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -118.23664,-0.98338 -0.625,2.125 1.5,0.875 1.125,-2.125 -2,-0.875 z"
+           id="path4003"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -128.23664,-5.35838 -0.5,2.25 1.75,0.375 0.875,-1.875 -2.125,-0.75 z"
+           id="path4005"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 58.679414,-18.775374 -2.917,-1.583 -4.5,-0.75 -1.5,-2.25 -4.5,-1.75 -5.75,0.5 -2.5,3 0,4.5 -1.25,3 -3.5,2.5 -3.25,-2.75 -9.25,-1.75 -3.5,-1.75 0,-3.25 -4.5,-2.25 -4.5000001,-1 -3.5,0 -3.49999997,-1.25 -0.5,2.5 -5.50000003,3.5 -0.25,5.75 -2.75,0.5 -0.25,1.75 1,3.0000001 1.5,3.25 -0.5,3 0.25,3.00000005 0,4.24999995 -2.25,2.75 2.25,2.25 2.25,5.9999999 2.75,0 3,3.25 1.5,2 6.25,1.5 2.2500001,2 8.25,-3.25 34.25,17.75 0.75,-2.25 4.25,0.5 -0.083,-9 0.167,-35.4999999 -0.833,-3.750 [...]
+           id="path4007"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -8.7365861,-13.358374 -1.7499999,-8.5 -3,-2.25 -0.75,-2.25 -2.5,-5.25 3.25,-4.75 -0.25,-7.5 -0.5,-1.5 0.5,-0.75 2.25,-1 1.7499999,-1 3,-0.5 1.25,1.75 2.5,1.25 -0.75,1.75 -0.25,2.5 2.25,3.25 -1.25,2.25 -2.5,2 -2.25,1.75 1.75,1.5 3,-0.5 1,1.75 0.25,1.5 -0.25,1.75 2.25000003,0.5 -0.5,2.5 -5.50000003,3.5 -0.25,5.75 -2.75,0.5 z"
+           id="path4009"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -35.736586,41.391626 10.75,-3.25 26.7499999,-18 -3.5,-4.25 -2.75,0 -2.25,-5.9999999 -2.25,-2.25 2.25,-2.75 -0.25,-7.25 0.5,-3 -2.5,-6.2500001 0.25,-1.75 -1.7499999,-8.5 -3,-2.25 -3.25,-7.5 3.25,-4.75 -0.25,-7.5 -0.5,-1.5 -2,-1.25 -3.5,-0.5 -3,0.25 -3,0.5 -4.25,0 -3.25,-0.75 -3.25,1 -3.75,0.75 -3.75,0.5 -3.25,1 -3.5,3 -3.5,0 -4.25,3.75 1.75,3 0.75,7.75 1.75,1.25 -0.5,3 -5.75,1 -1.75,1.5 -3,0.75 0.25,3.25 -5.5,3 -2.25,2.7500001 -3.75,1.25 -1.5,2 -2.25,-1 -4.5,2.5 -2.75,1.5  [...]
+           id="path4011"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -87.736586,0.14162615 -18.500004,-0.25 6,-2.50000005 2.750004,-2.5 3.75,-1.5 1,-5.2500001 0,-5.5 1.5,-3 1.75,-1.75 -0.5,-1.25 3.5,-4 3.5,-1.75 4.25,-2.5 1.75,-3.75 1.25,-5 1.25,-0.5 2,2.25 2,1.25 3,-0.25 2.25,0.25 2.75,0.25 4,0 1.75,3 0.75,7.75 1.75,1.25 -0.5,3 -5.75,1 -2.5,1.75 -2.25,0.5 0.25,3.25 -5.5,3 -2.25,2.7500001 -3.75,1.25 -1.5,2 -2.25,-1 -7.25,4 -0.25,3.75000005 z"
+           id="path4013"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -122.73659,31.391626 16.75,-0.75 -1,-6.75 1.5,-2.5 3.5,-0.5 0.5,-12.2499999 14.000004,0 -0.25,-8.49999995 -18.500004,-0.25 -1.75,3.74999995 -1.5,2.5 -3,1.25 -0.75,3.4999999 -1.25,3.25 -2.5,3 -2.75,3.25 -1.5,5.5 -1.75,2 0.25,3.5 z"
+           id="path4015"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -92.236586,58.391626 2.5,-1.25 2.25,0.5 15.25,-0.25 0.25,-3 -1.5,-0.75 -3.75,-40 5,-0.25 -15,-10.4999999 -0.25,5.75 -14.000004,0 -0.5,12.2499999 -3.5,0.5 -1.5,2.5 1,6.75 -16.75,0.75 0,1.75 1,4 -0.25,2 0.75,2.25 1.5,1.75 0,3.5 -0.75,3.5 -1,3.25 4,-0.25 3.25,-0.25 2,1.75 2.75,0.5 1.75,2.25 4.25,4 2,-1 2.250004,-3 2.25,1.25 2.25,-1 2.5,0.75 z"
+           id="path4017"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -102.23659,63.141626 2.750004,2.25 0.75,2.25 0.5,4 4.5,2 2.5,-2.25 2,0 2.75,3.25 -0.25,3 3.75,1.75 3.75,0.75 2,-2 c 0,0 0.25,2 1,2 0.75,0 2.5,-1.5 2.5,-1.5 l 0.25,-2.75 1,-2.5 2.75,-1.75 1.5,-3.75 1.75,-2 2,0.25 5.25,-2.75 5.75,-4.5 5.75,0 7.25,0.5 6,-1.25 1,-2.5 2,-5.25 0.25,-0.75 0.25,-9.5 -4.75,1.25 -0.25,-3.75 -5.25,-2 -1,-1.75 -30,-20.5 -5,0.25 3.75,40 1.5,0.75 -1,3 -15.5,0 -1.25,-0.25 -3.25,1.5 -1.75,-1 -3,1.25 -1.5,-1.5 -2.250004,3 -2,1 1.25,1.75 z"
+           id="path4019"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -47.986586,60.141626 0.25,4.5 2,2 0.75,2 5.25,2 0.25,1 1.5,0.25 3,2.5 0.5,-3.75 3,-3.5 1,-2.5 8.75,0.5 2,2.75 5,-0.75 5.4999999,2.5 5.5,-2.25 4.75,-0.75 3.5,0.75 4.25,-2.75 2.0000001,-5 6,-8 0.25,-11 2.25,-4.5 -3.25,-6.25 -0.75,-6.25 -4,1 -2.2500001,-2 -6.25,-1.5 -1,-1 -26.7499999,18 -6,2 -0.25,9.5 -3.25,8.5 -5.25,1.25 -8,-0.5 -0.25,1.25 z"
+           id="path4021"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 9.2634139,65.391626 2.2500001,2.75 1.75,1 1.75,4.75 0.5,4.5 1.75,2.25 -6,1 0.5,3.25 3.75,2.25 2.25,4.5 4,0.25 1.5,0.5 8.5,-2.25 0.5,-3.5 5.25,-0.75 3.25,-2.5 2.25,-3.25 2.75,-2.75 4.5,-0.5 -2.25,-2.25 -0.5,-4.75 -3,-1 2.5,-3.25 -0.5,-2.75 2.75,-3.75 1,-3 3.5,0.25 0,-17.25 -34.25,-17.75 -4.25,2.25 0.75,6.25 3.25,6.25 -2.25,4.5 -0.25,11 -6,8 -2.0000001,5 0.5,0.75 z"
+           id="path4029"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 108.51341,62.391626 2.75,-0.25 2.125,1.375 1.75,-1.75 1.75,1.375 3.25,-0.75 1.375,1 2.62491,0.75 2.875,2.5 1.75,1.375 1.75,-0.125 3.625,2.5 1.875,-0.5 -3.625,-3.375 -2.5,-2.375 -3.75,-3.375 -2.49991,-1.125 -0.625,-1.5 -1.375,-0.5 -1.375,-4 -1.5,-5.375 -1.75,-2.125 -3.5,2.75 -1,0.625 -0.75,0.5 -2.875,9 -0.375,3.375 z"
+           id="path4033"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 103.51341,102.14163 2.625,0.75 0.375,3.25 4.75,0 4.5,3.5 6.75,0.875 0.875,-2 3.49991,-2.25 1.125,1.875 2.875,0.5 2,-1.375 2.25,-0.375 3.375,-2.375 6,-0.375 13.875,-13.500004 -4.625,0.25 -13.625,-5.375 -4.375,-4.75 0.125,-3.75 -2.375,-0.125 -1,0.75 -0.625,-4 1.125,-3.5 -2.5,-2.25 -1.75,0.125 -4.75,-3.5 -2.49991,-1.125 -1.375,-1 -3.25,0.75 -1.75,-1.375 -1.75,1.75 -2.125,-1.375 -2.75,0.25 -1,6.5 -2.25,0.75 -2.75,4.75 -0.5,3.5 -3.249996,0.75 -1.75,9.5 -2.375,0.5 0,3 2.375,1 4 [...]
+           id="path4035"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 137.38832,75.766626 -1.5,1.25 -2.375,-0.125 -1,0.75 -0.375,-3.625 0.875,-3.875 1.125,0.25 1.875,-0.5 1.375,2.375 -0.125,2.75 0.125,0.75 z"
+           id="path4037"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 138.38832,76.891626 1.625,2.125 3.25,1.75 3.5,-0.375 2.5,-1.5 3.375,0.375 2.875,-2.125 2.25,0.25 3.375,-0.5 5.375,-0.625 2.5,-2.25 3,0.5 -0.5,1.75 0,3.125 1.125,1.125 -2,0.75 -0.25,2.5 -0.75,3.125 c 0,0 -1.375,0.125 -1.375,0.5 0,0.375 -2.625,4.375 -2.625,4.375 l -2.75,5 -1.875,4.500004 -3,2.875 -0.375,2.5 -9.125,8.875 -4.75,2.625 -5.875,4.375 -3.375,4.25 -4,5.25 -2.5,-3.875 0.375,-15.875 2.5,-2.125 0,-1.5 2,-1.375 2.25,-0.375 2.75,-2.125 6.25,-0.5 14.25,-13.625004 -4.625, [...]
+           id="path4039"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 99.263414,109.26663 0.625,2.75 1.749996,3.5 0,3.75 -4.624996,5 0.125,5.25 16.999996,9.25 0,2.125 6.5,4.375 2.875,-4.5 3.24991,-6 3.75,-2.75 -2.5,-3.875 0.5,-15.5 2.375,-2.5 0,-1.5 -2.875,-0.5 -1.125,-1.875 -3.49991,2.25 -0.875,2 -6.75,-0.875 -4.5,-3.5 -4.75,0 -0.375,-3.25 -2.625,-0.75 -5.624996,4.875 1.375,2.25 z"
+           id="path4041"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 79.013414,131.26663 3,-1.375 14.75,-0.625 0.25,-5 4.624996,-5 0.125,-3.25 -1.999996,-3.625 -0.5,-3.125 -1.375,-2.25 -3.375,2.375 -9.75,0.75 -1.125,0.125 0.125,4.375 2.125,0.875 -1.125,1.625 -6.125,6.375 0.375,7.75 z"
+           id="path4043"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 76.763414,132.76663 -0.75,2.375 0.75,3 1.25,-0.25 1,0.125 1.125,-2.25 3.625,-0.375 0,-2.875 -1.75,-2.625 -3.125,1.75 -2.125,1.125 z"
+           id="path4045"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 76.513414,139.64163 1.25,5.125 1.75,-0.125 3.875,-3.875 -0.125,-1.875 -0.5,-1.25 1,-2.25 -3.625,0.375 -1.125,2.25 -1,-0.125 -1.25,0.25 -0.25,1.5 z"
+           id="path4047"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 77.513414,146.89163 1,3.5 0.125,2.75 3.25,3.25 c 0,0 1.375,4.625 1.75,5.125 0.375,0.5 4.75,2.875 4.75,2.875 l 4.625,0.875 5.125,1.875 1.375,2.25 0.999996,5.25 3.125,0 3,-0.625 0.75,1.125 6.375,-0.375 1.375,-1.75 1.75,1.25 2.5,-1.25 6.37491,-1.25 -3.49991,-3.625 -0.125,-3.125 -1.625,-3.125 -0.125,-4.375 1.125,-2 -3.5,-2.875 1.25,-3.5 1.375,-3.875 -6.5,-4.375 0,-2.125 -17.374996,-9.5 -14.75,0.625 1.75,2.625 0,2.875 -1,2.25 0.625,3.125 -3.875,3.875 -1.75,0.125 -0.25,2.125 z"
+           id="path4049"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 17.179414,92.391626 -2.333,4 -1.333,2.667 -1,0 1.333,4.000004 2.167,3.833 0.5,3.167 4,3.5 3.167,-5 6.667,0.5 0.833,-2.167 3.167,-4.167 5.333,2.334 8.167,1.833 1.667,-2.667 4,1 2.833,-2 1.5,0.667 3.833,-1.5 2.333,1 2.833,-0.667 3.917,1.667 -0.5,-2.75 -3.75,-3.000004 -1,-3.5 -4.5,-1.5 -1.833,-1.417 -0.917,-2.583 -3,-0.5 -0.5,-2.5 -1.75,-0.5 0,-5 -2.625,-2.25 -0.542,-2.167 -3.667,0.5 -3.833,4.167 -2.167,2.5 -2.667,2 -5.25,0.75 -0.5,3.5 -8.5,2.25 -1.917,-0.667 -3,0.167 -1.166,0.5 z"
+           id="path4051"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -121.31959,55.391626 -0.167,2.666 -2.833,2 2.167,5.334 4.667,0 2.833,-1 2,1.833 2.167,0.333 -0.167,0.667 -3.167,0 -1.667,-0.667 -4.667,1.167 -2.667,0.333 -0.333,3.334 5.5,-0.334 2.5,-1.5 7.667,0.167 3.167,1.167 6.083004,0.75 -0.25,-3.084 -1,-3.166 -2.333004,-1.667 -1.667,-2.333 -4.833,-4.167 -1,-1.667 -2.5,-0.833 -2.417,-1.833 -7.25,0.5 0.167,2 z"
+           id="path4053"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -122.15359,72.224626 2.833,1 1.833,0.833 0.833,3.834 1.5,-1.334 2,-2.333 2.833,-0.5 -0.167,-1.833 1.333,-2 -6,-0.334 -2.5,1.5 -5.5,0.334 1.002,0.833 z"
+           id="path4055"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -122.15359,65.391626 -0.667,2.666 6.833,-1.5 2.667,0.5 2.667,0.167 0.167,-0.667 -2.167,-0.333 -2,-1.833 -2,1 -5.5,0 z"
+           id="path4057"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -115.81959,78.391626 1.5,-0.834 1,2.334 2.167,2.333 1.833,1 0.667,2 2.667,0.333 1.667,-2.333 1.5,-1.5 2,0.333 1.667004,-1.333 0.833,0.5 2.167,5.167 -0.333,2.5 2.5,-1 1.833,0.166 1.5,3.334 0.167,1.5 2,0 2.167,-1.5 1.5,-1.5 0.333,-2 1.667,-0.667 -1.167,-4.167 -0.667,-2.333 1,-1 -3.083,-2.083 0.25,-3 -2.75,-3.25 -2,0 -2.5,2.25 -4.5,-2 -6.083004,-0.75 -3.167,-1.167 -1.667,0.167 -1.333,2 0.167,1.833 -2.833,0.5 -3.5,3.667 0.831,0.5 z"
+           id="path4059"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -100.48659,96.391626 2.000004,-3.667 2.333,-1.667 1.167,-1.166 0.167,-1.334 -1.5,0 0.167,-2.166 -2.167,-5.167 -0.833,-0.5 -1.833004,1.667 -1.833,-0.667 -1.5,1.5 -1.667,2.333 -2,0 0,2.667 1.167,2 1.333,0.667 0.667,2.666 4.332,2.834 z"
+           id="path4061"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -71.486586,80.724626 3.5,1.833 0.833,-0.833 3.5,0.333 1.833,2 -0.167,-7.166 10.333,-0.334 1.5,-0.333 2.167,0.667 2.833,0.166 1.833,-1.666 2.333,-0.334 1.667,-2.666 -0.417,-1.75 -5.25,-2 -0.75,-2 -2,-2 -0.417,-5.75 -5.333,0 -5.333,4.5 -5.667,2.75 -2,-0.25 -1.667,1.666 -1.667,4.5 -2.667,1.334 -1,2.5 -0.25,2.75 2.253,2.083 z"
+           id="path4063"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -87.320586,97.224626 3.333,1.333 2.667,2.334004 -0.833,4.333 -0.5,1.5 -6.5,-2.333 -3.167,-3 -3.333,-2.667004 -2.333,-1.167 -2.500004,-1.166 2.000004,-3.667 3.5,-2.833 0.167,-1.334 2.667,-0.5 1.5,3.334 0.167,1.5 2,0 1.667,-1 0.833,2.833 -0.167,1.5 -1.168,1 z"
+           id="path4065"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -79.820586,106.39163 6.333,-3 7,-0.167 3.5,-0.333 1.333,-0.334 -0.167,-2.5 -1.667,-4.000004 1.667,-4.833 1,-3.833 -1,-3.334 -1.333,-1.833 -4,-0.5 -0.833,0.833 -5.75,-3.916 -2.5,1.5 -1,-2 -2.417,2.083 -4,-0.5 -1,1 1.833,6.5 -1.667,0.667 -0.333,2 -2,2 0.833,2.833 -0.167,1.5 -1.167,1 6,3.167004 -1.333,6.333 2.835,-0.333 z"
+           id="path4067"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -48.486586,79.724626 -0.333,4.334 1.167,-0.167 0,4 0.5,4.833 0.333,3 2.333,2.834 -1.5,1.666004 -4.167,0.5 -3.833,2 -3,1 -2.5,1.167 -1.667,-1 -3,-0.833 2.5,-0.501 -0.167,-2.5 -1.667,-4.000004 2.667,-8.666 -1,-3.334 -0.167,-7.166 10.333,-0.334 1.5,-0.333 0.667,1.667 1.001,1.833 z"
+           id="path4069"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -46.153586,78.891626 2.5,3.833 1,5.167 0.667,7.667 0.5,2 -3,1 -2.333,-2.834 -0.833,-11.166 -1.167,-0.5 0.5,-4 -1.833,-3.834 4.167,1 -0.168,1.667 z"
+           id="path4071"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -37.486586,97.058626 -0.167,-11.834 3,-3.333 1,-3.5 0.5,0 -1.833,-4 -3,-2.5 -1.5,-0.25 -1,3.25 -2.833,0.5 -2,2.167 -0.667,-0.334 -0.167,1.667 2.5,3.833 0.833,4.167 0.833,8.333 0.5,2.334 4.001,-0.5 z"
+           id="path4073"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -31.320586,97.558626 3.833,3.666004 0.833,5.334 5.833,0.166 5.833,-1.333 1.373,-0.823 1.961,-1.177 1,-4.000004 5.4999999,-5 4.66700003,2.333 4.16699997,-7.833 2.167,-2.667 1.667,-3.5 1.333,-3 1.5000001,-3 2.333,-1.5 -0.5,-3.333 -0.833,-4.167 -2.8330001,-2.5 -4,2.167 -3.5,-0.75 -4.667,1.25 -5.5,2.167 -5.5829999,-2.917 -4.583,0.583 -2.417,-2.583 -8.75,-0.5 -1,2.5 -3,3.5 -0.5,3.75 1.667,3.333 -1.333,4.167 -2.5,3 -0.333,12.167 6.165,0.5 z"
+           id="path4075"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -7.9865861,110.89163 0.167,4.5 21.1670001,0.167 4.333,1.166 2.667,1.334 -0.167,-2.167 0.333,-2.333 -4,-3.5 -0.333,-2.667 -3.667,-8.333004 1,0 4.25,-7.417 -2.083,-4.083 -3.917,-2.667 -0.5,-3.25 6,-1 -1.75,-2.25 -0.667,-5.167 -1.583,-4.083 -1.583,-0.583 1,6.666 -2.333,1.5 -4.5000001,10 -2.167,2.167 -4.16699997,7.833 -4.16700003,-2.166 -5.9999999,4.833 -1,4.000004 -2.333,1.5 1,2 0.833,-0.667 1.167,2.167 2.6669999,-0.667 -0.667,2.334 1,0.833 z"
+           id="path4077"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -0.48658607,115.55863 -0.66700003,5.666 -4.833,-0.5 -0.667,1.334 -1.5,-1 -1.667,-0.667 2,-5 7.33400003,0.167 z"
+           id="path4079"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 7.5134139,115.55863 0.333,4.5 4.6670001,-0.667 -0.167,2.5 -1.167,1.833 -0.667,1.834 0.5,1.833 2.167,0.667 -0.5,6 -1.667,1.833 -2.0000001,-0.667 -2.5,0 -2.5,-2 -0.167,2.5 -2.333,-0.5 -1.33299997,1 0.667,2.5 1.33299997,0.5 -0.833,2.5 -2.16699997,-0.166 -1.16700003,1 -8.4999999,-9 -2.167,-4.667 2.333,-1.333 -0.167,-4.5 2.3329999,-2 1,1 1.167,-1.334 4.833,0.5 0.66700003,-5.666 8.00199997,0 z"
+           id="path4085"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 30.346414,109.05863 -0.167,2.666 -2.167,6.5 -1.667,4.334 0,4.166 -6.833,8 -0.167,6 -4.833,5 -2.167,-2 -2.5000001,1.5 -2,1.167 -1.5,0 -1.5,2.167 -1.833,1.833 0,2.333 3.833,-1.5 1.167,-1.5 2.8330001,1.334 10.833,-0.167 1.5,6.167 3.333,2.666 7.833,-0.166 0.167,-1.834 -0.333,-1.666 5,-0.834 0,2.167 5.5,-0.333 -0.333,2.166 0.833,4 -1.333,3 2.667,4.334 0.167,1.666 7.167,0.834 1.667,0 0.5,1 2.5,-1 2.333,1.833 4.667,1.833 1.667,-1.666 2.833,2.166 1.333,1 1.667,1.667 2.667,2.333 2 [...]
+           id="path4087"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 23.679414,108.55863 6.167,0.5 0.333,2.666 -3.833,11.334 0,3.666 -6.833,8 -0.167,6 -4.833,5 -2.667,-2 -4.0000001,2.667 -1.5,0 0,-1.667 -1.5,-0.166 -3.167,2.5 -1.49999997,-2.334 -2.16700003,-2.166 1.16700003,-1 2.16699997,0.166 0.667,-2.166 -1.16699997,-0.834 -0.667,-2.5 1.33299997,-1 2.333,0.5 0.667,-2.333 1.833,1.333 2.667,0.5 2.0000001,0.667 1.667,-1.833 0.5,-6 -2.167,-0.667 -0.5,-1.833 0.667,-1.834 1.167,-1.833 0.167,-2.5 -4.6670001,0.667 -0.333,-4.5 5.8330001,0 4.333,1 [...]
+           id="path4089"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 53.346414,173.05863 0,3.5 0.333,2.666 -0.5,2 -8,-0.333 0.333,15.5 2.333,1.833 2.167,1.5 0.667,1.334 6.833,-0.334 1.167,1.334 7.333,1.166 6,-5.333 2.333,-0.667 1,-3.5 5,-1.666 -0.5,-1.667 13.167,-4.833 -0.667,-2.334 0.833,-3.166 1.333,-1 0,-5.167 1.833,-2.5 -3.333,-6.125 -4.625,-0.875 -5.708,-3.333 -7,1.666 -1.833,3.334 0.333,2.333 0,3.5 -1.167,2.667 0.667,1.833 2.333,2.5 2.833,-1.167 0.667,4 -0.833,0.5 -3,0 -4.333,-4 -4.167,-3.166 -1.667,1.666 -4.667,-1.833 -2.333,-1.833  [...]
+           id="path4091"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 99.346414,188.05863 0.5,3.666 -0.667,3.5 2.499996,2.834 0.833,1.666 1,-4 1.333,-1.5 0.833,-5.666 -4.5,-5 -1.666996,-3 0.999996,-5.917 -0.999996,-5.25 -1.375,-2.25 -5.125,-1.875 2.833,5.625 -1.333,3 0,5.167 -1.333,1 -0.833,3.166 0.667,2.334 2,1.5 1,1.5 1.667,-0.667 1.667,0.167 z"
+           id="path4093"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 81.346414,192.39163 1.167,2.167 4,0.166 3,1.667 2.333,1 1,3.833 0,4.834 -1.5,1.666 1.5,2.334 0.167,2.833 -2,3.5 -1.5,3.167 -3.667,5.166 2.167,3.334 c 0,0 -1,2.166 -0.333,2.666 0.667,0.5 2.5,7.334 2.5,7.334 l -0.667,3.166 0.333,3.834 2.667,-0.334 -0.333,-2.666 -0.667,-0.167 1,-2.333 4.667,-1.5 4.666996,-3 1,-5.334 0.5,-7.333 -2,-1.333 -0.167,-3.667 -1.999996,-2.667 0.999996,-2.666 3.5,-1.5 2.333,-2.834 2.667,-0.166 0.833,-4 5.167,-2.5 4.833,-1.5 2.333,-2.334 2.83291,-3.333 [...]
+           id="path4095"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 163.17932,177.39163 -2.5,3.833 c 0,0 0,2 -0.5,2 -0.5,0 -4,0.5 -4,0.5 l 0.333,3.5 -1.667,2.334 -1.833,2.166 -3,1.334 1.333,2.5 -3,-1 -4.667,0.833 -1.5,0.833 0.333,1.834 -2.333,2.833 0.333,4.5 1,3.5 1.5,3.333 -1.5,3.167 -1.5,2.333 -1.333,2 -1.667,2.167 0.833,6 2.167,2.167 -1.333,2.666 2.5,3.5 c 0,0 2,1 2.333,1.667 0.333,0.667 2.333,2.333 2.333,2.333 l 2.5,-2 3.333,-0.333 3.167,-3.167 2.333,-8.666 3.5,-12.167 3.5,-9.667 0.333,-4 0.833,-2.666 -0.167,-3.5 0.667,-1.167 1,1.667  [...]
+           id="path4097"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 59.680414,202.72463 0.5,2 1.167,0.834 1.833,4.333 1.167,2 2.833,1 2,1.667 1.5,1.166 0.167,2.5 3.667,2.334 2.167,1.666 4,0.167 5.167,2.333 4.167,-5.833 3,-6 -0.167,-2.833 -1.5,-2.334 1.5,-2.333 0,-4.167 -1,-3.833 -5.333,-2.667 -4,-0.166 -1.167,-2.167 -1,-0.333 -5,1.666 -1,3.5 -2.333,0.667 -6,5.333 -6.335,-0.5 z"
+           id="path4099"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 0.84641393,200.22463 3.83299997,-0.666 3,-0.334 3.3330001,1.5 17.667,0 4.667,1.834 11.667,0.666 5.667,-2.166 6.833,-0.334 2.167,2 -2.167,0 -1.833,0.834 -3.333,2.166 -1.833,-1.666 -8.333,1.333 -0.833,0.333 0,16.167 -4,0.333 0.167,30.834 -2.667,0.666 -0.667,1.167 -4.167,0 -4.167,-0.5 -1.833,-2.5 -1,0 -1.667,2.333 -4.667,-4.833 -2,-5.333 -1.167,-4.667 -0.167,-3.667 -1.167,-4 -0.167,-4.5 0.167,-1.666 -1.667,-3.334 -1.8330001,-2 -3,-7 -1.167,-3.666 -3.5,-3.5 -0.16599997,-5.834 z"
+           id="path4101"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 9.8464139,171.89163 -1,6 -2,3.5 c 0,0 -2.833,2.999 -3,3.666 -0.167,0.667 -1.833,7 -1.833,7 l -1.83299997,5.334 0.667,2.833 6.33299997,-1 3.8330001,1.5 17.667,0 4.667,1.834 11.667,0.666 5.667,-2.166 -0.667,-1.334 -4.167,-2.833 -0.667,-16 8,0.333 0.5,-2 -0.333,-6.166 -6.667,-0.834 -0.167,-1.666 -2.667,-4.334 1.333,-3 -0.833,-4 0.333,-2.166 -5.167,-0.001 -0.333,-1.833 -5,0.834 0.333,1.666 -0.167,1.834 -6.833,0.166 -4.333,-2.666 -1.5,-6.167 -10.833,0.167 -2.8330001,-1.334 -1. [...]
+           id="path4103"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 1.6794139,147.05863 1.333,3.333 2.333,-2.667 1,-1.333 0,-1.667 -1.5,-0.166 -3.166,2.5 z"
+           id="path4105"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 37.513414,236.64163 2.75,3.25 0,3.75 0.25,1.75 6.25,-0.75 0.75,-2.75 3.25,-4 1.25,0.75 5.75,1 3.5,0 2,-4.25 1.5,-0.5 2.25,-5 4.5,-4.25 3,-2.25 2.167,-1.167 -5.833,-4 -0.167,-2.5 -3.5,-2.833 -2.833,-1 -3,-6.333 -1.167,-0.834 -0.5,-2 -2.167,0 -5.167,3 -1.833,-1.666 -9.167,1.666 0,16.167 -4,0.333 0.167,14.417 z"
+           id="path4107"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 45.513414,281.64163 4.5,0 2.5,-0.75 4.5,1.5 2.75,-1.75 2,-1.25 4.5,-0.5 3.25,-2 2.75,-2.5 4.75,-4.25 3.5,-4 5.75,-9.25 4.5,-4.5 1.75,-7.667 -2.667,0.334 -1.333,2.583 -4.75,-0.75 -0.25,-3.5 1.5,-3.25 4.25,0 0.917,-2.083 -1.917,-6.917 -1,-1.5 0.75,-1.583 -2.167,-3.334 -5.167,-2.333 -4,-0.167 -9.667,7.667 -2.25,5 -1.5,0.5 -2,4.25 -5.25,-0.25 -4,-0.75 -1.25,-0.75 -3.25,4 -0.75,2.75 -6.25,0.75 -0.25,-5.5 -2.75,-3.25 0,16.417 -2.667,0.666 -0.667,1.167 -4.167,0 -4.167,-0.5 -1.83 [...]
+           id="path4109"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 73.763414,253.76663 -1.75,1.25 -1.75,0.5 -3,3 0.75,1.875 1.5,2.375 1.75,1.25 0.875,-1.875 2.125,-1 1.75,-0.875 0.25,-2.25 0.5,-1.625 -1.5,-1.375 -1.5,-1.25 z"
+           id="path4111"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 89.513414,242.14163 0.375,-2.5 -4.5,0.375 -1.625,2.75 0,4.125 4.875,0.375 1.208,-2.208 -0.333,-2.917 z"
+           id="path4113"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 121.51336,-84.44238 7.83296,-0.167 3.667,2 6,1.333 2.667,2.167 5.5,0.167 1.833,2.833 4.5,1.167 2.667,2.5 1.833,0.667 2,-2.167 -2,-4.167 -2.75,-4 1,-3.5 -1.5,-0.75 -1.25,-2.5 -2.25,-0.75 2.5,-2.75 2,-5.25 0.75,-2 2,2.25 1.667,-1.583 0.333,-2.5 2,-2.667 -1.167,-2 -7.167,-6.833 -1.667,-2.833 2.5,-13.167 5.167,3.667 0.833,-2.5 -0.833,-2.333 1.5,-2 0.083,-3.25 3.083,0.417 3.833,-2.167 0.5,-1.667 3,1 -0.5,2.167 2.167,-1.5 2.333,0.167 2.667,-0.833 2.833,0.833 3.333,3.333 0.667,3 [...]
+           id="path4123"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 731.51332,-324.94238 -7.333,5 1,4.333 7.333,-2 5.333,0.667 2,-5.333 -4.666,-3.667 -3.667,1 z"
+           id="path4125"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 570.51332,-349.27538 -10.667,-1.333 -5,-0.667 4,-3.667 0.667,-4.333 -4.667,-2.333 1.667,-4.667 4.333,0 -0.667,6.333 1.667,1.333 2.667,-1 4.667,1.667 2.667,4 0.333,5 -1.667,-0.333 z"
+           id="path4127"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 553.51332,-377.94238 -1.667,4 -5.667,-4.667 0,-6.667 -2.333,-3.333 3.667,-5.667 2.667,-5 5.667,3 1,5.667 2,2 2.667,-1.333 -0.333,-5 3.333,-1 6.333,4.667 2.333,1.667 5,1 2,1.667 -3.333,4 -1.667,4 -4,-2 0,-5.667 -5,-2.333 2.333,6.333 1,3 3.333,1.333 -3.333,2 -4.333,-0.333 -3.333,0.333 -5.667,2 -0.667,-3.333 -2,-0.334 z"
+           id="path4129"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 584.51332,-387.94238 2,5.333 1.667,4.333 6.667,4 6,1 2.667,-3.333 -3.667,-4.667 -4.667,-1 -3.667,-2 -7,-3.666 z"
+           id="path4131"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 364.51332,-513.10937 -2.5,9.49999 -12,4.5 -0.5,8.00001 4.5,7.49999 2.5,3.5 -5.5,2 -6.5,-2.5 3,8.5 5.5,-1.5 4,-3 1,2 -5,7 5.5,4.5 2,5 5.5,0.5 3,5 8.5,1 5.5,-4 6,2.5 -4,9.5 -1.5,9 5.5,-2.5 11.5,-0.5 5.5,-6 0.5,-6.5 -6,-6 -4,-3 -1,-5 -4.5,-1 -1.5,7 -0.75,4 -4.75,-2 -2,-5.25 0.5,-6 0.75,-5 -1.25,-5.5 -3.25,-2.25 -2.5,2 -3.5,-3.75 -1.5,-1.5 -8,1.75 -4,2.75 0,3 -2.25,-2.25 0.25,-2.25 2.25,-1.25 3,-2.5 2.75,-2.74999 4.75,0 1.5,-1.25 -0.75,-4.75 2.75,-4.50001 -1.5,-5 -3.75,-1.75  [...]
+           id="path4133"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 243.17932,-413.27538 -5.667,3 -7,6.333 -7.333,5 -5,-1 -6.667,3.333 -5.667,4.667 -6.333,5.667 -1,5 -7,1.667 0.333,6.333 0,5.333 -3.667,3 -3,6.667 3,2 -3.667,4 -0.667,3 -4.333,5 -2.667,3.667 2,4 -2,4.667 -4.333,-0.667 1.333,6 3.667,3.333 1.333,-1.667 3.667,4 -1,2.667 0.667,3 5.667,1.333 4.333,1.333 4.667,-1 2,1.667 1,-2.333 -4,-2.667 -2.333,-4.333 -2.333,-7 -0.333,-5 -0.333,-8.333 4,-3.667 1.667,-5.667 2.333,-6 1.333,-5 2.333,1 1,-5.333 1.333,-4.333 2.667,-0.667 2.667,1.333 [...]
+           id="path4135"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 160.84632,-297.27538 -3.667,3.667 1.333,4.667 6,-1 3,-4.667 -3,-2.667 -3.666,0 z"
+           id="path4137"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 49.26336,-156.10938 -4.125,0.125 -3.625,-1.25 -3.875,0.125 -1.25,0 1.25,-1.375 -0.75,-1.375 2.75,-0.625 0.25,1.25 1.375,-1.125 -0.375,-2.25 1,-0.5 -0.375,-1 1.875,1.25 2.75,1 3.5,1.125 0.25,2 -0.125,1.625 -0.5,1 z"
+           id="path4139"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 228.26332,-516.60937 -4,3.75 -3.25,6.74999 3,4.5 2.75,-3 5.25,-0.5 -2,-5.75 0.5,-5.49999 -2.25,-0.25 z"
+           id="path4141"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 166.26332,-503.10938 -1.75,4.25 -4.5,2.75 -2,-4.75 -10,-0.75 -7,4.5 c 0,0 1,4.00001 1.75,4.00001 0.75,0 5.5,2.25 5.5,2.25 l 0.5,-6.75001 3.25,-1.5 4,2 2.5,1.5 -5,1 c 0,0 -3,2.00001 -2,2.00001 1,0 5,1 5,1 l -1.5,2.75 -5.25,2 3.25,4.49999 3.75,-1.25 -0.25,3.5 3.25,-1.5 c 0,0 1.75,-2.75 1.75,-3.5 0,-0.74999 -0.25,-3.24999 -0.25,-3.24999 l 4.25,0.25 1.25,-4.25 3.5,-1.5 1.75,-4.00001 -5.25,0.25 c 0,0 0.75,-3 1.5,-3 0.75,0 3,-1.5 3,-1.5 l -3,0.25 -2,-1.25 z"
+           id="path4143"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 208.76332,-500.60938 -1.25,4.75 -1,7.75001 7.5,-0.5 c 0,0 2.75,-0.25 2.25,-1.75 -0.5,-1.5 -3,-6.00001 -3,-6.00001 l 3.25,-2 1.25,-3 -4.25,0.5 -4.75,0.25 z"
+           id="path4145"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 185.51332,-507.35938 c 0,0 -0.25,2.75 0.5,3 0.75,0.25 4,0.75 4,0.75 l 2.75,3.25 4,1.75 2.75,0.75 -1.75,-3.5 -5.5,-2.75 -0.25,-1.5 -6.5,-1.75 z"
+           id="path4147"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 197.51332,-521.60937 -2,2 4.25,3.25 3.25,-1.75 -2.75,-2.5 -2.75,-1 z"
+           id="path4149"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 194.01332,-516.35937 -0.5,2 c 0,0 -5.75,0.75 -5,1.25 0.75,0.5 4.75,1.49999 4.75,1.49999 l 3.25,-1.74999 c 0,0 3.5,1 3,0.25 -0.5,-0.75 -1.75,-2.75 -1.75,-2.75 l -3.75,-0.5 z"
+           id="path4151"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 193.51332,-488.60937 -1.75,1.75 c 0,0 -0.5,6.49999 0.25,6.24999 0.75,-0.25 5,0.25 4.75,-0.75 -0.25,-1 -0.25,-2.25 -0.25,-3.25 0,-0.99999 0,-2.74999 0,-2.74999 l -3,-1.25 z"
+           id="path4153"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 198.51332,-490.60937 c 0,0 0.25,3 0.5,4 0.25,1 1.75,4.74999 1.75,4.74999 l 1.75,-4.49999 1.5,-1 -3.5,-2.5 -2,-0.75 z"
+           id="path4155"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 192.51332,-507.85938 c 0.75,1 2,2.75 2.75,3.25 0.75,0.5 3.5,2 3.5,2 l 1.25,-2 -3.25,-3.25 -4.25,0 z"
+           id="path4157"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 211.01332,-507.60938 0.25,2.5 3.5,2 1.75,-3.5 -2.5,-1 -3,0 z"
+           id="path4159"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m 179.51332,-488.35937 -1.5,2.5 c 0,0 -5.25,2.74999 -1.5,2.99999 3.75,0.25 7.25,0.5 7.25,0.5 l -0.5,-3.49999 -3.75,-2.5 z"
+           id="path4161"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -38.15364,-132.60938 -2.5,1.333 -2.333,1.167 -1,3.333 -0.833,1.667 -3.833,1.667 -0.167,2.167 -1.5,0.5 -3.167,-0.167 -1.333,0 -1.667,-1.5 -2.167,0 0.833,2.667 0.833,1.5 0.333,2.667 -2.5,0.167 -2.333,-0.167 -2.167,-1.5 -2.333,0.167 -2.833,1.5 -2.667,0.333 c 0,0 -2.5,0 -1.833,0.333 0.667,0.333 2.167,1 2.167,1 l 1.667,1 -0.833,1.167 2,1.333 1.667,-0.167 2.333,1.5 1,1 1.167,-0.167 1.833,0.167 -0.5,2.167 1.333,1.5 0.667,1.333 2.167,2 1.5,1.667 -0.167,1.167 0.5,2.167 0.5,0.833 - [...]
+           id="path4253"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -9.98664,-81.10938 -0.5,1.667 -1,0 -1.333,1.333 -0.5,1.833 0.833,1.667 1.333,2 1,1.167 1,-2.5 0.5,-1.833 -0.5,-3.167 0,-1.5 -0.833,-0.667 z"
+           id="path4255"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -672.46094,-297.1288 -0.167,95.333 4.667,0.833 2.167,-1.333 2,1.667 0.5,2 6.333,6.333 0.5,2.667 2.167,-2 1,-1.5 1.666,-0.333 0.5,-1.5 3.167,-1 1.667,0.833 0,1.667 6.833,7.5 0.167,2.667 3.5,5.5 1.833,4.5 3.167,4 6.5,4.333 -0.834,1.833 0.167,2.5 -1.167,3 -3.166,2.583 -0.334,1.417 3.5,-1.5 0.667,2.75 -1.167,1.5 1,1.25 0.417,1.917 -2.333,0.167 1.916,2.667 1.667,-1.083 1.167,-0.417 2.416,-1.25 1.084,1.083 -1.667,2.25 -0.75,1.75 0.833,3.417 0.584,-2.583 1.916,-1.25 0.667,3.417  [...]
+           id="path4163"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -407.21094,-170.7958 -2,4.5 1.5,3 3.75,-4.75 -3.25,-2.75 z"
+           id="path4165"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -433.71094,-252.5458 -1.25,4.5 -1.5,10 -2.25,3.5 -1,3.5 6.25,-1.75 0.25,4 4.5,-0.25 2.75,-3.5 3,-3.5 1.25,1.25 3.5,2.25 4,2 4.5,-3.25 -2.5,-2.25 -4,0.25 -1.25,-6 -6.25,-2.5 -3,-4 -3.75,0.25 -3.25,-4.5 z"
+           id="path4167"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -419.21094,-224.7958 -3,1.5 -2.75,-0.5 0,4.75 4.75,0.25 2.25,-4.75 -1.25,-1.25 z"
+           id="path4169"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -409.96094,-218.7958 0.25,2.75 2,3 1.5,-5.25 -2,-0.75 -1.75,0.25 z"
+           id="path4171"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -391.46094,-281.0458 -3.75,1.25 -2,4.75 0.25,4 1.75,1.75 5.5,-0.75 1.5,-5 0.5,-4.25 -3.75,-1.75 z"
+           id="path4173"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -419.46094,-300.5458 5.5,0 4,3.5 3,-1.25 -4.5,-2 -3.75,-2.5 7,0.5 4.25,2.25 0.25,-4.75 -1,-3 5,2.5 1.75,4.75 1.5,2.5 2,2.75 3.75,2.75 -2.75,2.5 0,4 3.75,-2.25 2.75,1 1.25,1.75 2.25,1.5 0.75,0 2,4.5 1.75,1.25 1.75,7.5 -0.25,4 -1.75,2.25 3.75,1 3.25,0.25 2.5,-3.75 5,4.75 c 0,0 1.5,0.75 0.75,1.25 -0.75,0.5 -7.5,2.75 -7.5,2.75 l -2,-3.25 -5.75,-0.5 -2.25,3 -2.25,3.5 -0.25,3 -3,2.5 -6,0.75 -6.75,-0.25 c 0,0 0.25,4 0,4.75 -0.25,0.75 0.75,5.25 0.75,5.25 l 6,2 3.5,-3.25 3.75,0.5  [...]
+           id="path4175"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -564.21094,-350.7958 -5.25,4 -4.75,4.5 -4.75,6.25 -3,5.25 -4,3 -0.75,6.75 -5.25,2 -4,3.5 -2.75,-3.5 -2.25,-6.25 -6.25,-2.25 2.25,-7.25 1,-8.25 c 0,0 2,-2.75 2,-3.75 0,-1 -0.75,-6.25 0,-6.75 0.75,-0.5 4.25,-4 4.25,-4 l -4.25,-7.5 8.25,-1 3.5,-1 5.25,1 2.75,4.25 2.5,2.75 2.5,-3.75 3.75,-0.25 c 0,0 4.25,3.5 4.5,4.25 0.25,0.75 3.75,4.25 3.75,4.25 l 2.5,3 -1.5,0.75 z"
+           id="path4177"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -559.71094,-347.5458 -4.25,2.25 -5.75,2.5 -5.75,6.25 -0.75,3.75 1.5,0.5 -3.25,4.25 0.25,4 3.75,-0.5 0.25,2.75 7.75,-0.25 2.75,1.5 -6.75,2.25 -6.75,1.5 4.5,5.25 5.25,2.25 7.5,-0.5 3.75,-0.25 3.75,3.5 -1.25,1.25 -11.25,0 -6.25,3.25 3,4.5 4.5,3.25 6,0 c 0,0 2,2.5 2,3.25 0,0.75 1.75,5.5 1.75,5.5 l 5.75,0.75 8,-1 c 0,0 4.5,-2.25 5.25,-2.5 0.75,-0.25 2.75,-1.75 4.5,-1.75 1.75,0 3.75,0 4.25,-1.25 0.5,-1.25 2,-4.5 3,-4 1,0.5 4.25,3.5 4.25,3.5 -0.25,1.25 2.25,3.25 2.25,3.25 l 5.5, [...]
+           id="path4179"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -487.21094,-357.0458 -2.5,1.25 -5.5,1 -1,-2 -2.25,1.25 -1.25,2.25 -0.75,2 c 0,0 3.5,2.5 2.5,3 -1,0.5 -4.25,1.75 -2.75,1.75 1.5,0 3.5,-0.5 3.5,-0.5 0,0 2.25,1.75 1.25,2 -1,0.25 -1.25,2 -1.25,2.75 0,0.75 -0.75,3.25 -0.75,3.25 l -2.25,0.75 c 0,0 -2.75,-4.25 -3.5,-4.25 -0.75,0 -1.5,-0.75 -2,0 -0.5,0.75 0,4.5 0,5.25 0,0.75 1,3.75 1,3.75 l 4,2.5 2.5,0.25 c 0,0 1.5,2 2,3 0.5,1 1.75,4.5 1.75,4.5 l 2,3.25 2.5,0 c 0,0 3.25,-1.75 2.5,-2.5 -0.75,-0.75 -1.25,-4 -1.25,-4 l 3.75,4.25 2. [...]
+           id="path4181"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -476.71094,-386.0458 -1.75,4 -1.75,2.75 -1,3.75 7.5,6.75 4.25,-0.75 c 0,0 1.75,-2.75 1.75,-3.75 0,-1 -0.25,-7.5 -0.25,-7.5 l -3.5,-3.75 -5.25,-1.5 z"
+           id="path4183"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -479.71094,-412.2958 c 0,0 -3.25,-1.25 -2.5,1 0.75,2.25 3.5,4 1.5,4.5 -2,0.5 -2,0.5 -2,0.5 l 2.25,4.25 2,0.75 -0.5,1.75 2.5,1.25 -0.25,1.75 c 0,0 2.75,-2.5 4.25,-1.75 1.5,0.75 4.75,1.75 4.75,1.75 l 0,-2.25 1.5,0.25 1,4.25 1,3.25 -0.25,3.25 2.25,2 0.25,1 -1.25,1.25 c 0,0 -0.25,2 -0.5,2.75 -0.25,0.75 0.25,3.75 0.25,3.75 l 1,0.5 0,3.75 4.25,2.75 c 0,0 4,-0.5 4,0.25 0,0.75 0,1.5 0.75,1.75 0.75,0.25 3.25,0.25 3.25,0.25 l 0.5,-2.5 2.5,-0.25 c 0,0 2,-2.75 1.5,-1.25 -0.5,1.5 -1,4 [...]
+           id="path4185"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -490.21094,-403.2958 -2,2 -3.5,-1.75 -3.5,0.25 -0.25,3.75 c 0,0 4,3.5 3.5,4.25 -0.5,0.75 1,4.5 -0.5,3 -1.5,-1.5 -4.75,-5 -4.75,-5 l -3,-3 c 0,0 -1.5,1 -1.5,1.75 0,0.75 1.5,5.25 1.5,5.25 0,0 1.25,3.25 0.25,2.75 -1,-0.5 -2.25,-0.25 -2.5,-1.5 -0.25,-1.25 1,-3 -0.5,-3 -1.5,0 -2.75,0.75 -3,0 -0.25,-0.75 0,-3.5 0,-3.5 -0.5,-1.75 -1.75,-4 -1.75,-4 l -2.5,-1 c 0,0 -2,2.5 -1,3.5 1,1 3.5,3.5 3.5,3.5 l -3.5,1 3,2 0.75,0.5 c 0,0 -2.25,2.75 -1.5,2.75 0.75,0 4.25,0 4.25,0 l 0.5,1.25 2. [...]
+           id="path4187"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -523.71094,-392.0458 c 0,0 -3.5,4 -4.25,3.5 -0.75,-0.5 -3.75,-3.25 -3.75,-3.25 0,0 -0.5,-3.25 0.5,-4.5 1,-1.25 0.75,-4 0.75,-4.75 0,-0.75 -3,-6 -3,-6 l -4,3.75 -2,3.5 2.5,4.5 1,3 c 0,0 -3.25,2.25 -1.75,3 1.5,0.75 3.5,2.5 3.5,2.5 0,0 -0.25,3.5 -1.25,3 -1,-0.5 -6,-1.5 -6,-1.5 l -3,-2 -3,-3.75 c 0,0 -2.5,-1.25 -3,-2 -0.5,-0.75 -1.5,-4 -1.5,-4 0,0 -2,0 -2.75,0 -0.75,0 -4,-1 -4,-1 0,0 0.75,-2.75 -1,-2.75 -1.75,0 -5,-1 -5.25,0 -0.25,1 1,5 1,5 0,0 2.5,0.5 1.25,0.25 -1.25,-0.25 - [...]
+           id="path4189"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -513.96094,-382.0458 c 0,0 -2.75,2.25 -2.75,3 0,0.75 -0.25,2.75 1,2.75 1.25,0 3.25,1 3.5,0 0.25,-1 0.25,-3 0.25,-3 l -2,-2.75 z"
+           id="path4191"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -565.21094,-417.7958 -4.25,-2.75 c 0,0 -0.5,1.25 -0.5,2 0,0.75 -1.25,2.25 -3,1.75 -1.75,-0.5 -6,-1.5 -6.5,-0.5 -0.5,1 -2,5.25 -2,5.25 0,0 -0.25,1.5 -1.5,2.5 -1.25,1 -3.5,2 -4,3.25 -0.5,1.25 -1.25,3.75 -1.25,3.75 l -1.25,2 c 0,0 -4,0.5 -4.5,1.25 -0.5,0.75 0,4 0,4 0,0 1.5,-0.25 0.75,1.75 -0.75,2 -0.5,7 1,3.5 1.5,-3.5 1.25,-6.25 2.5,-4.75 1.25,1.5 1,4 1.75,4 0.75,0 3,-3.5 3,-3.5 l 3.25,2.25 c 0,0 4.25,2.25 3.25,-1 -1,-3.25 -3.25,-6.75 -1.75,-5.5 1.5,1.25 4.25,4.25 4,2 -0.25, [...]
+           id="path4193"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -572.71094,-394.5458 -4.75,4.5 -2.5,2.25 2,2.75 3.5,-3.75 1.75,-5.75 z"
+           id="path4195"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -560.71094,-408.2958 0.75,2.5 5.75,0 -1,-2.25 -5.5,-0.25 z"
+           id="path4197"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -559.21094,-432.7958 -0.75,2.75 2.75,5 0.5,-3.75 -2.5,-4 z"
+           id="path4199"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -549.46094,-442.7958 -4.25,3.75 -0.25,1.5 4.5,-0.5 2.75,2.25 1.75,-2.5 3,1 3,-2 0,-4 -1.75,-1.5 c 0,0 -1,-2.75 -2.25,-1.75 -1.25,1 -5,3.5 -5,3.5 l -1.5,0.25 z"
+           id="path4201"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -539.71094,-432.2958 -7,1 -3.25,1.25 -3.75,2.75 1.25,3.75 0.75,5 c 0,0 4,-1.25 4.25,0 0.25,1.25 -2,4 1,1.25 3,-2.75 6.75,-5.75 6.75,-5.75 0,0 1.75,-3 0,-3.25 -1.75,-0.25 -4,-0.75 -4,-0.75 0,0 1.75,-1.75 3,-2.25 1.25,-0.5 2,-2 2,-2 l -1,-1 z"
+           id="path4203"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -514.96094,-460.2958 -2.75,0 -5.5,1.75 c 0,0 1,3.5 1,4.25 0,0.75 2.75,1 2.75,1 0,0 2,0.5 1.75,1.25 -0.25,0.75 -0.25,3.75 -0.25,3.75 l 5,-4 0.5,3.25 c 0,0 -1.5,0.75 -1,2 0.5,1.25 1.75,2 1.75,2.75 0,0.75 -1.75,3.75 -3,3 -1.25,-0.75 -2.5,-2.5 -2.5,-1 0,1.5 2,7 2,7 l 3.25,-2 2.5,-2 c 0,0 1,0 1.5,0.75 0.5,0.75 0.25,1.25 1.5,1.5 1.25,0.25 3.25,0.25 3.25,0.25 l 3,3.5 2.75,2.5 0.75,3.25 5.5,-2 -2,-6 -2.25,-3.5 0.25,-4.75 c 0,0 0,-2 -0.25,-3.25 -0.25,-1.25 -2,-3.25 -2,-3.25 l -4,- [...]
+           id="path4205"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -521.46094,-425.5458 3.75,5.5 c 0,0 0,4 0.75,5 0.75,1 4.75,2.25 4.25,1.25 -0.5,-1 -0.5,-4.75 -0.5,-4.75 l -3,-3.75 -5.25,-3.25 z"
+           id="path4207"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -505.96094,-429.2958 0.25,2.75 3.75,-0.75 c 0,0 2.25,-0.5 1.25,-1.25 -1,-0.75 -3.25,-1.75 -3.25,-1.75 l -2,1 z"
+           id="path4209"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -487.71094,-449.2958 -0.25,4.5 c 0,0 1,3 0.25,3.25 -0.75,0.25 -1.5,-1.75 -0.75,0.25 0.75,2 4,7 4,7 0,0 1.25,-2 1.75,-1 0.5,1 0.75,2.25 -0.5,2.25 -1.25,0 -4.75,-1.75 -3.25,0.5 1.5,2.25 1.25,3.75 1.75,4.5 0.5,0.75 1.75,4.25 2,2.5 0.25,-1.75 1.5,-3 2.75,-3 1.25,0 5.25,1 5.5,0 0.25,-1 1,-3.5 1,-3.5 l -2.25,-3.25 2.75,-2 c 0,0 0.25,-1.25 -0.5,-2.5 -0.75,-1.25 -3.5,-3 -3.5,-3 0,0 -0.25,0 -0.75,-1 -0.5,-1 -0.75,-2.75 -2,-3.25 -1.25,-0.5 -6.5,-2.25 -6.5,-2.25 l -1.5,0 z"
+           id="path4211"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -469.46094,-425.5458 -3.75,-0.5 -4.5,0 -0.25,3 c 0,0 3,3.75 4.75,3.75 1.75,0 6,0 6,0 l 0.75,-4.25 -3,-2 z"
+           id="path4213"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -455.96094,-423.5458 c 0,0 -0.25,3.25 0.25,4 0.5,0.75 2.75,4.75 3.5,4.75 0.75,0 2.25,-1 1.75,-2.5 -0.5,-1.5 -0.75,-4.25 -0.75,-4.25 l -4.75,-2 z"
+           id="path4215"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -461.46094,-508.5458 -4.75,-4 -3.75,0 -1.5,1.25 c 0,0 -1.75,1 -0.5,1.5 1.25,0.5 2,0.25 3.25,0.75 1.25,0.5 2.75,0.5 2.75,1.25 0,0.75 -0.5,2.25 -1.75,2.25 -1.25,0 -5.5,-2 -3.75,0.25 1.75,2.25 3.25,3 0.75,2.75 -2.5,-0.25 -3.5,-1 -3.5,-0.25 0,0.75 -1.5,5.5 -0.75,6.5 0.75,1 5,2.75 5,2.75 0,0 -1.5,2.75 -2.25,2 -0.75,-0.75 -5,-2.75 -5,-2.75 0,0 -2.5,2 -1,3.5 1.5,1.5 2.25,4 2.25,4 l -2.75,1.5 0.5,3.25 2.5,-0.5 c 0,0 1.25,-0.25 1,1.25 -0.25,1.5 -0.25,1.75 1.5,1.75 1.75,0 4.25,0 4, [...]
+           id="path4217"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -433.71094,-484.5458 -4.25,-0.25 -0.25,4.75 c 0,0 0,2.5 1.25,2.75 1.25,0.25 2.5,0 3,0.75 0.5,0.75 2,2.25 -0.5,1.75 -2.5,-0.5 -4.5,-2 -4.5,-1 0,1 0.5,4.25 1.5,4.5 1,0.25 2.5,1.25 3.5,1.75 1,0.5 2.75,1.25 3,2 0.25,0.75 1.5,3.5 1.5,4.75 0,1.25 0,2 0.75,3.75 0.75,1.75 3.25,4.5 3.25,4.5 0,0 -1.25,1.5 -2,1.25 -0.75,-0.25 -0.75,-0.25 -0.75,-0.25 0,0 -5.75,-2.25 -3.5,-0.25 2.25,2 5.5,3 5.5,3 0,0 4,1.5 5.25,0.75 1.25,-0.75 4.25,-1.5 4.25,-1.5 0,0 0.5,2.5 -0.75,2.5 -1.25,0 -7,-1 -6 [...]
+           id="path4219"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -632.96094,-152.4208 -2.375,2.5 -2.625,-2.75 -2.125,1.375 2.75,5.25 1.5,0.75 0,2.5 3.75,4.625 -1.5,-4.25 -0.25,-3.125 0.375,-2.75 0.875,-1.875 -0.375,-2.25 z"
+           id="path4221"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -559.29089,-16.294794 0.333,5.333 2,4.3340001 4,4 2.333,3.666 2.334,4.667 3.333,4 0.333,5.3329999 2.334,3.667 1.333,2 1,-0.333 1.667,2.333 1.333,2.667 -1.333,1 -4,-3.334 -4.334,-2.666 -2,-2 1,-3.667 -1,-3.333 -2.333,-0.334 -1,-1.6659999 -2,-0.334 -5.667,-5.333 2.667,-0.333 c 0,0 0.666,-1.334 0.333,-2.334 -0.333,-0.99999995 -2.666,-4.666 -2.666,-4.666 l -2.334,-2.667 -2.333,0 -0.333,-4.0000001 -2,-4 -2.292,-3 -0.542,-2.833 8.5,-0.167 16.667,5.833 13.833,0 -0.333,-1.333 6.6 [...]
+           id="path4223"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -448.29089,59.205206 1.083,0.083 1,0.834 0.833,-0.5 0.584,0.666 -0.25,1.167 -3.417,2 -0.417,2.333 -1.5,1.417 -2,1.75 -1.916,-1.167 -2.167,-0.083 -2.333,0 -1.667,-1.375 0.875,-0.625 -1,-1.625 -0.042,-2.125 1.042,-3 5.375,-1.125 0.125,-0.875 -1.875,-2 0.25,-4.417 7.5,-0.333 -0.083,9 z"
+           id="path4225"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -445.29089,56.705206 -1.334,1 -0.75,1.25 -0.916,0.25 0.083,-9 1.125,-0.25 1.125,-1.625 1.25,-0.375 0.5,-1.125 1.875,0.875 -1.542,0.75 -0.083,2.583 -0.333,3.084 -1,2.583 z"
+           id="path4227"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -423.21089,63.205206 -3.083,1.5 -1.667,0.25 -2.083,-0.833 -1.084,1.25 -1.333,0.833 -1.25,1.167 -0.583,0.416 -1.084,-0.333 -1.166,1.417 -2.167,1.083 -0.25,1.583 -2.083,0.834 0.25,-1.167 -1.084,-1.083 -0.666,-1.334 -1.584,-0.25 -1.416,-0.25 -2.084,-1.166 -1.25,-1.334 0.25,-2.083 3.584,-2.25 0.083,-0.917 2,-0.5 1,-1 2,1.084 2.083,-0.917 2.75,-0.417 1.75,-0.583 1,0.917 3.75,0.166 2.334,1.667 -1.25,0.75 1.583,0.75 0.5,-1.083 1.917,0.25 0.333,1.583 z"
+           id="path4229"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -450.38089,69.205206 2.25,0.667 0.75,1.416 2.334,0.084 1.5,-0.334 1.416,-0.916 -0.416,-1.334 -3,-0.5 -1.917,-0.916 -1.417,-1.584 -3.083,2.75 1.583,0.667 z"
+           id="path4231"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -433.96089,79.955206 1.75,-0.333 1.917,0.5 1.083,0 2.167,1.416 2,0.084 -0.417,-1.334 0.083,-3 1,-2.083 -0.5,-2.083 0.834,0.333 0,-4.333 0.916,-1.75 0.417,-2.334 -0.5,-1.833 -3.083,1.5 -1.667,0.25 -1.833,-0.917 -0.834,1.417 -1.833,0.75 -1.833,1.583 -0.834,-0.333 -1.416,1.417 -2.167,1.333 -0.167,1.667 -2.166,0.5 -0.25,0.666 1.916,1.834 1.5,1.666 1.25,1.334 0.834,1.333 1.833,0.75 z"
+           id="path4233"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -419.88089,87.205206 -0.916,0.667 0.166,2.25 -0.916,2.083 -1.167,-1.5 -1.167,0.083 0.5,1.084 -1.75,-0.417 -0.083,-1.833 -1.75,-1.25 -1.5,-0.917 -1.583,-1.75 -0.917,-0.083 -0.083,1.083 -2.084,-1.25 -1.416,-1.667 0.25,-1.5 0.083,-1.166 -0.167,-1.25 2.167,-0.25 1.833,0.75 1.167,-0.25 2.167,1.166 2,0.334 1.416,3 1.417,1.166 2.333,1.417 z"
+           id="path4235"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -399.88089,97.038206 1.917,-0.833 0.667,-2.083 -0.167,-2.084 -0.917,-1.25 -1.583,-1.583 -0.667,-1 -1.583,-0.25 -1.667,-0.333 -1.083,0 -0.833,-0.5 -2.25,0 -0.417,1 -1.583,0.666 -1.417,0.334 -1.667,0.833 c 0,0 -0.834,0.583 -1,0.333 -0.166,-0.25 -1.333,-1 -1.333,-1 l -1.417,-0.416 -0.416,0.916 -1.25,-0.416 -0.084,-1.084 -1,-0.916 -1.166,0.5 0.166,2.25 -0.916,2.083 1.333,0.667 2.5,0.083 1.5,0.5 0.583,0.417 -0.583,1.083 0.167,1.75 0.75,-1.5 2.083,0.167 0.417,1.666 2,-0.166 1.3 [...]
+           id="path4237"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -397.63089,99.205206 0.167,5.667004 -0.667,2 1,4.333 1.334,1 -1.334,2.333 -2.166,1.667 -4.167,1.333 0,4 3.167,3 2.666,2 2,1.834 5.334,-0.667 2.5,0.5 0.333,1 3,1.5 1.833,3.167 2.5,1.666 1.5,2.667 0.5,1.333 5.167,0 2.5,-0.333 2.333,0.5 2.5,2 -1.666,3 1.333,2.333 0.833,1 0.834,-2.333 2.5,-11.167 -1.834,-2.833 -1.166,-2.667 0.166,-1.833 3.167,-0.667 0.167,-1.5 -2.667,-1.333 0.333,-1.667 5.334,-0.5 1,-1 1.5,1 1.5,-1.166 2.333,4.166 1,-0.833 -3.333,-6 -1.334,-1.167 1.5,-2 -1.33 [...]
+           id="path4239"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -368.13089,148.20521 -3.5,1.167 -3.833,0.666 -2.5,2.167 -1,4 -1,2.833 -1.833,1.667 -0.5,2.5 2,3.833 2.166,2.334 -0.666,1.833 2.666,0.833 1.667,1.834 4.5,-0.834 1,-2.666 1.333,5.333 5,0 2.834,4.5 -0.5,5.333 0,4.167 -1.167,3.667 -0.5,4.166 0.833,2.667 0,2.333 -1.333,3.167 -1.667,1.5 -0.166,1.833 -2.5,1.834 -0.334,-1.667 -5.333,-5.833 -3.667,-2.167 -4.666,-2.333 c 0,0 -4.668,-2 -4.834,-2.5 -0.166,-0.5 -7.333,-7.334 -7.333,-7.334 l 1.167,-0.833 -1.5,-2.167 -3.334,-6.666 -3.66 [...]
+           id="path4241"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -403.29089,122.37221 -2.334,1.666 -2.5,1.5 -1.5,0.334 0,4.333 -2,3.667 -0.166,4 1.333,2.5 2.167,-1.5 0.833,1.833 -2,2.833 0.5,2.167 -1.167,2 0.667,1.333 1.667,-0.166 2.166,1.5 2.5,0.5 2.167,-2.167 0.167,-4 2.666,-2.167 3.5,-1.666 2.834,-2.834 3.333,-2.166 -0.167,-2.334 1.167,-0.333 -1.167,-2.167 1.334,-1.166 -0.5,-1.667 -2.5,-0.5 -5.334,0.667 -2,-1.834 -2.5,-1.666 -3.166,-2.5 z"
+           id="path4243"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -458.29089,128.20521 -0.917,1.083 0.417,1.334 1.416,0.083 -1.333,1.083 0,1.5 3.167,-0.333 0.416,-1.917 -0.333,-1.833 -2.833,-1 z"
+           id="path4245"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -370.29089,80.205206 2.833,-0.333 3.5,-0.834 -2.5,-1.833 0.833,-2.333 2.667,1.5 c 0,0 -0.5,1.666 0,1.666 0.5,0 3.167,0.834 3.167,0.834 l 1.333,1.666 1.333,2.334 6.167,0.166 1.667,-0.333 4,2.167 5.166,-0.334 -0.166,-1.666 4.333,0 4.833,-0.334 -2,1.5 0.834,2.667 1,-0.833 3.666,1.833 2.167,2.333 2,0.334 1.833,1.666 0.334,1.667 -2.5,1.833 -0.334,2.167 1.334,0.333 -0.667,1.167 -4.5,1.333004 0.333,1.167 0.667,2.833 1.833,2.167 0.167,1.5 -3,1.833 -4.5,1.5 -3,1.167 -3,-0.833 -2.3 [...]
+           id="path4247"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -322.13089,107.03821 0.667,3.5 2.167,1 -1.5,1.5 -1.667,2.5 1.667,2.667 1.166,0.833 0,2.667 4.167,3 4,-3.833 2.667,-0.667 2.166,0.833 -2,-3 -1,-3.833 -1.833,-0.833 -1.5,-2.5 1,-3.334 3,-2.333 0.167,-2.5 -2.667,-2.667 -3,-1.833004 -1.333,0.667 -0.334,-2.5 -1,-1.834 -2.666,-1.333 -1.5,0.5 -2.5,1.833 -0.334,2.167 1.167,0.833 -0.5,0.667 -4.5,1.333004 1,4.334 1.833,1.833 3,0.333 z"
+           id="path4249"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -303.63089,120.87221 c 0,0 -0.667,-1.834 0,-1.834 0.667,0 3.834,-1.333 3.834,-1.333 l 3.333,-1.833 0.5,-2.834 -2.167,-2.833 0.5,-2.667 1.334,-3.166 -2.834,-1.334 -2.666,-0.166 -2.5,0.5 -4.5,-0.667 -0.167,2.5 -3,2.667 -1,3 1.5,2.5 2,1.333 0.833,3.333 2,3 3,-0.166 z"
+           id="path4251"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -297.29089,120.70521 2.833,-0.167 2.5,0.167 1.5,-3.5 1.833,-3.5 3.5,-3 -0.833,-2.333 -1.667,-0.167 -3,-2.167 -3.666,-1.5 -2,-0.166 -1.334,3.166 -0.5,2.667 2.334,3.167 -0.667,2.5 -3.333,1.833 2.5,3 z"
+           id="path4257"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -361.96089,175.20521 4.25,2.25 0.75,-2.5 6.25,-1.5 3.75,0 2.25,3.5 4.75,5.25 5.5,0.75 6.25,4.75 4,1 0.75,6.75 -0.75,1.25 4,4.25 5,-0.5 1.25,4.75 2.5,2.25 -0.25,9 -1.75,1.5 0.75,9 9.25,0.25 2,7.25 4.75,-0.5 -1.5,8 3.25,2.25 0.25,6.5 -6.75,5 -3.25,3.5 -5.5,5 3,2.25 3.25,3.5 2,0.5 8.75,6 0.5,2.75 4.25,-4.75 6.5,-6.75 -2.5,5.5 2.25,-1.5 3.25,-5.5 1,-4.5 3.5,-3.75 3.25,-4.75 -0.75,-7 0.5,-5 6.25,-3.5 6.25,-3.5 3.75,-3.75 9,-0.5 3.75,-2 2.75,-2.75 1.25,-4.75 3.75,-4.5 1.25,-1.2 [...]
+           id="path4259"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -362.21089,207.95521 2,5 2.5,0.75 -1.25,2.5 -0.25,3.75 0.5,1.75 1.5,0.5 1.75,7.75 3.25,-0.5 4.25,-4.25 3.25,1 2.5,0.75 1.25,2.25 2.75,-4 3.5,0.5 1,1.75 2,-4.5 3,-8 4.75,-0.25 4.5,-0.75 5.25,2.25 0.75,1.75 1.75,-1.5 0.25,-9 -2.5,-2.25 -1.25,-4.75 -5,0.5 -4,-4.25 0.75,-1.25 -0.75,-6.75 -4,-1 -6.25,-4.75 -5.5,-0.75 -7,-8.75 -10,1.5 -1.5,2.5 -4.167,-1.75 2.834,4.5 -0.667,6.25 0.167,3.25 -1.167,3.667 -0.5,4.166 1.25,3.417 -1,3.75 -1.5,1.5 1,1.75 z"
+           id="path4261"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -332.21089,228.70521 3.25,3 5.25,5 4,0.25 3,1.75 4,2.5 1,1.75 -2.75,3.25 -0.75,3.75 10.25,1.75 2.75,-1 0.5,-2 3.25,-2 -0.25,-3 2.25,-0.5 -1.75,-1.25 1.5,-8 -4.75,0.5 -2,-7.25 -9.25,-0.25 -0.75,-9 -0.75,-1.75 -5.25,-2.25 -3.75,0.75 -5.5,0.25 -5,12.5 1.5,1.25 z"
+           id="path4263"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -352.21089,229.45521 -0.5,4 -1,2 -4.25,2.5 -0.5,4 -1.25,2 2.5,5.75 -0.5,2 -3,-0.25 -2.75,4.75 -1,5 -0.5,3.5 -1.5,3.75 -1.75,4.5 1.75,4.75 2.75,4 -0.5,3.5 -2,3.5 -0.75,7 -2.5,1 -1.75,2.5 0.75,6.75 1.75,3.75 -2.25,2.75 -1.75,6 -0.25,6.25 0,6.5 -1,2.5 0.5,2.5 -0.25,2.75 0.75,6 2,2.5 -1.25,3.75 0.75,5 -1.5,5 -2.75,1.5 -0.5,5 -1.5,3.75 -1.75,2.75 1,4 0.25,3.5 0,2.75 3.75,-0.75 0,3 0,3.5 2,2.74998 4,-0.25 4.25,1 3.25,0.75 2.75,0.5 -2.25,-3.99998 -1.75,-1.75 0.75,-3 -0.75,-3.25  [...]
+           id="path4265"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -359.33089,397.83029 0.5,15.62505 1.875,0 -0.25,0.875 0.375,2 3,0 1,-1.375 -2,-1 2.5,0.75 2.5,0.875 3,-1.25 2.125,-0.875 -0.375,-1.62505 c 0,0 -2.75,-0.25 -3.125,-0.375 -0.375,-0.125 -3,-1.5 -3,-1.5 l -2.75,-1.25 -1.125,-2 -1,-2.125 -0.625,-1.375 -1,-1.375 -0.125,-1.125 0.625,0.375 0,-1.875 -2.125,-1.375 z"
+           id="path4267"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -313.28947,386.15257 0,3.67842 -2.31008,1.74238 -2.11758,2.71042 -0.1925,2.90403 c 0,0 3.27261,1.35521 3.08011,0.1936 -0.19251,-1.16161 -0.19251,-3.29123 1.34754,-3.09763 1.54006,0.19361 3.08011,0.19361 3.08011,0.19361 l -0.1925,-2.71042 3.85013,-0.38721 1.73257,-2.90399 -3.65763,-2.90402 -1.92507,0.77441 -2.6951,-0.1936 z"
+           id="path4269"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -317.13961,387.12057 -1.54005,-1.54881 -3.27262,0 -0.1925,3.09762 -2.88761,1.16161 1.15504,3.09759 -2.69509,-0.5808 -1.34755,-1.93598 0.19251,3.29119 3.08011,2.51682 3.27261,-1.16161 1.54006,-3.48483 1.73256,-0.96797 2.31008,-2.12962 -1.34755,-1.35521 z"
+           id="path4271"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -230.30809,402.77339 7.2553,7.1813 4.9642,6.75905 0.3819,-6.75905 -3.8186,-4.2243 -8.7828,-2.957 z"
+           id="path4273"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -429.46089,31.205206 2,-0.333 0,-2.334 3.833,-1.5 3.5,-0.5 2.5,-1.5 2.5,0.167 3.5,0.667 2.167,1.666 c 0,0 1.333,-0.999 1.833,-0.666 0.5,0.333 1.834,2.833 1.834,2.833 l 3.833,-0.333 2.333,1.5 3.167,2.833 2.833,0.833 4.5,1.167 -1.333,1.667 4.167,0 2.166,0.5 0.167,1.333 -2.5,2 -4.833,0.167 -7.5,-0.834 2.666,-2 -2.166,-1.166 -2.667,-0.334 -1.667,-3 -2,-1.333 -3.166,0 -4,-1.833 -2.334,0 -3.833,-1.667 1.333,-0.833 -0.833,-0.5 -3.667,0.5 -2,1.833 -2.5,0.5 -2.333,1.833 -1.5,-1.333 z"
+           id="path4275"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -421.96089,31.538206 -0.5,2 1.833,-0.166 0.667,-1.5 -2,-0.334 z"
+           id="path4277"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -392.29089,49.205206 -2.334,-1.167 -3.833,-0.5 -3.167,0.5 2.667,1.667 -0.167,1.667 3.667,-0.834 3.167,-1.333 z"
+           id="path4279"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -373.46089,41.372206 0.333,1.666 -0.333,1.5 0.167,1.334 0.833,0.333 -0.667,0.667 -0.333,2.333 -1.667,-0.5 -2.5,0.333 -1.833,-0.666 -2.5,-0.167 0,0.833 -1.167,-1.166 -1.666,-0.334 c 0,0 0.333,-0.833 0.833,-0.833 0.5,0 3.5,0.167 3.5,0.167 l 2.833,0.333 1.667,-0.5 -0.667,-1 -0.5,-2.333 -1,-0.834 -2.5,-0.666 0.667,-0.834 2.333,0 2.5,1 1.667,-0.666 z"
+           id="path4281"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -372.96089,50.372206 1.667,0.666 1.333,-2.333 2.333,-1 c 0,0 -1.166,1.001 -0.166,1.167 1,0.166 3.5,-0.167 3.5,-0.167 l 2,-1.333 1.833,0.333 1.167,1 1.666,-2.167 -1.333,-2.333 -4.167,0 -1.166,-2 -2.167,-1.167 -3.333,0 -2.167,0.334 -1.667,-0.5 0.5,2.166 -0.5,1.834 0.5,1.666 -0.333,2.667 0.5,1.167 z"
+           id="path4283"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -738.21094,39.9552 0,4.125 0.5,1.875 2.5,-1.625 1.25,-1.75 -1,-1.625 -3.25,-1 z"
+           id="path4285"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -741.96094,36.4552 1.5,1.875 2.125,-0.625 -1.25,-1.25 -2.375,0 z"
+           id="path4287"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -748.21094,33.4552 1.125,2.25 0.875,-1.375 -0.5,-1.25 -1.5,0.375 z"
+           id="path4289"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -744.83094,35.9552 2.25,0.125 -0.125,-1.875 -1.75,0.25 -0.375,1.5 z"
+           id="path4291"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -754.83094,30.4552 c 0,0 -1.625,1.75 -1.125,1.875 0.5,0.125 2.5,0.375 2.5,0.375 l 0.5,-1.25 -1.875,-1 z"
+           id="path4293"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -675.46094,-298.2958 -6.5,-3.5 -6.5,-2.5 -4,3.5 -7,-4 -11.5,-2 -7,0 -5,-2 -0.5,-3.5 -6,0 -5,-2.5 -2,-0.5 -3,-3 -4.5,-0.5 -2.5,3.5 -7,2.5 -5,2.5 -3,5.5 -5,1 -3,6.5 -1,6 -5,3.5 -7,0.5 -2.5,4.5 5,5.5 5,3.5 3.5,6 4,1.5 3.5,1 c 0,0 -0.5,3 1,3 1.5,0 4,-0.5 4,-0.5 l -0.5,5.5 -4,-2 c 0,0 1.5,2 0,2 -1.5,0 -6.5,0 -6.5,0 l -3,0 0.5,-4 -4.5,0.5 -3.5,2.5 -2.5,2.5 -4,3 -3.5,2 6,6 1.5,4 3.5,1.5 8,-1 3.5,2 7.5,-2.5 -1,3 2,2.5 -1.5,4.5 -4.5,1.5 -5.5,4 -3.5,-0.5 -3.5,4 c 0,0 0,0 -1.5,3 -1. [...]
+           id="path4295"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -805.96094,-230.5458 -0.25,3.25 3,0 3.5,1.25 1.25,2.75 2.25,-2 1.75,-2.25 -3.75,-1.5 -2.5,-2.25 -2.75,0.5 -2.5,0.25 z"
+           id="path4297"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -724.71094,-184.5458 -3,3.75 -3.75,3.75 -1.75,1.5 1.5,3.75 2.5,-2 1.5,0.5 2.5,-3.25 3,-0.25 -1,-4.25 2,-1.25 -3.5,-2.25 z"
+           id="path4299"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -592.79094,-114.1288 0.333,2.167 1.667,3.5 -0.834,3.667 -1.833,-2.333 -1.167,-2.667 -2.666,-0.5 -4.167,-0.5 -1.167,0 0.667,2.333 2.333,3.333 0,3.333 0.667,3.667 3,0.333 1.167,1.667 -3.667,-0.5 -1.167,0.833 0.5,3.5 -0.666,3.833 0.166,4.5 -1.166,3 -1.334,4.333 1,3 0.667,3.833 0.5,2.833 -0.667,3.833 0.5,2.667 1.167,2.667 1,3.333 0.833,2.167 3.5,2.833 1.667,-0.167 2.333,0.333 -2.5,0.667 0.667,1.167 -2.167,0.333 2,2.167 2,2.167 -0.666,1.833 2.666,3.833 2.834,2.333 0.333,2.833  [...]
+           id="path4301"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -353.29089,47.205206 2.333,-0.167 3.833,1 2.334,0 -2.167,1 -2.333,0.834 -2.834,0 -1.166,-1.667 0,-1 z"
+           id="path4303"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -400.79089,15.872206 -2,3 1.833,1.833 1.333,0.833 0.5,1.667 1.167,-2.333 -0.5,-2.334 -2.333,-2.666 z"
+           id="path4305"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -379.13089,34.372206 -1.833,0.333 -0.333,1.333 2.833,0.334 0.167,-2.167 -0.834,0.167 z"
+           id="path4307"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -366.79089,210.87221 -0.5,8.5 1.666,7.666 -2,5.334 -0.333,8.666 -0.667,4.334 -0.666,8.333 -3,4.667 1,6.333 -1.334,4.333 0.334,7 0,5.334 -2.334,5.666 -2,6.667 -1.666,7.333 -1.667,0.667 -0.333,6 0.666,8.333 -1.333,3.667 -1.333,4.667 1.666,2.666 -2,1.334 -1.666,6.333 0.666,2.333 3.667,-3.333 0.667,-5 0,-2 2.333,-1.333 1,3.666 -2.333,5.667 -0.667,6.333 -2,6.334 -2,-3 c 0,0 -2.001,2.666 -1.667,3.666 0.334,1 1.334,4 1.334,4 l -0.334,1 -2,0.334 -3.666,3 0.333,2.333 4,-2.333 1.66 [...]
+           id="path4327"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -535.29089,249.37221 -4,1 3,2 2,-2 -1,-1 z"
+           id="path4329"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <path
+           d="m -293.96089,281.20521 0.25,2.25 -1.75,4.75 -3.5,1.75 -6.5,0 -3,-1.25 -2.25,-1.25 -2.25,-0.5 -1.25,-2.5 -1,-2.25 0.75,-2.5 -0.5,-4.25 2,-3.25 0.75,-4.75 1.5,-2.5 3.5,1.5 3.25,3.5 2,0.5 8.75,6 0.5,2.75 -1.25,2 z"
+           id="path4331"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff" />
+        <rect
+           style="opacity:0;fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           id="rect4652"
+           width="46.024208"
+           height="31.463821"
+           x="-102.03697"
+           y="-363.61978" />
+        <path
+           d="m -135.22523,-233.95112 c -2.63439,0.20501 -6.73325,-0.86574 -7.92636,-1.90462 -1.19311,-1.03888 -4.09067,-1.2993 -6.22055,-1.73147 -2.13124,-0.43356 -5.0288,-1.55833 -3.23845,-2.16504 1.78899,-0.60532 5.53877,0.3463 4.68655,-2.33679 -0.85222,-2.68448 -0.25499,-2.77036 -1.36356,-2.68448 -1.10721,0.0873 -1.61854,-2.85624 -2.89756,-2.85624 -1.27765,0 -6.4769,0.60533 -4.77245,-0.953 1.70445,-1.55832 9.63081,0.0873 9.20401,-1.47106 -0.42543,-1.55832 -0.93676,-1.38518 -1.78898,- [...]
+           id="path1284"
+           style="fill:#000080;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.6871627;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.01163971px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 55.397714,88.459156 1.6955,-4.20113 0.1817,-1.77513 1.8773,-2.72187 3.5122,-0.35502 1.7561,3.13606 0.3028,0.82839 2.18,0.23668 1.2112,-0.5917 3.4517,0.41419 0.8478,0.76922 3.0278,0.0592 1.0294,-1.24259 2.1801,0.17751 -0.6056,-2.07099 2.7857,-1.06507 4.4811,2.78103 1.7562,-0.71005 2.9672,-4.02363 1.9378,-1.4201 -0.7266,-1.06508 0,-2.48518 -0.7267,-1.24259 2.6039,0.0592 -0.06,-0.94673 2.4828,0.17751 -0.6661,2.01181 0.4239,4.55617 3.3912,3.19523 -0.3029,-0.11837 0.4844,-2.89 [...]
+           id="path6487-7-0"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.01163971px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+           d="m 55.387614,88.418786 1.6954,-4.20113 0.1819,-1.77513 1.8772,-2.72187 3.5122,-0.35502 1.7562,3.13606 0.3028,0.82839 2.1799,0.23668 1.2112,-0.5917 3.4517,0.41419 0.8478,0.76922 3.0277,0.0592 1.0296,-1.24259 2.1801,0.17751 -0.6057,-2.07099 2.7856,-1.06507 4.4812,2.78103 1.7561,-0.71005 2.9672,-4.02363 1.9379,-1.4201 -0.7267,-1.06508 0,-2.48518 -0.7267,-1.24259 2.604,0.0592 -0.06,-0.94673 2.4829,0.17751 -0.6662,2.01181 0.4239,4.55617 3.3911,3.19523 -0.2424,0.44374 -1.4231,7.33 [...]
+           id="path6487-4-9"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccc" />
+        <path
+           d="m -394.78719,48.580936 c 0,2.21859 -1.9011,4.01388 -4.2505,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2505,1.7953 4.2505,4.01389 z"
+           id="path4313-64-90"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -395.29689,19.297706 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-7"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -354.70559,75.036756 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-02"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -346.65839,78.468676 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-54"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -39.240086,-79.793184 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-06"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -17.483186,-123.6417 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-95"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -1.4165861,-106.5709 c 0,2.21859 -1.9011,4.01388 -4.2505,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2505,1.7953 4.2505,4.01389 z"
+           id="path4313-64-90-59"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 6.4494139,-89.500104 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.34939997,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.90110003,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-541"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 6.6168139,-75.441804 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.34939997,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.90120003,-4.01389 4.2506,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-30"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 19.336214,-36.948824 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-12"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -56.645686,-120.66141 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-47"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -65.082986,-120.97582 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-37"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -65.515686,-152.92983 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-157"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -150.86969,56.940566 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-9"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -17.483186,127.06473 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-5"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 192.78432,219.94995 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-8"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 207.95172,214.25968 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-3"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 143.85252,176.93823 c 0,2.21859 -1.9011,4.01388 -4.2505,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2505,1.7953 4.2505,4.01389 z"
+           id="path4313-64-90-15-4"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 152.55532,182.12642 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-7"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 196.73862,144.97233 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-2"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 267.53212,114.17795 c 0,2.21859 -1.9011,4.01388 -4.2505,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2505,1.7953 4.2505,4.01389 z"
+           id="path4313-64-90-15-71"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 445.28582,25.688176 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-27"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 454.04312,22.374596 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-6"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 403.15602,118.23157 c 0,2.21859 -1.9011,4.01388 -4.2505,4.01388 -2.3495,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9011,-4.01389 4.2506,-4.01389 2.3494,0 4.2505,1.7953 4.2505,4.01389 z"
+           id="path4313-64-90-15-93"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 451.91292,104.03053 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-37"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 539.95932,95.273226 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-48"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 630.37252,64.267646 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-56"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 630.37252,75.155106 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-85"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 752.97482,78.705356 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-86"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 698.06412,96.930016 c 0,2.21859 -1.9011,4.013884 -4.2506,4.013884 -2.3494,0 -4.2505,-1.795294 -4.2505,-4.013884 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3495,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-368"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 716.28882,100.95365 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.221514 1.9012,-4.013894 4.2506,-4.013894 2.3494,0 4.2506,1.7953 4.2506,4.013894 z"
+           id="path4313-64-90-15-0"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 735.46022,106.39737 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-79"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 748.47782,130.06576 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-24"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 692.85712,189.94678 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-46"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 756.99842,222.37247 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-00"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 770.01602,212.19506 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-28"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 733.56672,164.6216 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-869"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 756.52502,175.03569 c 0,2.21859 -1.9011,4.01388 -4.2505,4.01388 -2.3495,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9011,-4.01389 4.2506,-4.01389 2.3494,0 4.2505,1.7953 4.2505,4.01389 z"
+           id="path4313-64-90-15-17"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 770.96282,186.15984 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-31"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <g
+           style="fill:#000080"
+           id="g10972"
+           transform="translate(-876.11048,-587.95599)">
+          <path
+             style="fill:#000080;stroke:#ffffff"
+             inkscape:connector-curvature="0"
+             id="path3965"
+             d="m 863.70684,428.01361 -0.833,-1.417 0.25,-3.125 -2.25,-0.25 -0.25,-4.875 0.25,-2.75 2,-0.375 -0.875,-2.875 1.75,-0.875 2.75,-0.75 2.125,-2.75 1.75,-1.75 1.375,-0.125 -0.875,2.125 0.75,1 -1,2.5 -1.125,0.625 1,1.625 -0.25,3 2.75,-0.875 -0.625,2.375 -3,0.625 c 0,0 -0.625,1 -0.5,1.375 0.125,0.375 0.25,2 0.25,2 l -1.25,0.25 -0.625,0.875 1.75,0.25 1.375,-1.125 1,1.5 1.5,0.875 -0.125,1.875 -2.375,0.875 -1.625,0 -0.5,-1.125 -0.25,-2 -0.375,-0.5 -0.75,0.375 -0.25,1.25 -0.125,1 0.2 [...]
+          <path
+             style="fill:#000080;stroke:#ffffff"
+             inkscape:connector-curvature="0"
+             id="path3967"
+             d="m 879.37384,418.97161 -2,0.875 -0.375,2 -1,-1.5 -1.625,1 c 0,0 -1,1.125 -0.5,1.5 0.5,0.375 1,2.625 1,2.625 l 1.375,0.25 1,1.375 -1.25,0.375 -2,0.25 0.5,1.625 1.875,0.625 0.75,-1.875 0.625,-0.75 0.625,-1.375 1.625,-0.75 -0.625,-1.625 -0.875,-1.25 0.625,-1.375 1,-0.125 -0.75,-1.875 z" />
+          <path
+             inkscape:connector-curvature="0"
+             id="path74165-7"
+             d="m 516.08118,168.06867 -1.84094,1.53417 3.86596,4.986 2.57732,3.06835 c 0,0 -3.12958,0.95885 -4.05008,1.15062 -0.92045,0.19179 0.55231,2.49302 0.55231,2.49302 l 3.49777,2.10947 c 0,0 2.20914,1.72592 2.7614,2.49302 0.5523,0.76707 1.10456,1.15062 2.20913,1.53414 1.10457,0.38355 4.05003,0.57532 4.05003,0.57532 l 2.39326,-0.38354 c 0,0 0.92045,0 1.47275,-0.76708 0.55226,-0.76707 3.31366,-2.68479 3.31366,-2.68479 l 3.68189,-0.38353 2.20913,1.53415 c 0,0 1.47276,-1.15062 2.02502 [...]
+             style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:0.68662179;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+        </g>
+        <path
+           d="m -75.39004,-217.86582 c 0,2.21859 -1.90117,4.01388 -4.25058,4.01388 -2.34941,0 -4.25056,-1.79529 -4.25056,-4.01388 0,-2.22151 1.90115,-4.01389 4.25056,-4.01389 2.34941,0 4.25058,1.7953 4.25058,4.01389 z"
+           id="path4313-64-90-15-83"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -304.84159,-100.88063 c 0,2.218586 -1.9012,4.013876 -4.2506,4.013876 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.013876 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-7-6"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 124.18832,246.68446 c 0,2.21859 -1.90121,4.01388 -4.25061,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.25061,1.7953 4.25061,4.01389 z"
+           id="path4313-64-90-15-3-5"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 162.01182,387.93695 c 0,2.21859 -1.9012,4.01384 -4.2506,4.01384 -2.3494,0 -4.2505,-1.79525 -4.2505,-4.01384 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-3-2"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 240.67142,402.66469 c 0,2.2186 -1.9012,4.0139 -4.2506,4.0139 -2.3494,0 -4.2505,-1.7953 -4.2505,-4.0139 0,-2.2215 1.9011,-4.0139 4.2505,-4.0139 2.3494,0 4.2506,1.7953 4.2506,4.0139 z"
+           id="path4313-64-90-15-3-8"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 282.17692,340.40649 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-3-1"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.5132829;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m 687.93954,632.29744 -836.17127,0 1.01972,-4.9987 32.97098,-22.21642 12.23665,-2.77706 9.857304,-7.22034 0.679814,-3.88787 -3.738977,-3.05476 -0.679814,-3.88787 3.059163,-1.11082 2.379349,3.88787 5.438513,-6.66493 3.059163,1.94394 2.379349,7.77575 5.438512,-1.94394 -1.359628,-2.77705 1.359628,-3.88788 -1.359628,-2.77705 7.817862,-1.11082 -0.679814,6.66493 13.59628,-1.11082 0,-6.38723 -1.699535,-2.77705 3.738978,-1.66623 6.79814,4.44328 -2.039442,3.61017 6.458233,5.83181 20 [...]
+           style="fill:#000080;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.81929612;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3683-1" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m 687.93954,632.29744 -836.17127,0 1.01972,-4.9987 32.97098,-22.21642 12.23665,-2.77706 9.857304,-7.22034 0.679814,-3.88787 -3.738977,-3.05476 -0.679814,-3.88787 3.059163,-1.11082 2.379349,3.88787 5.438513,-6.66493 3.059163,1.94394 2.379349,7.77575 5.438512,-1.94394 -1.359628,-2.77705 1.359628,-3.88788 -1.359628,-2.77705 7.817862,-1.11082 -0.679814,6.66493 13.59628,-1.11082 0,-6.38723 -1.699535,-2.77705 3.738978,-1.66623 6.79814,4.44328 -2.039442,3.61017 6.458233,5.83181 20 [...]
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:0.81929612;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3685-7" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -527.22806,632.29744 208.70291,0 -0.67982,0 2.03945,-0.55541 0,-5.83182 4.41879,-4.44328 -3.73898,-12.21903 6.11833,-0.83312 1.35963,-4.44329 -5.09861,-3.88787 1.01972,-4.16558 -4.07888,-3.88787 4.07888,-4.9987 -1.01972,-4.72099 -3.05916,-2.77705 0.67981,-3.61017 -5.0986,-15.82921 -4.4188,-3.61017 -5.43851,0 -2.03944,-4.16558 2.03944,-2.49934 -2.71925,-2.22165 0.67981,-4.99869 3.05916,-3.88788 4.41879,0 -1.35962,-3.61016 2.37935,-2.22165 3.39907,2.22165 3.05916,-9.71969 1 [...]
+           style="fill:#000080;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.81929612;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3687-4" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -527.22806,632.29744 208.70291,0 -0.67982,0 2.03945,-0.55541 0,-5.83182 4.41879,-4.44328 -3.73898,-12.21903 6.11833,-0.83312 1.35963,-4.44329 -5.09861,-3.88787 1.01972,-4.16558 -4.07888,-3.88787 4.07888,-4.9987 -1.01972,-4.72099 -3.05916,-2.77705 0.67981,-3.61017 -5.0986,-15.82921 -4.4188,-3.61017 -5.43851,0 -2.03944,-4.16558 2.03944,-2.49934 -2.71925,-2.22165 0.67981,-4.99869 3.05916,-3.88788 4.41879,0 -1.35962,-3.61016 2.37935,-2.22165 3.39907,2.22165 3.05916,-9.71969 1 [...]
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:0.81929612;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3689" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -630.5598,632.29744 -25.83293,0 9.5174,-4.9987 10.87702,0 5.43851,4.9987"
+           style="fill:#000080;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.81929612;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3691-0" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -630.5598,632.29744 -25.83293,0 9.5174,-4.9987 10.87702,0 5.43851,4.9987"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:0.81929612;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3693-9" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -562.23848,632.29744 -43.5081,0 0.3399,0 3.05917,-6.38723 9.51739,-11.10821 -1.35962,-7.49804 5.77842,0 4.75869,6.38722 5.77842,3.33246 0,-5.5541 14.95591,1.11082 1.69954,2.22164 -6.11833,4.44329 0,6.66492 5.43851,6.38723 -0.3399,0"
+           style="fill:#000080;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.81929612;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3695-4" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -562.23848,632.29744 -43.5081,0 0.3399,0 3.05917,-6.38723 9.51739,-11.10821 -1.35962,-7.49804 5.77842,0 4.75869,6.38722 5.77842,3.33246 0,-5.5541 14.95591,1.11082 1.69954,2.22164 -6.11833,4.44329 0,6.66492 5.43851,6.38723 -0.3399,0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:0.81929612;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3697-8" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -545.92295,632.29744 16.65545,0 -5.09861,-1.66623 -7.81786,-18.05085 -2.71926,4.44328 1.35963,13.60757 -2.71925,1.66623 0.3399,0"
+           style="fill:#000080;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.81929612;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3699-8" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -545.92295,632.29744 16.65545,0 -5.09861,-1.66623 -7.81786,-18.05085 -2.71926,4.44328 1.35963,13.60757 -2.71925,1.66623 0.3399,0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:0.81929612;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3701-2" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -381.74786,581.47736 -1.35962,2.77706 2.03944,3.88787 4.41879,1.94394 3.05916,3.88787 4.41879,1.11082 1.69954,3.88788 6.45823,1.11082 6.79814,-1.11082 5.09861,-3.05476 2.03944,-9.71969 -0.33991,-5.83181 -8.15777,-22.77183 -6.11832,2.49934 4.41879,15.82921 -1.69954,2.77705 -22.77377,2.77705"
+           style="fill:#000080;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.81929612;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3703-4" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -381.74786,581.47736 -1.35962,2.77706 2.03944,3.88787 4.41879,1.94394 3.05916,3.88787 4.41879,1.11082 1.69954,3.88788 6.45823,1.11082 6.79814,-1.11082 5.09861,-3.05476 2.03944,-9.71969 -0.33991,-5.83181 -8.15777,-22.77183 -6.11832,2.49934 4.41879,15.82921 -1.69954,2.77705 -22.77377,2.77705"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:0.81929612;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3705-5" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -381.74786,575.92326 9.5174,-1.11082 1.35963,-6.10952 -3.39907,-1.66623 -5.77842,2.49934 0.67981,2.77706 -2.37935,3.61017"
+           style="fill:#000080;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.81929612;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3707-5" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -381.74786,575.92326 9.5174,-1.11082 1.35963,-6.10952 -3.39907,-1.66623 -5.77842,2.49934 0.67981,2.77706 -2.37935,3.61017"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:0.81929612;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3709-1" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -329.06227,518.99367 4.07889,1.38852 6.45823,-4.16558 -2.37935,-2.77705 -2.37935,4.72099 -1.69953,-2.77705 -4.07889,3.61017"
+           style="fill:#000080;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.81929612;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3711-7" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -329.06227,518.99367 4.07889,1.38852 6.45823,-4.16558 -2.37935,-2.77705 -2.37935,4.72099 -1.69953,-2.77705 -4.07889,3.61017"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:0.81929612;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3713-1" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -294.05185,507.05234 2.37935,2.22164 4.41879,-0.83312 -3.73897,-3.33246 -3.05917,1.94394"
+           style="fill:#000080;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.81929612;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3715-1" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -294.05185,507.05234 2.37935,2.22164 4.41879,-0.83312 -3.73897,-3.33246 -3.05917,1.94394"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:0.81929612;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3717-5" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -306.62841,499.55429 1.69954,0.83312 -1.69954,-0.83312"
+           style="fill:#000080;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.81929612;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3719-2" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -306.62841,499.55429 1.69954,0.83312"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:0.81929612;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3721-7" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -304.92887,500.38741 5.77842,-3.33246 -5.43851,0 -2.03945,2.49934 1.69954,0.83312"
+           style="fill:#000080;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.81929612;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3723-61" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -304.92887,500.38741 5.77842,-3.33246 -5.43851,0 -2.03945,2.49934 1.69954,0.83312"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:0.81929612;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3725-4" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -307.30822,500.94282 -6.79814,1.38853 2.71926,0.83311 5.43851,-1.38852 -1.35963,-0.83312"
+           style="fill:#000080;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.81929612;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3727-2" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -307.30822,500.94282 -6.79814,1.38853 2.71926,0.83311 5.43851,-1.38852 -1.35963,-0.83312"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:0.81929612;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3729-3" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -305.94859,501.77594 -1.35963,-0.83312 1.35963,0.83312"
+           style="fill:#000080;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.81929612;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3731-2" />
+        <path
+           inkscape:connector-curvature="0"
+           d="m -305.94859,501.77594 -1.35963,-0.83312"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:0.81929612;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+           id="path3733-2" />
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.00000095px;line-height:125%;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman';letter-spacing:0px;word-spacing:0px;fill:#000080;fill-opacity:1;stroke:none"
+           x="-325.6788"
+           y="-34.073654"
+           id="text10238"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan10240"
+             x="-325.6788"
+             y="-34.073654" /></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20.00000191px;line-height:125%;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman';letter-spacing:0px;word-spacing:0px;fill:#000080;fill-opacity:1;stroke:none"
+           x="-717.97241"
+           y="46.259476"
+           id="text10242"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan10244"
+             x="-717.97241"
+             y="46.259476" /></text>
+        <text
+           xml:space="preserve"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:32px;line-height:125%;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman';letter-spacing:0px;word-spacing:0px;fill:#000080;fill-opacity:1;stroke:none"
+           x="-827.76105"
+           y="66.342789"
+           id="text10246"
+           sodipodi:linespacing="125%"><tspan
+             sodipodi:role="line"
+             id="tspan10248"
+             x="-827.76105"
+             y="66.342789" /></text>
+        <path
+           d="m -15.861526,-84.460434 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-06-3"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328301;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -628.03313,280.89936 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-6"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51300013;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -157.41464,448.26014 c 0,2.2186 -1.9012,4.0139 -4.2506,4.0139 -2.3494,0 -4.2505,-1.7953 -4.2505,-4.0139 0,-2.2215 1.9011,-4.0139 4.2505,-4.0139 2.3494,0 4.2506,1.7953 4.2506,4.0139 z"
+           id="path4313-64-90-5-9"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328301;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -145.36467,425.49914 c 0,2.2186 -1.9012,4.0139 -4.2506,4.0139 -2.3494,0 -4.2505,-1.7953 -4.2505,-4.0139 0,-2.2215 1.9011,-4.0139 4.2505,-4.0139 2.3494,0 4.2506,1.7953 4.2506,4.0139 z"
+           id="path4313-64-90-5-64"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328301;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -138.00079,320.06178 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.25051,-1.79529 -4.25051,-4.01388 0,-2.22151 1.90111,-4.01389 4.25051,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-63"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328301;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -109.21474,340.14508 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-2"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328301;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -144.3605,152.70101 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-1"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328301;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -95.491156,195.21065 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.349404,0 -4.250504,-1.79529 -4.250504,-4.01388 0,-2.22151 1.9011,-4.01389 4.250504,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-0"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328301;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -350.8837,-14.994484 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-5"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328301;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -371.73447,26.788286 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-8"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328301;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -410.12941,44.920676 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-7"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328301;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -70.721756,-41.102764 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-4"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328301;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 93.961234,-30.726394 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-62"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328301;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 281.74002,176.80096 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-01"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328301;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -745.85512,279.22576 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-6-1"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328313;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -520.92224,105.17055 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-6-6"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328313;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -113.2569,66.188856 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.0139 4.2506,-4.0139 2.3494,0 4.2506,1.79531 4.2506,4.0139 z"
+           id="path4313-64-90-15-9-1"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328301;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 207.09472,199.08685 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-2-7"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328301;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m 763.77522,110.09371 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2506,-1.79529 -4.2506,-4.01388 0,-2.22151 1.9012,-4.01389 4.2506,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-15-86-4"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328301;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -346.27222,47.609166 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-8-6"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328313;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -337.7516,44.058906 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-8-3"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328313;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -330.4144,39.798596 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-8-1"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328313;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -322.52015,43.334506 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-8-32"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328313;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -320.94704,51.159426 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-8-4"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328313;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -320.19638,59.457716 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-8-7"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328313;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -313.97328,45.490916 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-8-72"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328313;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -312.84482,53.705516 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.34941,0 -4.25051,-1.79529 -4.25051,-4.01388 0,-2.22151 1.9011,-4.01389 4.25051,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-8-2"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328313;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -311.29347,60.796606 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-8-40"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328313;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -305.19916,67.062776 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-8-5"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328313;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -314.80762,67.782266 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-8-61"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328313;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -317.67408,87.501276 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-8-34"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328313;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -318.63517,77.852206 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-8-9"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328313;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -309.8229,74.354446 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-8-0"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328313;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -299.88218,73.881076 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-8-25"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328313;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -339.41948,54.460236 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-8-24"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328313;stroke-miterlimit:4;stroke-dasharray:none" />
+        <path
+           d="m -330.382,55.715446 c 0,2.21859 -1.9012,4.01388 -4.2506,4.01388 -2.3494,0 -4.2505,-1.79529 -4.2505,-4.01388 0,-2.22151 1.9011,-4.01389 4.2505,-4.01389 2.3494,0 4.2506,1.7953 4.2506,4.01389 z"
+           id="path4313-64-90-5-8-43"
+           inkscape:connector-curvature="0"
+           style="fill:#000080;fill-opacity:1;stroke:#ffffff;stroke-width:1.51328313;stroke-miterlimit:4;stroke-dasharray:none" />
+      </g>
     </g>
   </g>
 </svg>
diff --git a/src/icons/SQLite.svg b/src/icons/SQLite.svg
new file mode 100644
index 0000000..d9af333
--- /dev/null
+++ b/src/icons/SQLite.svg
@@ -0,0 +1,175 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="SQLite.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="7.229447"
+     inkscape:cx="-17.585133"
+     inkscape:cy="18.171979"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="976"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:snap-text-baseline="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="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" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot3859"
+       style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:12px;line-height:125%;letter-spacing:0px;word-spacing:0px"><flowRegion
+         id="flowRegion3861"><rect
+           id="rect3863"
+           width="75.35714"
+           height="62.142857"
+           x="-9.4642859"
+           y="2.2142856" /></flowRegion><flowPara
+         id="flowPara3865" /></flowRoot>    <g
+       id="g3856"
+       transform="matrix(0.69904187,0,0,0.76693067,9.7429075,993.52947)"
+       style="stroke:#80b3ff;stroke-width:3.38945651;stroke-miterlimit:4;stroke-dasharray:none">
+      <path
+         transform="matrix(0.97628959,0,0,0.90577639,0.75264714,41.745822)"
+         sodipodi:open="true"
+         sodipodi:end="5.8029047"
+         sodipodi:start="5.8033439"
+         d="m 47.741363,16.691808 a 20,5 0 0 1 -8.506645,6.743279 20,5 0 0 1 -26.974053,-2.125921 20,5 0 0 1 8.500722,-6.743746 20,5 0 0 1 26.975919,2.12444"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-6"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#80b3ff;stroke-width:3.60437727;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <rect
+         y="18.943857"
+         x="10.056155"
+         height="40"
+         width="40"
+         id="rect3032"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#80b3ff" />
+      <path
+         transform="matrix(0.97628959,0,0,0.90577639,0.75264717,1.7458229)"
+         sodipodi:open="true"
+         sodipodi:end="5.8029047"
+         sodipodi:start="5.8033439"
+         d="m 47.741363,16.691808 a 20,5 0 0 1 -8.506645,6.743279 20,5 0 0 1 -26.974053,-2.125921 20,5 0 0 1 8.500722,-6.743746 20,5 0 0 1 26.975919,2.12444"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#80b3ff;stroke-width:3.60437727;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:open="true"
+         transform="matrix(0.9793945,0,0,0.87054856,0.71290745,12.690707)"
+         sodipodi:end="3.0635271"
+         sodipodi:start="0.063511676"
+         d="M 49.959676,19.317345 A 20,5 0 0 1 30.145537,23.999868 20,5 0 0 1 10.060911,19.389931"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-0"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#80b3ff;stroke-width:3.67074943;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:open="true"
+         transform="matrix(0.9793945,0,0,0.87054856,0.6219979,22.236163)"
+         sodipodi:end="3.0635271"
+         sodipodi:start="0.063511676"
+         d="M 49.959676,19.317345 A 20,5 0 0 1 30.145537,23.999868 20,5 0 0 1 10.060911,19.389931"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-0-2"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#80b3ff;stroke-width:3.67074943;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:open="true"
+         transform="matrix(0.9793945,0,0,0.87054856,0.71290699,32.327076)"
+         sodipodi:end="3.0635271"
+         sodipodi:start="0.063511676"
+         d="M 49.959676,19.317345 A 20,5 0 0 1 30.145537,23.999868 20,5 0 0 1 10.060911,19.389931"
+         sodipodi:ry="5"
+         sodipodi:rx="20"
+         sodipodi:cy="19"
+         sodipodi:cx="30"
+         id="path3012-0-1"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#80b3ff;stroke-width:3.67074943;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+         sodipodi:type="arc" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3084"
+         d="m 10.454545,19 0,40"
+         style="fill:#ffffff;stroke:#80b3ff;stroke-width:3.38945651;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path3086"
+         d="m 49.545455,19 0,40"
+         style="fill:#ffffff;stroke:#80b3ff;stroke-width:3.38945651;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:15.84499073px;line-height:120.00000477%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000080;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="-706.11664"
+       y="732.60388"
+       id="text3350"
+       sodipodi:linespacing="120%"
+       transform="matrix(0.68925322,-0.7254228,0.68925322,0.7254228,0,0)"><tspan
+         sodipodi:role="line"
+         id="tspan3352"
+         x="-706.11664"
+         y="732.60388"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:15.84499073px;line-height:120.00000477%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000080">SQLite</tspan></text>
+  </g>
+</svg>
diff --git a/src/icons/SetupWptSym.svg b/src/icons/SetupWptSym.svg
new file mode 100644
index 0000000..1bb704a
--- /dev/null
+++ b/src/icons/SetupWptSym.svg
@@ -0,0 +1,87 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64px"
+   height="64px"
+   id="svg3513"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="SetupWptSym.svg">
+  <defs
+     id="defs3515" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.5"
+     inkscape:cx="20.818182"
+     inkscape:cy="34"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1003"
+     inkscape:window-x="1920"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3518">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       id="g3057"
+       transform="translate(0.70339891,-2.1818182)">
+      <rect
+         y="12.909091"
+         x="10.181817"
+         height="40"
+         width="40"
+         id="rect2996"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+      <g
+         transform="translate(7.6363638,-19.818182)"
+         id="g2992">
+        <path
+           style="fill:#ff0000;stroke:#ff0000;stroke-width:1.34993112;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+           d="m 10.447631,33.891728 25.339695,10.78737 -28.5071566,10.7873 3.1674616,-21.57467"
+           id="path3763"
+           inkscape:connector-curvature="0" />
+        <path
+           style="fill:#000000;stroke:#000000;stroke-width:0.71901649px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
+           d="m 3.8972165,72.422998 3.6091739,-39.39145 3.6091736,0 z"
+           id="path3761"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cccc" />
+      </g>
+    </g>
+    <path
+       style="fill:#808080;stroke:#000000;stroke-width:0.70703268;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 38.605096,26.094493 -1.3484,0.0443 -0.3979,1.47959 0,0.1767 0.19895,1.2588 -1.878919,0.4638 -0.41998,-1.2146 -0.0662,-0.1325 -1.06103,-1.12626 -1.19366,0.57416 0.22103,1.5459 0.0885,0.1325 0.66313,1.0821 -1.52523,1.1926 -0.86209,-0.9275 -0.13266,-0.1105 -1.43681,-0.5963 -0.86211,1.0159 0.86211,1.3251 0.11046,0.088 1.06104,0.70666 -0.90629,1.6784 -1.17158,-0.4638 -0.15468,-0.044 -1.52524,0.044 -0.39789,1.2809 1.3042,0.8393 0.15469,0.044 1.25998,0.2208 -0.1547,1.8993 -1.25995,0 [...]
+       id="path6034-2-1"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/src/icons/SlfProject.svg b/src/icons/SlfProject.svg
new file mode 100644
index 0000000..481adbd
--- /dev/null
+++ b/src/icons/SlfProject.svg
@@ -0,0 +1,115 @@
+<?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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="64"
+   height="64"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="SlfProject.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.2"
+     inkscape:cx="15.308275"
+     inkscape:cy="35.628444"
+     inkscape:document-units="px"
+     inkscape:current-layer="g3081"
+     showgrid="true"
+     inkscape:window-width="1916"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="18"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="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" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-988.36218)">
+    <path
+       style="fill:none;stroke:#000080;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 54,1014.3622 c 0,0 -15,1 -23,6 -6.836781,4.273 14.72678,4.2732 11,8 -3.72678,3.7268 -28.376052,2.4145 -32.8593751,5.1854 -2.0050036,1.2391 -5.0000004,5 -5.0000004,5"
+       id="path3078"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csssc" />
+    <g
+       id="g3081"
+       transform="translate(-4.5367432e-7,-3.199129e-6)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path3763"
+         d="m 27.270471,992.71371 25.339695,10.78739 -28.507157,10.7873 3.167462,-21.57469"
+         style="fill:#d4aa00;stroke:#d4aa00;stroke-width:1.34993112;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:nodetypes="cccc"
+         inkscape:connector-curvature="0"
+         id="path3761"
+         d="m 20.720056,1031.245 3.609174,-39.39147 3.609174,0 z"
+         style="fill:#000000;stroke:#000000;stroke-width:0.71901649px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
+    </g>
+    <rect
+       style="fill:none;stroke:none"
+       id="rect3769"
+       width="40"
+       height="40"
+       x="2.640624"
+       y="991.49402" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:bold;font-size:14px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+       x="-1032.9608"
+       y="15.999999"
+       id="text3848"
+       sodipodi:linespacing="125%"
+       transform="matrix(0,-1,1,0,0,0)"><tspan
+         sodipodi:role="line"
+         id="tspan3850"
+         x="-1032.9608"
+         y="15.999999"
+         style="font-size:18px">SLF</tspan></text>
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot3859"
+       style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:12px;line-height:125%;letter-spacing:0px;word-spacing:0px"><flowRegion
+         id="flowRegion3861"><rect
+           id="rect3863"
+           width="75.35714"
+           height="62.142857"
+           x="-9.4642859"
+           y="2.2142856" /></flowRegion><flowPara
+         id="flowPara3865" /></flowRoot>  </g>
+</svg>
diff --git a/src/icons/makeicons b/src/icons/makeicons
index 7c37ef4..44405ad 100755
--- a/src/icons/makeicons
+++ b/src/icons/makeicons
@@ -19,6 +19,9 @@ function convert {
     if [[ $1 =~ Act.*\.svg ]]; then
         call_inkscape 16 $1 $NAME
     fi
+    if [[ $1 =~ EditDetails\.svg ]]; then
+        call_inkscape 16 $1 $NAME
+    fi
 
     call_inkscape 32 $1 $NAME
     call_inkscape 48 $1 $NAME
diff --git a/src/locale/qmapshack_es.ts b/src/locale/qmapshack.ts
similarity index 68%
copy from src/locale/qmapshack_es.ts
copy to src/locale/qmapshack.ts
index ea968bb..397a755 100644
--- a/src/locale/qmapshack_es.ts
+++ b/src/locale/qmapshack.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.1" language="es_ES">
+<TS version="2.0">
 <context>
     <name>CAbout</name>
     <message>
@@ -15,15 +15,122 @@
     </message>
 </context>
 <context>
-    <name>CCanvas</name>
+    <name>CActivityTrk</name>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="29"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="117"/>
+        <source>Foot</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="37"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="118"/>
+        <source>Bicycle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="45"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="119"/>
+        <source>Motor Bike</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="53"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="120"/>
+        <source>Car</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="61"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="121"/>
+        <source>Cable Car</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="69"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="122"/>
+        <source>Swim</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="77"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="123"/>
+        <source>Ship</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="85"/>
+        <source>Aeronautik</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="93"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="125"/>
+        <source>Ski/Winter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="124"/>
+        <source>Aeronautics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="261"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="305"/>
+        <source>Distance:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="263"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="327"/>
+        <source>Ascend:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="265"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="349"/>
+        <source>Descend:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="267"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="371"/>
+        <source>Speed Moving:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="269"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="393"/>
+        <source>Speed Total:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="271"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="415"/>
+        <source>Time Moving:</source>
+        <translation type="unfinished"></translation>
+    </message>
     <message>
-        <source>Workspace %1</source>
-        <translation type="obsolete">Espacio de Trabajo %1</translation>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="273"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="437"/>
+        <source>Time Total:</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CCanvas</name>
     <message>
         <location filename="../canvas/CCanvas.cpp" line="59"/>
         <source>View %1</source>
-        <translation>Vista %1</translation>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CColorChooser</name>
+    <message>
+        <location filename="../widgets/CColorChooser.cpp" line="51"/>
+        <source>Esc.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -60,6851 +167,7109 @@
     </message>
 </context>
 <context>
-    <name>CDemList</name>
+    <name>CCreateRouteFromWpt</name>
     <message>
-        <location filename="../dem/CDemList.cpp" line="145"/>
-        <source>Deactivate</source>
-        <translation>Desactivar</translation>
+        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
+        <source>Edit name...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/CDemList.cpp" line="145"/>
-        <source>Activate</source>
-        <translation>Activar</translation>
+        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
+        <source>Enter new route name.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>CDemPathSetup</name>
+    <name>CDBFolderLostFound</name>
     <message>
-        <location filename="../dem/CDemPathSetup.cpp" line="41"/>
-        <source>Add or remove paths containing DEM data. There can be multiple files in a path but no sub-path is parsed. Supported formats are: %1</source>
-        <translation>Añadir o quitar rutas que contienen datos DEM. Puede haber múltiples archivos en una ruta, pero no se buscará en los subdirectorios. Los formatos soportados son: %1</translation>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="30"/>
+        <source>All your data grouped by folders.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/CDemPathSetup.cpp" line="56"/>
-        <source>Select DEM file path...</source>
-        <translation>Seleccione la ruta al archivo DEM...</translation>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="59"/>
+        <source>Lost & Found (%1)</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CDemPropSetup</name>
     <message>
-        <source><b>Grade %1</b></source>
-        <translation type="vanished">Nivel %1</translation>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="64"/>
+        <source>Lost & Found</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>CDemVRT</name>
+    <name>CDBFolderMysql</name>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="44"/>
-        <location filename="../dem/CDemVRT.cpp" line="52"/>
-        <location filename="../dem/CDemVRT.cpp" line="62"/>
-        <location filename="../dem/CDemVRT.cpp" line="91"/>
-        <source>Error...</source>
-        <translation>Error...</translation>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="32"/>
+        <source>All your data grouped by folders.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="44"/>
-        <source>Failed to load file: %1</source>
-        <translation>Fallo al cargar el archivo: %1</translation>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="53"/>
+        <source>MySQL Database</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="52"/>
-        <location filename="../dem/CDemVRT.cpp" line="62"/>
-        <source>DEM must have one band with 16bit or 32bit data.</source>
-        <translation>El DEM debe tener una sola banda con datos de 16 o 32 bits.</translation>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="56"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="60"/>
+        <source>Server: </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="91"/>
-        <source>No georeference information found.</source>
-        <translation>No se encontró información de georreferenciación.</translation>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="65"/>
+        <source> (No PW)</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CDetailsGeoCache</name>
     <message>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="61"/>
-        <source>none</source>
-        <translation>ninguno</translation>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="73"/>
+        <source>Error: </source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CDBFolderSqlite</name>
     <message>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="61"/>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="131"/>
-        <source>???</source>
-        <translation></translation>
+        <location filename="../gis/db/CDBFolderSqlite.cpp" line="28"/>
+        <source>All your data grouped by folders.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="158"/>
-        <source>Searching for images...</source>
-        <translation>Buscando imagenes...</translation>
+        <location filename="../gis/db/CDBFolderSqlite.cpp" line="46"/>
+        <source>SQLite Database</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="263"/>
-        <source>No images found</source>
-        <translation>No se encontraron imagenes</translation>
+        <location filename="../gis/db/CDBFolderSqlite.cpp" line="56"/>
+        <source>File: </source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>CDetailsOvlArea</name>
+    <name>CDBItem</name>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="134"/>
-        <source>Edit name...</source>
-        <translation>Editar nombre...</translation>
+        <location filename="../gis/db/CDBItem.cpp" line="87"/>
+        <source>%1 min.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="134"/>
-        <source>Enter new area name.</source>
-        <translation type="unfinished">Introduzca el nombre del nuevo área.</translation>
+        <location filename="../gis/db/CDBItem.cpp" line="91"/>
+        <source>%1 h</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Enter new waypoint name.</source>
-        <translation type="obsolete">Editar el nombre del nuevo waypoint.</translation>
+        <location filename="../gis/db/CDBItem.cpp" line="95"/>
+        <source>%1 days</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CDBProject</name>
     <message>
-        <source><h4>Comment:</h4></source>
-        <translation type="obsolete"><h4>Comentario:</h4></translation>
+        <location filename="../gis/db/CDBProject.cpp" line="195"/>
+        <source>The item %1 has been changed by %2 (%3). 
+
+To solve this conflict you can create and save a clone, force your version or drop your version and take the one from the database</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><p>--- no comment ---</p></source>
-        <translation type="obsolete"><p>---sin comentario---</p></translation>
+        <location filename="../gis/db/CDBProject.cpp" line="201"/>
+        <source>Conflict with database...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><h4>Description:</h4></source>
-        <translation type="obsolete"><h4>Descripción:</h4></translation>
+        <location filename="../gis/db/CDBProject.cpp" line="202"/>
+        <source>Clone && Save</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><p>--- no description ---</p></source>
-        <translation type="obsolete"><p>---sin descripción---</p></translation>
+        <location filename="../gis/db/CDBProject.cpp" line="203"/>
+        <source>Force Save</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CDetailsPrj</name>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="247"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="687"/>
-        <source>none</source>
-        <translation>ninguna</translation>
+        <location filename="../gis/db/CDBProject.cpp" line="204"/>
+        <source>Take remote</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="320"/>
-        <source>Build diary...</source>
-        <translation>Creando diario...</translation>
+        <location filename="../gis/db/CDBProject.cpp" line="507"/>
+        <source>Missing folder...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Abort</source>
-        <translation type="obsolete">Cancelar</translation>
+        <location filename="../gis/db/CDBProject.cpp" line="508"/>
+        <source>Failed to save project. The folder has been deleted in the database.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="395"/>
-        <source><h2>Waypoints</h2></source>
-        <translation>Waypoints</translation>
+        <location filename="../gis/db/CDBProject.cpp" line="517"/>
+        <source>Save ...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="402"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="428"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="532"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="622"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="652"/>
-        <source>Info</source>
-        <translation>Información</translation>
+        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <source>Error</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="403"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="429"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="533"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="623"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="653"/>
-        <source>Comment</source>
-        <translation>Comentario</translation>
+        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <source>There was an unexpected database error:
+
+%1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="421"/>
-        <source><h2>Tracks</h2></source>
-        <translation>Tracks</translation>
+        <location filename="../gis/db/CDBProject.cpp" line="704"/>
+        <source>The project '%1' is about to update itself from the database. However there are changes not saved.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="615"/>
-        <source><h2>Areas</h2></source>
-        <translation>Áreas</translation>
+        <location filename="../gis/db/CDBProject.cpp" line="705"/>
+        <source>Save changes?</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CDemList</name>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="101"/>
-        <source>You want to sort waypoints along a track, but you switched off track and waypoint correlation. Do you want to switch it on again?</source>
+        <location filename="../dem/CDemList.cpp" line="198"/>
+        <source>Deactivate</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="102"/>
-        <source>Correlation...</source>
+        <location filename="../dem/CDemList.cpp" line="198"/>
+        <source>Activate</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CDemPathSetup</name>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="375"/>
-        <source><b>Summary over all tracks in project</b><br/></source>
+        <location filename="../dem/CDemPathSetup.cpp" line="41"/>
+        <source>Add or remove paths containing DEM data. There can be multiple files in a path but no sub-path is parsed. Supported formats are: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="551"/>
-        <source>distance: %1%2</source>
+        <location filename="../dem/CDemPathSetup.cpp" line="56"/>
+        <source>Select DEM file path...</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CDemVRT</name>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="553"/>
-        <source>ascent: %1%2</source>
+        <location filename="../dem/CDemVRT.cpp" line="44"/>
+        <location filename="../dem/CDemVRT.cpp" line="52"/>
+        <location filename="../dem/CDemVRT.cpp" line="61"/>
+        <location filename="../dem/CDemVRT.cpp" line="90"/>
+        <source>Error...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="555"/>
-        <source>descend: %1%2</source>
+        <location filename="../dem/CDemVRT.cpp" line="44"/>
+        <source>Failed to load file: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="645"/>
-        <source><h2>Routes</h2></source>
+        <location filename="../dem/CDemVRT.cpp" line="52"/>
+        <location filename="../dem/CDemVRT.cpp" line="61"/>
+        <source>DEM must have one band with 16bit or 32bit data.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="673"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="700"/>
-        <source>Edit name...</source>
-        <translation>Editar nombre...</translation>
+        <location filename="../dem/CDemVRT.cpp" line="90"/>
+        <source>No georeference information found.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CDetailsGeoCache</name>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="673"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="700"/>
-        <source>Enter new project name.</source>
-        <translation>Introducir nuevo nombre de proyecto.</translation>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="61"/>
+        <source>none</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="682"/>
-        <source>Edit keywords...</source>
-        <translation>Editar etiquetas...</translation>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="61"/>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="131"/>
+        <source>???</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="682"/>
-        <source>Enter keywords.</source>
-        <translation>Introducir etiquetas.</translation>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="158"/>
+        <source>Searching for images...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="816"/>
-        <source>Print Diary</source>
-        <translation>Imprimir Diario</translation>
+        <location filename="../gis/wpt/CDetailsGeoCache.cpp" line="263"/>
+        <source>No images found</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>CDetailsRte</name>
+    <name>CDetailsPrj</name>
     <message>
-        <location filename="../gis/rte/CDetailsRte.cpp" line="119"/>
-        <source>Edit name...</source>
-        <translation type="unfinished">Editar nombre...</translation>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="126"/>
+        <source>You want to sort waypoints along a track, but you switched off track and waypoint correlation. Do you want to switch it on again?</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CDetailsRte.cpp" line="119"/>
-        <source>Enter new route name.</source>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="127"/>
+        <source>Correlation...</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CDetailsTrk</name>
     <message>
-        <source>distance [%1]</source>
-        <translation type="obsolete">distancia [%1]</translation>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="270"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="738"/>
+        <source>none</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>speed. [%1]</source>
-        <translation type="obsolete">velocidad. [%1]</translation>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="343"/>
+        <source>Build diary...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>time</source>
-        <translation type="obsolete">tiempo</translation>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="398"/>
+        <source><b>Summary over all tracks in project</b><br/></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>distance. [%1]</source>
-        <translation type="obsolete">distancia. [%1]</translation>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="446"/>
+        <source><h2>Waypoints</h2></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="409"/>
-        <source>Solid color</source>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="453"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="479"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="583"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="673"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="703"/>
+        <source>Info</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="112"/>
-        <source>Reduce visible track points</source>
-        <translation>Reducir puntos visibles del track</translation>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="454"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="480"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="584"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="674"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="704"/>
+        <source>Comment</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="128"/>
-        <source>Change elevation of track points</source>
-        <translation>Cambiar elevación de puntos del track</translation>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="472"/>
+        <source><h2>Tracks</h2></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="141"/>
-        <source>Change timestamp of track points</source>
-        <translation>Cambiar fecha/hora de puntos del track</translation>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="602"/>
+        <source>distance: %1%2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="154"/>
-        <source>Cut track into pieces</source>
-        <translation>Dividir track en partes</translation>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="604"/>
+        <source>ascent: %1%2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="309"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="318"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="321"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="327"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="346"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="348"/>
-        <source>%1 %2</source>
-        <translation></translation>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="606"/>
+        <source>descend: %1%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="666"/>
+        <source><h2>Areas</h2></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="696"/>
+        <source><h2>Routes</h2></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="603"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="724"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="751"/>
         <source>Edit name...</source>
-        <translation type="unfinished">Editar nombre...</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="603"/>
-        <source>Enter new track name.</source>
-        <translation type="unfinished">Introduzca el nombre del nuevo track.</translation>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="724"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="751"/>
+        <source>Enter new project name.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="655"/>
-        <source>Reset activities...</source>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="733"/>
+        <source>Edit keywords...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="655"/>
-        <source>This will remove all activities from the track. Proceed?</source>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="733"/>
+        <source>Enter keywords.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="661"/>
-        <source>None</source>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="882"/>
+        <source>Print Diary</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CDetailsTrk</name>
     <message>
-        <source><h4>Comment:</h4></source>
-        <translation type="obsolete"><h4>Comentario:</h4></translation>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="182"/>
+        <source>Reduce visible track points</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><p>--- no comment ---</p></source>
-        <translation type="obsolete"><p>---sin comentario---</p></translation>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="185"/>
+        <source>Change elevation of track points</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><h4>Description:</h4></source>
-        <translation type="obsolete"><h4>Descripción:</h4></translation>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="188"/>
+        <source>Change timestamp of track points</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><p>--- no description ---</p></source>
-        <translation type="obsolete"><p>---sin descripción---</p></translation>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="191"/>
+        <source>Modify track points' extensions</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CDetailsWpt</name>
     <message>
-        <source><h4>Comment:</h4></source>
-        <translation type="obsolete"><h4>Comentario:</h4></translation>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="194"/>
+        <source>Cut track into pieces</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><p>--- no comment ---</p></source>
-        <translation type="obsolete"><p>---sin-comentario---</p></translation>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="411"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="419"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="422"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="427"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="441"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="443"/>
+        <source>%1 %2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><h4>Description:</h4></source>
-        <translation type="obsolete"><h4>Descripción:</h4></translation>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="508"/>
+        <source>Color</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><p>--- no description ---</p></source>
-        <translation type="obsolete"><p>---sin descripción---</p></translation>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="509"/>
+        <source>Activity</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="134"/>
-        <source>Edit name...</source>
-        <translation>Editar nombre...</translation>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="742"/>
+        <source>Reset activities...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="134"/>
-        <source>Enter new waypoint name.</source>
-        <translation>Introducir el nombre del nuevo waypoint.</translation>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="742"/>
+        <source>This will remove all activities from the track. Proceed?</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="153"/>
-        <source>Enter new proximity range.</source>
-        <translation>Introduzca el nuevo valor de proximidad.</translation>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="748"/>
+        <source>None</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>CElevationDialog</name>
+    <name>CDetailsWpt</name>
     <message>
-        <location filename="../helpers/CElevationDialog.cpp" line="83"/>
-        <source>No DEM data found for that point.</source>
-        <translation>No se encontraron datos DEM para ese punto.</translation>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="166"/>
+        <source>Enter new proximity range.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>CGisListDB</name>
-    <message>
-        <location filename="../gis/CGisListDB.cpp" line="75"/>
-        <source>Add Database</source>
-        <translation>Añadir Base de Datos</translation>
-    </message>
+    <name>CDeviceGarmin</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="78"/>
-        <source>Add Folder</source>
-        <translation>Añadir carpeta</translation>
-    </message>
-    <message>
-        <location filename="../gis/CGisListDB.cpp" line="79"/>
-        <source>Delete Folder</source>
-        <translation>Eliminar Carpeta</translation>
-    </message>
-    <message>
-        <location filename="../gis/CGisListDB.cpp" line="82"/>
-        <location filename="../gis/CGisListDB.cpp" line="92"/>
-        <source>Delete Item</source>
-        <translation>Eliminar Elemento</translation>
+        <location filename="../device/CDeviceGarmin.cpp" line="228"/>
+        <source>Picture%1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="86"/>
-        <source>Remove Database</source>
-        <translation>Quitar Base de Datos</translation>
+        <location filename="../gis/gpx/serialization.cpp" line="1039"/>
+        <source>Unknown</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CElevationDialog</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="89"/>
-        <source>Empty</source>
-        <translation>Vacío</translation>
+        <location filename="../helpers/CElevationDialog.cpp" line="83"/>
+        <source>No DEM data found for that point.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFilterDeleteExtension</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="281"/>
-        <source>Remove database...</source>
-        <translation>Quitar Base de Datos...</translation>
+        <location filename="../gis/trk/filter/CFilterDeleteExtension.cpp" line="61"/>
+        <source>No extension available</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitCrcState</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="281"/>
-        <source>Do you really want to remove '%1' from the list?</source>
+        <location filename="../gis/fit/decoder/CFitCrcState.cpp" line="32"/>
+        <source>FIT decoding error : invalid CRC.</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitDecoder</name>
     <message>
-        <source>Do you realy want to remove '%1' from the list?</source>
-        <translation type="vanished">¿Desea realmente quitar '%1' de la lista?</translation>
+        <location filename="../gis/fit/decoder/CFitDecoder.cpp" line="116"/>
+        <source>FIT decoding error: unexpected end of file %1.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitFieldBuilder</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="322"/>
-        <source>Delete database folder...</source>
-        <translation>Eliminar Carpeta de la Base de Datos...</translation>
+        <location filename="../gis/fit/decoder/CFitFieldBuilder.cpp" line="70"/>
+        <source>FIT decoding error: unknown base type %1.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitHeaderState</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="322"/>
-        <source>Are you sure you want to delete "%1" from the database?</source>
-        <translation>¿Desea realmente eliminar '%1' de la Base de Datos?</translation>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="70"/>
+        <source>FIT decoding error: protocol %1 version not supported.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="348"/>
-        <location filename="../gis/CGisListDB.cpp" line="363"/>
-        <source>Remove items...</source>
-        <translation>Eliminar elementos...</translation>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="121"/>
+        <source>FIT decoding error: file header signature mismatch. File is not FIT.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitProject</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="348"/>
-        <source>Are you sure you want to delete all items from Lost&Found? This will remove them permanently.</source>
-        <translation>¿Desea realmente eliminar todos los elementos de 'Objetos Perdidos'? Se eliminarán definitivamente.</translation>
+        <location filename="../gis/fit/CFitProject.cpp" line="44"/>
+        <location filename="../gis/fit/CFitProject.cpp" line="62"/>
+        <source>Failed to load file %1...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="363"/>
-        <source>Are you sure you want to delete all selected items from Lost&Found? This will remove them permanently.</source>
-        <translation>¿Desea realmente eliminar todos los elementos.seleccionados de 'Objetos Perdidos'? Se eliminarán definitivamente.</translation>
+        <location filename="../gis/fit/CFitProject.cpp" line="86"/>
+        <source>Failed to open FIT file %1.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>CGisListWks</name>
+    <name>CFitRecordContentState</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="101"/>
-        <source>Save</source>
-        <translation>Guardar</translation>
+        <location filename="../gis/fit/decoder/CFitRecordContentState.cpp" line="66"/>
+        <source>FIT decoding error: architecture %1 not supported.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="102"/>
-        <source>Save As...</source>
-        <translation>Guardar Como...</translation>
+        <location filename="../gis/fit/decoder/CFitRecordContentState.cpp" line="87"/>
+        <source>FIT decoding error: invalid offset %1 for state 'record content'</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CGarminTyp</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="97"/>
-        <source>Edit..</source>
-        <translation>Editar..</translation>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
+        <source>Warning...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Update Project on Devices</source>
-        <translation type="obsolete">Actualizar Proyecto en Dispositivos</translation>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
+        <source>This is a typ file with unknown polygon encoding. Please report!</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="106"/>
-        <source>Close</source>
-        <translation>Cerrar</translation>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
+        <source>This is a typ file with unknown polyline encoding. Please report!</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CGisItemOvlArea</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="112"/>
-        <source>Update Project on Device</source>
-        <translation>Actualizar Proyecto en Dsipositivo</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="36"/>
+        <source>thin</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="124"/>
-        <source>Edit...</source>
-        <translation>Editar...</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="37"/>
+        <source>normal</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="125"/>
-        <source>Copy to...</source>
-        <translation>Copiar a...</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="38"/>
+        <source>wide</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="140"/>
-        <source>Show Bubble</source>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="39"/>
+        <source>strong</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="142"/>
-        <source>Move Waypoint</source>
-        <translation>Mover Waypoint</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="78"/>
+        <source>_Clone</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="143"/>
-        <source>Proj. Waypoint...</source>
-        <translation>Proyectar Waypoint...</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="380"/>
+        <source>Area: %1%2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="151"/>
-        <source>Route Instructions</source>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="442"/>
+        <source>Changed area shape.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="153"/>
-        <source>Calculate Route</source>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="450"/>
+        <source>Changed name.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="154"/>
-        <source>Reset Route</source>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="456"/>
+        <source>Changed border width.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="155"/>
-        <source>Edit Route</source>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="462"/>
+        <source>Changed fill pattern.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="171"/>
-        <source>Create Route</source>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="468"/>
+        <source>Changed opacity.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="613"/>
-        <source>Drop items...</source>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="474"/>
+        <source>Changed comment.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="638"/>
-        <location filename="../gis/CGisListWks.cpp" line="1544"/>
-        <location filename="../gis/CGisListWks.cpp" line="1582"/>
-        <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
-        <translation type="unfinished"><b>Actualizar dispositivos</b><p>Actualizar %1<br/>Por favor espere...</p></translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="480"/>
+        <source>Changed description.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1266"/>
-        <source>Copy items...</source>
-        <translation type="unfinished">Copia elementos....</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="486"/>
+        <source>Changed links</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="127"/>
-        <source>Track Profile</source>
-        <translation>Perfil del Track</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="497"/>
+        <source>Changed color</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CGisItemRte</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="98"/>
-        <source>Show on Map</source>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="63"/>
+        <source>_Clone</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="99"/>
-        <source>Hide from Map</source>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="249"/>
+        <source>Changed name.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
-        <source>Send to Devices</source>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="255"/>
+        <source>Changed comment</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="129"/>
-        <source>Select Range</source>
-        <translation>Seleccionar Rango</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="261"/>
+        <source>Changed description</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="130"/>
-        <source>Edit Track Points</source>
-        <translation>Editar Puntos del Track</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="267"/>
+        <source>Changed links</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="131"/>
-        <source>Reverse Track</source>
-        <translation>Invertir Track</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="285"/>
+        <source>Length: %1 %2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="132"/>
-        <source>Combine Tracks</source>
-        <translation>Combinar Tracks</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="289"/>
+        <source>Length: -</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="164"/>
-        <source>Edit Area Points</source>
-        <translation>Editar Puntos del Área</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="296"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="479"/>
+        <source>Time: %1 %2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="113"/>
-        <location filename="../gis/CGisListWks.cpp" line="134"/>
-        <source>Delete</source>
-        <translation>Borrar</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="300"/>
+        <source>Time: -</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="740"/>
-        <source>Saving workspace. Please wait.</source>
-        <translation>Guardando espacio de trabajo. Por favor espere.</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="306"/>
+        <source>Last time routed:<br/>%1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="787"/>
-        <source>Loading workspace. Please wait.</source>
-        <translation>Cargando espacio de trabajo. Por favor espere.</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="308"/>
+        <source>with %1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1062"/>
-        <source>Close all projects...</source>
-        <translation>Cerrar todos los proyectos...</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="481"/>
+        <source>Distance: %1 %2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1062"/>
-        <source>This will remove all projects from the workspace.</source>
-        <translation>Esto quitará.todos los proyectos.del espacio de trabajo.</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="595"/>
+        <source>Changed route points.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>CGisWidget</name>
+    <name>CGisItemTrk</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="114"/>
-        <source>Load project...</source>
+        <location filename="../gis/fit/serialization.cpp" line="188"/>
+        <source>FIT file %1 contains no GPS data.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="114"/>
-        <source>The project "%1" is already in the workspace.</source>
+        <location filename="../gis/tnv/serialization.cpp" line="211"/>
+        <location filename="../gis/tnv/serialization.cpp" line="347"/>
+        <location filename="../gis/tnv/serialization.cpp" line="376"/>
+        <location filename="../gis/tnv/serialization.cpp" line="387"/>
+        <location filename="../gis/tnv/serialization.cpp" line="420"/>
+        <source>Error...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="461"/>
-        <source>Cut Track...</source>
-        <translation>Partir Track...</translation>
+        <location filename="../gis/tnv/serialization.cpp" line="211"/>
+        <location filename="../gis/tnv/serialization.cpp" line="347"/>
+        <source>Failed to open %1.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="461"/>
-        <source>Do you want to delete the original track?</source>
-        <translation>¿Desea borrar el track original?</translation>
+        <location filename="../gis/tnv/serialization.cpp" line="376"/>
+        <location filename="../gis/tnv/serialization.cpp" line="387"/>
+        <source>Only support lon/lat WGS 84 format.</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CGrid</name>
     <message>
-        <source>[Grid: %1] </source>
-        <translation type="obsolete">[Malla: %1] </translation>
+        <location filename="../gis/tnv/serialization.cpp" line="420"/>
+        <source>Failed to read data.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>[Grid: %1%2%5 %3%4%5] </source>
-        <translation type="obsolete">[Malla: %1%2%5 %3%4%5] </translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="124"/>
+        <source>_Clone</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>[Grid: N %1m, E %2m] </source>
-        <translation type="obsolete">[Malla: N %1m, E %2m] </translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="291"/>
+        <source>Changed trackpoints, sacrificed all previous data.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../grid/CGrid.cpp" line="61"/>
-        <source>%1 %2 </source>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="394"/>
+        <source>Length: %1 %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../grid/CGrid.cpp" line="65"/>
-        <source>%1%2%5 %3%4%5 </source>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="401"/>
+        <source>, %1%2 %3, %4%5 %6</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../grid/CGrid.cpp" line="72"/>
-        <source>%1m, %2m </source>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="409"/>
+        <source>Time: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../grid/CGrid.cpp" line="76"/>
-        <source>N %1m, E %2m </source>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="412"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="422"/>
+        <source>, Speed: %1 %2</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CHistoryListWidget</name>
     <message>
-        <location filename="../widgets/CHistoryListWidget.cpp" line="34"/>
-        <source>Cut history</source>
-        <translation>Cortar historial</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="419"/>
+        <source>Moving: %1</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CImportDatabase</name>
     <message>
-        <location filename="../tool/CImportDatabase.cpp" line="29"/>
-        <source>Import QLandkarte Database</source>
-        <translation>Importar Base de Datos de Qlandkarte</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="428"/>
+        <source>Start: %1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/CImportDatabase.cpp" line="75"/>
-        <source>Select source database...</source>
-        <translation>Seleccionar origen de base de datos...</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="433"/>
+        <source>End: %1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/CImportDatabase.cpp" line="97"/>
-        <source>Select target database...</source>
-        <translation>Seleecionar destino de base de datos...</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="437"/>
+        <source>Points: %1 (%2)</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="591"/>
-        <source>Ele: %1%2</source>
-        <translation>Alt: %1%2</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="546"/>
+        <source>Ele.: %1 %2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="607"/>
-        <source>[Grid: %1]</source>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="549"/>
+        <source> slope: %1%3 (%2%)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="732"/>
-        <source>Load GIS Data...</source>
-        <translation>Cargar Datos GIS...</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="554"/>
+        <source> speed: %1%2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="766"/>
-        <source>Select output file</source>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="582"/>
+        <source>... and %1 tags not displayed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="792"/>
-        <source>Select file to load</source>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="594"/>
+        <source>Ascend: %1%2 (%3%)</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CMapIMG</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="154"/>
-        <source>Failed ...</source>
-        <translation>Falló ...</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="598"/>
+        <source>Ascend: - (-)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="169"/>
-        <source>Unspecified</source>
-        <translation>No especificado</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="604"/>
+        <source> Descend: %1%2 (%3%)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="170"/>
-        <source>French</source>
-        <translation>Francés</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="608"/>
+        <source> Descend: - (-) </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="171"/>
-        <source>German</source>
-        <translation>Alemán</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="615"/>
+        <source>Dist.: %1%2 (%3%)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="172"/>
-        <source>Dutch</source>
-        <translation>Holandés</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="619"/>
+        <source>Dist.: - (-)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="173"/>
-        <source>English</source>
-        <translation>Inglés</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="625"/>
+        <source> Moving: %1%2 (%3%)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="174"/>
-        <source>Italian</source>
-        <translation>Italiano</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="629"/>
+        <source> Moving: - (-) </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="175"/>
-        <source>Finnish</source>
-        <translation>Finés</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="648"/>
+        <source>Ascend: %1%2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="176"/>
-        <source>Swedish</source>
-        <translation>Sueco</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="653"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="670"/>
+        <source>, %1%2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="177"/>
-        <source>Spanish</source>
-        <translation>Español</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="658"/>
+        <source>Ascend: -</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="178"/>
-        <source>Basque</source>
-        <translation>Euskera</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="665"/>
+        <source> Descend: %1%2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="179"/>
-        <source>Catalan</source>
-        <translation>Catalán</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="675"/>
+        <source>Descend: -</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="180"/>
-        <source>Galician</source>
-        <translation>Gallego</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="681"/>
+        <source>Dist.: %1%2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="181"/>
-        <source>Welsh</source>
-        <translation>Galés</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="686"/>
+        <source> Time: %1%2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="182"/>
-        <source>Gaelic</source>
-        <translation>Gaélico</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <source>Edit name...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="183"/>
-        <source>Danish</source>
-        <translation>Danés</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <source>Enter new track name.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="184"/>
-        <source>Norwegian</source>
-        <translation>Noruego</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1331"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1355"/>
+        <source>Permanently removed points %1..%2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="185"/>
-        <source>Portuguese</source>
-        <translation>Portugués</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1537"/>
+        <source>Hide points.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="186"/>
-        <source>Slovak</source>
-        <translation>Eslovaco</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1577"/>
+        <source>Show points.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="187"/>
-        <source>Czech</source>
-        <translation>Checo</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2143"/>
+        <source>Changed name</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="188"/>
-        <source>Croatian</source>
-        <translation>Croata</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2149"/>
+        <source>Changed comment</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="189"/>
-        <source>Hungarian</source>
-        <translation>Húngaro</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2155"/>
+        <source>Changed description</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="190"/>
-        <source>Polish</source>
-        <translation>Polaco</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2161"/>
+        <source>Changed links</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="191"/>
-        <source>Turkish</source>
-        <translation>Turco</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2188"/>
+        <source>Changed activity to '%1' for complete track.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="192"/>
-        <source>Greek</source>
-        <translation>Griego</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2262"/>
+        <source>Changed activity to '%1' for range(%2..%3).</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="193"/>
-        <source>Slovenian</source>
-        <translation>Esloveno</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="108"/>
+        <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="194"/>
-        <source>Russian</source>
-        <translation>Ruso</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="143"/>
+        <source>Hide points with invalid coordinates at the beginning of the track</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="195"/>
-        <source>Estonian</source>
-        <translation>Estonio</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="159"/>
+        <source>Reset all hidden track points to visible</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="196"/>
-        <source>Latvian</source>
-        <translation>Letón</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="193"/>
+        <source>Permanently removed all hidden track points</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="197"/>
-        <source>Romanian</source>
-        <translation>Rumano</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="243"/>
+        <source>Smoothed profile with a Median filter of size %1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="198"/>
-        <source>Albanian</source>
-        <translation>Albanés</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="279"/>
+        <source>Replaced elevation data with data from DEM files.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="199"/>
-        <source>Bosnian</source>
-        <translation>Bosnio</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="302"/>
+        <source>Offset elevation data by %1%2.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="200"/>
-        <source>Lithuanian</source>
-        <translation>Lituano</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="321"/>
+        <source>Changed start of track to %1.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="201"/>
-        <source>Serbian</source>
-        <translation>Serbio</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="340"/>
+        <source>Remove timestamps.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="202"/>
-        <source>Macedonian</source>
-        <translation>Macedonio</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="363"/>
+        <source>Set artificial timestamps with delta of %1 sec.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="203"/>
-        <source>Bulgarian</source>
-        <translation>Búlgaro</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="396"/>
+        <source>Changed speed to %1%2.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="260"/>
-        <source>Major highway</source>
-        <translation>Autovía Primaria</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="415"/>
+        <source>%1 (Segment %2)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="261"/>
-        <source>Principal highway</source>
-        <translation>Autovía secundaria</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="438"/>
+        <source>Removed extension %1 from all Track Points</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="262"/>
-        <source>Other highway</source>
-        <translation>Otras autovías</translation>
+        <location filename="../qlgt/converter.cpp" line="198"/>
+        <source>Copy flag information from QLandkarte GT track</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CGisItemWpt</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="263"/>
-        <source>Arterial road</source>
-        <translation>Carretera principal</translation>
+        <location filename="../gis/gpx/serialization.cpp" line="588"/>
+        <source>Archived</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="264"/>
-        <source>Collector road</source>
-        <translation>Carretera secundaria</translation>
+        <location filename="../gis/gpx/serialization.cpp" line="592"/>
+        <source>Available</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="265"/>
-        <source>Residential street</source>
-        <translation>Calle residencial</translation>
+        <location filename="../gis/gpx/serialization.cpp" line="596"/>
+        <source>Not Available</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="266"/>
-        <source>Alley/Private road</source>
-        <translation>Callejón/Carretera privada</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="102"/>
+        <source>_Clone</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="267"/>
-        <source>Highway ramp, low speed</source>
-        <translation>Acceso a autopista, baja velocidad</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="267"/>
+        <source>Elevation: %1 %2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="268"/>
-        <source>Highway ramp, high speed</source>
-        <translation>Acceso a autopista, alta velocidad</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="278"/>
+        <source>Proximity: %1 %2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="269"/>
-        <source>Unpaved road</source>
-        <translation>Carretera sin asfaltar</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="352"/>
+        <source>Changed name</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="270"/>
-        <source>Major highway connector</source>
-        <translation>Conexión con autovía principal</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="362"/>
+        <source>Changed position</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="271"/>
-        <source>Roundabout</source>
-        <translation>Rotonda</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="368"/>
+        <source>Changed elevation</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="272"/>
-        <source>Railroad</source>
-        <translation>Ferrocarril</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="374"/>
+        <source>Changed proximity</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="273"/>
-        <source>Shoreline</source>
-        <translation>Línea de costa</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="388"/>
+        <source>Changed icon</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="274"/>
-        <source>Trail</source>
-        <translation>Sendero</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="394"/>
+        <source>Changed comment</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="275"/>
-        <source>Stream</source>
-        <translation>Arroyo</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="400"/>
+        <source>Changed description</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="276"/>
-        <source>Time zone</source>
-        <translation>Zona horaria</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="406"/>
+        <source>Changed links</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="277"/>
-        <location filename="../map/CMapIMG.cpp" line="278"/>
-        <source>Ferry</source>
-        <translation>Ferry</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="412"/>
+        <source>Changed images</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="279"/>
-        <source>State/province border</source>
-        <translation>Frontera de estado/provincia</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="418"/>
+        <source>Add image</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CGisListDB</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="280"/>
-        <source>County/parish border</source>
-        <translation>Frontera de condado/término municipal</translation>
+        <location filename="../gis/CGisListDB.cpp" line="81"/>
+        <source>Due to changes in the database system QMapShack forgot about the filename of your database '%1'. You have to select it again in the next step.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="281"/>
-        <source>International border</source>
-        <translation>Frontera internacional</translation>
+        <location filename="../gis/CGisListDB.cpp" line="82"/>
+        <source>Select database file.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="282"/>
-        <source>River</source>
-        <translation>Río</translation>
+        <location filename="../gis/CGisListDB.cpp" line="115"/>
+        <source>Add Database</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="283"/>
-        <source>Minor land contour</source>
-        <translation>Curva altimétrica menor</translation>
+        <location filename="../gis/CGisListDB.cpp" line="118"/>
+        <source>Add Folder</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="284"/>
-        <source>Intermediate land contour</source>
-        <translation>Curva altimétrica intermedia</translation>
+        <location filename="../gis/CGisListDB.cpp" line="119"/>
+        <source>Delete Folder</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="285"/>
-        <source>Major land contour</source>
-        <translation>Curva altimétrica principal</translation>
+        <location filename="../gis/CGisListDB.cpp" line="122"/>
+        <location filename="../gis/CGisListDB.cpp" line="133"/>
+        <source>Delete Item</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="286"/>
-        <source>Minor depth contour</source>
-        <translation>Curva batimétrica menor</translation>
+        <location filename="../gis/CGisListDB.cpp" line="126"/>
+        <source>Sync. with Database</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="287"/>
-        <source>Intermediate depth contour</source>
-        <translation>Curva batimétrica intermedia</translation>
+        <location filename="../gis/CGisListDB.cpp" line="127"/>
+        <source>Remove Database</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="288"/>
-        <source>Major depth contour</source>
-        <translation>Curva batimétrica principal</translation>
+        <location filename="../gis/CGisListDB.cpp" line="130"/>
+        <source>Empty</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="289"/>
-        <source>Intermittent stream</source>
-        <translation>Curso intermitente</translation>
+        <location filename="../gis/CGisListDB.cpp" line="418"/>
+        <source>Remove database...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="290"/>
-        <location filename="../map/CMapIMG.cpp" line="372"/>
-        <source>Airport runway</source>
-        <translation>Pista de aterrizaje</translation>
+        <location filename="../gis/CGisListDB.cpp" line="418"/>
+        <source>Do you really want to remove '%1' from the list?</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="291"/>
-        <source>Pipeline</source>
-        <translation>Tubería</translation>
+        <location filename="../gis/CGisListDB.cpp" line="476"/>
+        <source>Delete database folder...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="292"/>
-        <source>Powerline</source>
-        <translation>Línea eléctrica</translation>
+        <location filename="../gis/CGisListDB.cpp" line="476"/>
+        <source>Are you sure you want to delete "%1" from the database?</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="293"/>
-        <source>Marine boundary</source>
-        <translation>Límite marítimo</translation>
+        <location filename="../gis/CGisListDB.cpp" line="503"/>
+        <location filename="../gis/CGisListDB.cpp" line="524"/>
+        <source>Remove items...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="294"/>
-        <source>Hazard boundary</source>
-        <translation>Límite de peligro</translation>
+        <location filename="../gis/CGisListDB.cpp" line="503"/>
+        <source>Are you sure you want to delete all items from Lost&Found? This will remove them permanently.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="359"/>
-        <source>Large urban area (&gt;200K)</source>
-        <translation>Área urbana grande (&gt;200K)</translation>
+        <location filename="../gis/CGisListDB.cpp" line="524"/>
+        <source>Are you sure you want to delete all selected items from Lost&Found? This will remove them permanently.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="360"/>
-        <source>Small urban area (&lt;200K)</source>
-        <translation>Área urbana pequeña (&lt;200K)</translation>
+        <location filename="../gis/CGisListDB.cpp" line="611"/>
+        <source>Are you sure you want to delete '%1' from folder '%2'?</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="361"/>
-        <source>Rural housing area</source>
-        <translation>Área de alojamienos rurales</translation>
+        <location filename="../gis/CGisListDB.cpp" line="612"/>
+        <source>Delete...</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CGisListWks</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="362"/>
-        <source>Military base</source>
-        <translation>Base militar</translation>
+        <location filename="../gis/CGisListWks.cpp" line="99"/>
+        <source>Edit..</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="363"/>
-        <source>Parking lot</source>
-        <translation>Aparcamiento</translation>
+        <location filename="../gis/CGisListWks.cpp" line="100"/>
+        <source>Show on Map</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="364"/>
-        <source>Parking garage</source>
-        <translation>Garaje</translation>
+        <location filename="../gis/CGisListWks.cpp" line="101"/>
+        <source>Hide from Map</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="365"/>
-        <source>Airport</source>
-        <translation>Aeropuerto</translation>
+        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <source>Save</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="366"/>
-        <source>Shopping center</source>
-        <translation>Centro comercial</translation>
+        <location filename="../gis/CGisListWks.cpp" line="105"/>
+        <source>Save As...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="367"/>
-        <source>Marina</source>
-        <translation>Puerto deportivo</translation>
+        <location filename="../gis/CGisListWks.cpp" line="108"/>
+        <source>Send to Devices</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="368"/>
-        <source>University/College</source>
-        <translation>Universidad/Facultad</translation>
+        <location filename="../gis/CGisListWks.cpp" line="109"/>
+        <source>Sync. with Database</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="369"/>
-        <source>Hospital</source>
-        <translation>Hospital</translation>
+        <location filename="../gis/CGisListWks.cpp" line="112"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="370"/>
-        <source>Industrial complex</source>
-        <translation>Complejo industrial</translation>
+        <location filename="../gis/CGisListWks.cpp" line="118"/>
+        <source>Update Project on Device</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="371"/>
-        <source>Reservation</source>
-        <translation>Reserva natural</translation>
+        <location filename="../gis/CGisListWks.cpp" line="119"/>
+        <location filename="../gis/CGisListWks.cpp" line="140"/>
+        <source>Delete</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="373"/>
-        <source>Man-made area</source>
-        <translation>Área creada por el hombre</translation>
+        <location filename="../gis/CGisListWks.cpp" line="130"/>
+        <source>Edit...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="374"/>
-        <source>Sports complex</source>
-        <translation>Complejo deportivo</translation>
+        <location filename="../gis/CGisListWks.cpp" line="131"/>
+        <source>Copy to...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="375"/>
-        <source>Golf course</source>
-        <translation>Recorrido de golf</translation>
+        <location filename="../gis/CGisListWks.cpp" line="133"/>
+        <source>Track Profile</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="376"/>
-        <source>Cemetery</source>
-        <translation>Cementerio</translation>
+        <location filename="../gis/CGisListWks.cpp" line="135"/>
+        <source>Select Range</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="377"/>
-        <location filename="../map/CMapIMG.cpp" line="378"/>
-        <location filename="../map/CMapIMG.cpp" line="379"/>
-        <source>National park</source>
-        <translation>Parque nacional</translation>
+        <location filename="../gis/CGisListWks.cpp" line="136"/>
+        <source>Edit Track Points</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="380"/>
-        <source>City park</source>
-        <translation>Parque urbano</translation>
+        <location filename="../gis/CGisListWks.cpp" line="137"/>
+        <source>Reverse Track</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="381"/>
-        <location filename="../map/CMapIMG.cpp" line="382"/>
-        <location filename="../map/CMapIMG.cpp" line="383"/>
-        <source>State park</source>
-        <translation>Parque regional</translation>
+        <location filename="../gis/CGisListWks.cpp" line="138"/>
+        <source>Combine Tracks</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="384"/>
-        <source>Forest</source>
-        <translation>Bosque</translation>
+        <location filename="../gis/CGisListWks.cpp" line="146"/>
+        <source>Show Bubble</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="385"/>
-        <source>Ocean</source>
-        <translation>Océano</translation>
+        <location filename="../gis/CGisListWks.cpp" line="148"/>
+        <source>Move Waypoint</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="386"/>
-        <location filename="../map/CMapIMG.cpp" line="388"/>
-        <location filename="../map/CMapIMG.cpp" line="398"/>
-        <source>Blue (unknown)</source>
-        <translation>Azul (desconocido)</translation>
+        <location filename="../gis/CGisListWks.cpp" line="149"/>
+        <source>Proj. Waypoint...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="387"/>
-        <source>Sea</source>
-        <translation>Mar</translation>
+        <location filename="../gis/CGisListWks.cpp" line="157"/>
+        <source>Route Instructions</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="389"/>
-        <location filename="../map/CMapIMG.cpp" line="390"/>
-        <location filename="../map/CMapIMG.cpp" line="397"/>
-        <source>Large lake</source>
-        <translation>Lago grande</translation>
+        <location filename="../gis/CGisListWks.cpp" line="159"/>
+        <source>Calculate Route</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="391"/>
-        <location filename="../map/CMapIMG.cpp" line="392"/>
-        <source>Medium lake</source>
-        <translation>Lago mediano</translation>
+        <location filename="../gis/CGisListWks.cpp" line="160"/>
+        <source>Reset Route</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="393"/>
-        <location filename="../map/CMapIMG.cpp" line="394"/>
-        <source>Small lake</source>
-        <translation>Lago pequeño</translation>
+        <location filename="../gis/CGisListWks.cpp" line="161"/>
+        <source>Edit Route</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="395"/>
-        <location filename="../map/CMapIMG.cpp" line="396"/>
-        <source>Major lake</source>
-        <translation>Lago principal</translation>
+        <location filename="../gis/CGisListWks.cpp" line="170"/>
+        <source>Edit Area Points</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="399"/>
-        <source>Major River</source>
-        <translation>Río Principal</translation>
+        <location filename="../gis/CGisListWks.cpp" line="177"/>
+        <source>Create Route</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="400"/>
-        <source>Large River</source>
-        <translation>Río Grande</translation>
+        <location filename="../gis/CGisListWks.cpp" line="621"/>
+        <source>Drop items...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="401"/>
-        <source>Medium River</source>
-        <translation>Río Mediano</translation>
+        <location filename="../gis/CGisListWks.cpp" line="646"/>
+        <location filename="../gis/CGisListWks.cpp" line="1632"/>
+        <location filename="../gis/CGisListWks.cpp" line="1670"/>
+        <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="402"/>
-        <source>Small River</source>
-        <translation>Río Pequeño</translation>
+        <location filename="../gis/CGisListWks.cpp" line="775"/>
+        <source>Saving workspace. Please wait.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="405"/>
-        <source>Intermittent water</source>
-        <translation>Agua intermitente</translation>
+        <location filename="../gis/CGisListWks.cpp" line="821"/>
+        <source>Loading workspace. Please wait.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="406"/>
-        <source>Wetland/Swamp</source>
-        <translation>Marisma/Ciénaga</translation>
+        <location filename="../gis/CGisListWks.cpp" line="1128"/>
+        <source>Close all projects...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="407"/>
-        <source>Glacier</source>
-        <translation>Glaciar</translation>
+        <location filename="../gis/CGisListWks.cpp" line="1128"/>
+        <source>This will remove all projects from the workspace.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="408"/>
-        <source>Orchard/Plantation</source>
-        <translation>Invernadero/Plantación</translation>
+        <location filename="../gis/CGisListWks.cpp" line="1151"/>
+        <source>Delete project...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="409"/>
-        <source>Scrub</source>
-        <translation>Monte bajo</translation>
+        <location filename="../gis/CGisListWks.cpp" line="1151"/>
+        <source>Do you really want to delete %1?</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="410"/>
-        <source>Tundra</source>
-        <translation>Tundra</translation>
+        <location filename="../gis/CGisListWks.cpp" line="1347"/>
+        <source>Copy items...</source>
+        <translation type="unfinished"></translation>
     </message>
-    <message>
-        <location filename="../map/CMapIMG.cpp" line="411"/>
-        <source>Flat</source>
-        <translation>Llanura</translation>
+</context>
+<context>
+    <name>CGisWidget</name>
+    <message>
+        <location filename="../gis/CGisWidget.cpp" line="131"/>
+        <source>Load project...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="412"/>
-        <source>???</source>
-        <translation></translation>
+        <location filename="../gis/CGisWidget.cpp" line="131"/>
+        <source>The project "%1" is already in the workspace.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="448"/>
-        <source>Failed to read: </source>
-        <translation>Fallo al leer: </translation>
+        <location filename="../gis/CGisWidget.cpp" line="486"/>
+        <source>Cut Track...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="491"/>
-        <source>Failed to open: </source>
-        <translation>Fallo al abrir: </translation>
+        <location filename="../gis/CGisWidget.cpp" line="486"/>
+        <source>Do you want to delete the original track?</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CGpsProject</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="515"/>
-        <location filename="../map/CMapIMG.cpp" line="519"/>
-        <source>Bad file format: </source>
-        <translation>Formato de archivo incorrecto: </translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="90"/>
+        <source>Failed to load file %1...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="608"/>
-        <source>Failed to read file structure: </source>
-        <translation>Fallo al leer la estructura del archivo: </translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="112"/>
+        <source>Failed to open %1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="643"/>
-        <source>Loading %1</source>
-        <translation>Cargando %1</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="124"/>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="649"/>
-        <source>User abort: </source>
-        <translation>Abortado por el usuario: </translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="132"/>
+        <source>Not a GPX file: %1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="652"/>
-        <source>File is NT format. QMapShack is unable to read map files with NT format: </source>
-        <translation>El archivo está en formato NT. QMapShack no puede leer archivos en formato NT: </translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="238"/>
+        <source>File exists ...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="744"/>
-        <source>File contains locked / encypted data. Garmin does not want you to use this file with any other software than the one supplied by Garmin.</source>
-        <translation>El archivo contiene datos bloqueados/cifrados. Garmin no quiere que use este archivo con otros programas distintos a los que ellos proporcionan.</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="239"/>
+        <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2504"/>
-        <location filename="../map/CMapIMG.cpp" line="2512"/>
-        <location filename="../map/CMapIMG.cpp" line="2516"/>
-        <location filename="../map/CMapIMG.cpp" line="2521"/>
-        <location filename="../map/CMapIMG.cpp" line="2567"/>
-        <location filename="../map/CMapIMG.cpp" line="2575"/>
-        <location filename="../map/CMapIMG.cpp" line="2579"/>
-        <location filename="../map/CMapIMG.cpp" line="2584"/>
-        <source>Point of Interest</source>
-        <translation>Punto de Interés</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="347"/>
+        <source>Failed to create file '%1'</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2711"/>
-        <source>Unknown</source>
-        <translation>Desconocido</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="357"/>
+        <source>Failed to write file '%1'</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2757"/>
-        <location filename="../map/CMapIMG.cpp" line="2765"/>
-        <location filename="../map/CMapIMG.cpp" line="2772"/>
-        <source>Area</source>
-        <translation>Área</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="362"/>
+        <source>Saving GIS data failed...</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>CMapList</name>
+    <name>CGrid</name>
     <message>
-        <location filename="../map/CMapList.cpp" line="155"/>
-        <source>Deactivate</source>
-        <translation>Desactivar</translation>
+        <location filename="../grid/CGrid.cpp" line="61"/>
+        <source>%1 %2 </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="155"/>
-        <source>Activate</source>
-        <translation>Activar</translation>
+        <location filename="../grid/CGrid.cpp" line="65"/>
+        <source>%1%2%5 %3%4%5 </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="174"/>
-        <source>Where do you want to store maps?</source>
+        <location filename="../grid/CGrid.cpp" line="72"/>
+        <source>%1m, %2m </source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CMapMAP</name>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="46"/>
-        <source>Failed ...</source>
-        <translation>Falló...</translation>
+        <location filename="../grid/CGrid.cpp" line="76"/>
+        <source>N %1m, E %2m </source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CHistoryListWidget</name>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="63"/>
-        <source>Failed to open: </source>
-        <translation>Fallo al abrir: </translation>
+        <location filename="../widgets/CHistoryListWidget.cpp" line="34"/>
+        <source>Cut history</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="73"/>
-        <source>Bad file format: </source>
-        <translation>Formato de archivo incorrecto: </translation>
+        <location filename="../widgets/CHistoryListWidget.cpp" line="61"/>
+        <source> by %1</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>CMapPathSetup</name>
-    <message>
-        <location filename="../map/CMapPathSetup.cpp" line="47"/>
-        <source>Add or remove paths containing maps. There can be multiple maps in a path but no sub-path is parsed. Supported formats are: %1</source>
-        <translation>Añada o elimine rutas que contengan mapas. Puede haber múltiples mapas en una ruta, pero no se buscará en subdirectorios. Los formatos soportados son: %1</translation>
-    </message>
+    <name>CImportDatabase</name>
     <message>
-        <location filename="../map/CMapPathSetup.cpp" line="62"/>
-        <source>Select map path...</source>
-        <translation>Selecciona la ruta del mapa...</translation>
+        <location filename="../tool/CImportDatabase.cpp" line="29"/>
+        <source>Import QLandkarte Database</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapPathSetup.cpp" line="81"/>
-        <source>Select root path...</source>
+        <location filename="../tool/CImportDatabase.cpp" line="75"/>
+        <source>Select source database...</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CMapPropSetup</name>
     <message>
-        <source>Cache path...</source>
-        <translation type="obsolete">Ruta de la caché...</translation>
+        <location filename="../tool/CImportDatabase.cpp" line="97"/>
+        <source>Select target database...</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>CMapRMAP</name>
+    <name>CKnownExtension</name>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="48"/>
-        <location filename="../map/CMapRMAP.cpp" line="57"/>
-        <location filename="../map/CMapRMAP.cpp" line="127"/>
-        <location filename="../map/CMapRMAP.cpp" line="144"/>
-        <location filename="../map/CMapRMAP.cpp" line="165"/>
-        <location filename="../map/CMapRMAP.cpp" line="187"/>
-        <location filename="../map/CMapRMAP.cpp" line="209"/>
-        <location filename="../map/CMapRMAP.cpp" line="237"/>
-        <source>Error...</source>
-        <translation>Error...</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="45"/>
+        <source>Air Temperature</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="48"/>
-        <source>This is not a TwoNav RMAP file.</source>
-        <translation>Éste no es un archivo en formato TwoNav RMAP.</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="49"/>
+        <source>Water Temperature</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="57"/>
-        <source>Unknown sub-format.</source>
-        <translation>Sub-formato desconocido.</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="53"/>
+        <source>Depth</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="127"/>
-        <source>Unknown version.</source>
-        <translation>Versión desconocida.</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="57"/>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="69"/>
+        <source>Heart Rate</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="144"/>
-        <location filename="../map/CMapRMAP.cpp" line="165"/>
-        <location filename="../map/CMapRMAP.cpp" line="187"/>
-        <location filename="../map/CMapRMAP.cpp" line="209"/>
-        <source>Failed to read reference point.</source>
-        <translation>Fallo al leer el punto de referencia.</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="61"/>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="73"/>
+        <source>Cadence</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="237"/>
-        <source>Unknown projection and datum (%1%2).</source>
-        <translation>Proyección y datum desconocidos (%1%2).</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="77"/>
+        <source>Speed</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CMapTMS</name>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="67"/>
-        <location filename="../map/CMapTMS.cpp" line="77"/>
-        <location filename="../map/CMapTMS.cpp" line="136"/>
-        <source>Error...</source>
-        <translation>Error...</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="81"/>
+        <source>Acceleration</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="67"/>
-        <source>Failed to open %1</source>
-        <translation>Fallo al abrir %1</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="85"/>
+        <source>Course</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="77"/>
-        <source>Failed to read: %1
-line %2, column %3:
- %4</source>
-        <translation>Fallo al leer: %1
-línea %2, columna %3.
- %4</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="94"/>
+        <source>Slope*</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="115"/>
-        <source>Layer %1</source>
-        <translation>Capa %1</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="99"/>
+        <source>Speed*</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="130"/>
-        <source>This map requires OpenSSL support. However due to legal restrictions in some countries OpenSSL is not packaged with QMapShack. You can have a look at the <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> for binaries. You have to copy libeay32.dll and ssleay32.dll into the QMapShack program directory.</source>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="104"/>
+        <source>Elevation</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="306"/>
-        <source><b>%1</b>: %2 tiles pending<br/></source>
-        <translation><b>%1</b>: %2 teselas pendientes<br/></translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="109"/>
+        <source>Progress</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>CMapVRT</name>
-    <message>
-        <location filename="../map/CMapVRT.cpp" line="45"/>
-        <location filename="../map/CMapVRT.cpp" line="60"/>
-        <location filename="../map/CMapVRT.cpp" line="89"/>
-        <location filename="../map/CMapVRT.cpp" line="126"/>
-        <source>Error...</source>
-        <translation>Error...</translation>
-    </message>
-    <message>
-        <location filename="../map/CMapVRT.cpp" line="45"/>
-        <location filename="../map/CMapVRT.cpp" line="60"/>
-        <source>Failed to load file: %1</source>
-        <translation>Fallo al leer el archivo: %1</translation>
-    </message>
-    <message>
-        <location filename="../map/CMapVRT.cpp" line="89"/>
-        <source>File must be 8 bit palette or gray indexed.</source>
-        <translation>El archivo debe ser con paleta de 8 bits o escala de grises indexada.</translation>
-    </message>
+    <name>CLostFoundProject</name>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="126"/>
-        <source>No georeference information found.</source>
-        <translation>No se encontró información de georreferenciación.</translation>
+        <location filename="../gis/db/CLostFoundProject.cpp" line="39"/>
+        <source>Lost & Found</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>CMapVrtBuilder</name>
+    <name>CMainWindow</name>
     <message>
-        <location filename="../tool/CMapVrtBuilder.cpp" line="28"/>
-        <source>Build GDAL VRT</source>
-        <translation>Crear GDAL VRT</translation>
+        <location filename="../CMainWindow.cpp" line="617"/>
+        <source>Ele: %1%2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/CMapVrtBuilder.cpp" line="46"/>
-        <source>Select files...</source>
-        <translation>Seleccionar ficheros de origen...</translation>
+        <location filename="../CMainWindow.cpp" line="633"/>
+        <source>[Grid: %1]</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/CMapVrtBuilder.cpp" line="70"/>
-        <source>Select target file...</source>
-        <translation>Seleccionar fichero de destino...</translation>
+        <location filename="../CMainWindow.cpp" line="758"/>
+        <source>Load GIS Data...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/CMapVrtBuilder.cpp" line="114"/>
-        <source>!!! done !!!
-</source>
+        <location filename="../CMainWindow.cpp" line="792"/>
+        <source>Select output file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>!!! failed !!!
-</source>
-        <translation type="obsolete">!!! fallo !!!</translation>
+        <location filename="../CMainWindow.cpp" line="792"/>
+        <location filename="../CMainWindow.cpp" line="818"/>
+        <source>QMapShack View (*.view)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../CMainWindow.cpp" line="818"/>
+        <source>Select file to load</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>CMapWMTS</name>
+    <name>CMapIMG</name>
     <message>
-        <location filename="../map/CMapWMTS.cpp" line="43"/>
-        <location filename="../map/CMapWMTS.cpp" line="53"/>
-        <location filename="../map/CMapWMTS.cpp" line="63"/>
-        <location filename="../map/CMapWMTS.cpp" line="72"/>
-        <location filename="../map/CMapWMTS.cpp" line="157"/>
-        <location filename="../map/CMapWMTS.cpp" line="217"/>
-        <source>Error...</source>
-        <translation>Error...</translation>
+        <location filename="../map/CMapIMG.cpp" line="154"/>
+        <source>Failed ...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapWMTS.cpp" line="43"/>
-        <source>Failed to open %1</source>
-        <translation>Fallo al abrir %1</translation>
+        <location filename="../map/CMapIMG.cpp" line="169"/>
+        <source>Unspecified</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapWMTS.cpp" line="53"/>
-        <source>Failed to read: %1
-line %2, column %3:
- %4</source>
-        <translation>Fallo al leer: %1
-línea %2, columna %3.
- %4</translation>
+        <location filename="../map/CMapIMG.cpp" line="170"/>
+        <source>French</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapWMTS.cpp" line="63"/>
-        <source>Failed to read: %1
-Unknown structure.</source>
-        <translation>Fallo al leer: %1
-Estructura desconocida.</translation>
+        <location filename="../map/CMapIMG.cpp" line="171"/>
+        <source>German</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapWMTS.cpp" line="72"/>
-        <source>Unexpected service. '* WMTS 1.0.0' is expected. '%1 %2' is read.</source>
+        <location filename="../map/CMapIMG.cpp" line="172"/>
+        <source>Dutch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Unexpexted service. '* WMTS 1.0.0' is expected. '%1 %2' is read.</source>
-        <translation type="vanished">Servicio no esperado. se esperaba'* WMTS 1.0.0'. Se leyó '%1 %2'.</translation>
+        <location filename="../map/CMapIMG.cpp" line="173"/>
+        <source>English</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapWMTS.cpp" line="151"/>
-        <source>This map requires OpenSSL support. However due to legal restrictions in some countries OpenSSL is not packaged with QMapShack. You can have a look at the <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> for binaries. You have to copy libeay32.dll and ssleay32.dll into the QMapShack program directory.</source>
+        <location filename="../map/CMapIMG.cpp" line="174"/>
+        <source>Italian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapWMTS.cpp" line="217"/>
-        <source>No georeference information found.</source>
-        <translation>No se encontró información de georreferenciación.</translation>
-    </message>
-    <message>
-        <location filename="../map/CMapWMTS.cpp" line="413"/>
-        <source><b>%1</b>: %2 tiles pending<br/></source>
-        <translation><b>%1</b>: %2 teselas pendientes<br/></translation>
+        <location filename="../map/CMapIMG.cpp" line="175"/>
+        <source>Finnish</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CMouseEditArea</name>
     <message>
-        <source><b>Edit Area</b><br/>Select a corner point for more options.<br/></source>
-        <translation type="obsolete"><b>Editar Área</b><br/>Seleccione un punto de las esquinas para más información.<br/></translation>
+        <location filename="../map/CMapIMG.cpp" line="176"/>
+        <source>Swedish</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseEditArea.cpp" line="28"/>
-        <location filename="../mouse/CMouseEditArea.cpp" line="35"/>
-        <source>Area</source>
-        <translation type="unfinished">Área</translation>
+        <location filename="../map/CMapIMG.cpp" line="177"/>
+        <source>Spanish</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseEditArea.cpp" line="37"/>
-        <source><b>Edit Area</b><br/>Select a function and a routing mode via the tool buttons. Next select a point of the line. Only points marked with a large square can be changed. The ones with a black dot are subpoints introduced by routing.<br/></source>
+        <location filename="../map/CMapIMG.cpp" line="178"/>
+        <source>Basque</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CMouseEditRte</name>
     <message>
-        <location filename="../mouse/CMouseEditRte.cpp" line="30"/>
-        <location filename="../mouse/CMouseEditRte.cpp" line="37"/>
-        <source>Route</source>
+        <location filename="../map/CMapIMG.cpp" line="179"/>
+        <source>Catalan</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseEditRte.cpp" line="39"/>
-        <source><b>Edit Route Points</b><br/>Select a function and a routing mode via the tool buttons. Next select a point of the line. Only points marked with a large square can be changed. The ones with a black dot are subpoints introduced by routing.<br/></source>
+        <location filename="../map/CMapIMG.cpp" line="180"/>
+        <source>Galician</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CMouseEditTrk</name>
     <message>
-        <source><b>Edit Track Points</b><br/>Select a track point for more options.<br/></source>
-        <translation type="obsolete"><b>Editar Puntos del Track</b><br/>Selecciones un punto del track para más opciones.<br/></translation>
+        <location filename="../map/CMapIMG.cpp" line="181"/>
+        <source>Welsh</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="28"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="35"/>
-        <source>Track</source>
+        <location filename="../map/CMapIMG.cpp" line="182"/>
+        <source>Gaelic</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="38"/>
-        <source><b>Edit Track Points</b><br/>Select a function and a routing mode via the tool buttons. Next select a point of the line. Only points marked with a large square can be changed. The ones with a black dot are subpoints introduced by routing.<br/></source>
+        <location filename="../map/CMapIMG.cpp" line="183"/>
+        <source>Danish</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="80"/>
-        <source>Warning!</source>
-        <translation type="unfinished">¡Cuidado!</translation>
+        <location filename="../map/CMapIMG.cpp" line="184"/>
+        <source>Norwegian</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="80"/>
-        <source>This will replace all data of the original by a simple line of coordinates. All other data will be lost permanently.</source>
+        <location filename="../map/CMapIMG.cpp" line="185"/>
+        <source>Portuguese</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>This will replace all data of the orignal by a simple line of coordinates. All other data will be lost permanently.</source>
-        <translation type="obsolete">Esto sustituirá todos los datos del original con una simple línea de coordenadas. Todos los demás datos se perderán definitivamente.</translation>
+        <location filename="../map/CMapIMG.cpp" line="186"/>
+        <source>Slovak</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CMouseNormal</name>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="39"/>
-        <source>Add Waypoint</source>
-        <translation>Añadir Waypoint</translation>
+        <location filename="../map/CMapIMG.cpp" line="187"/>
+        <source>Czech</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="40"/>
-        <source>Add Track</source>
-        <translation>Añadir Track</translation>
+        <location filename="../map/CMapIMG.cpp" line="188"/>
+        <source>Croatian</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="41"/>
-        <source>Add Route</source>
+        <location filename="../map/CMapIMG.cpp" line="189"/>
+        <source>Hungarian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="42"/>
-        <source>Add Area</source>
-        <translation>Añadir Área</translation>
+        <location filename="../map/CMapIMG.cpp" line="190"/>
+        <source>Polish</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="45"/>
-        <source>Copy position</source>
-        <translation>Copiar posición</translation>
+        <location filename="../map/CMapIMG.cpp" line="191"/>
+        <source>Turkish</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="46"/>
-        <source>Copy position (Grid)</source>
+        <location filename="../map/CMapIMG.cpp" line="192"/>
+        <source>Greek</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CMousePrint</name>
     <message>
-        <location filename="../mouse/CMousePrint.cpp" line="30"/>
-        <source><b>Save(Print) Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners. Save/print the selection by a left click on the disc/printer icon in the center of the selection.</source>
+        <location filename="../map/CMapIMG.cpp" line="193"/>
+        <source>Slovenian</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CMouseRangeTrk</name>
     <message>
-        <location filename="../mouse/CMouseRangeTrk.cpp" line="42"/>
-        <source><b>Select Range</b><br/>Select first track point. And then a second one.<br/></source>
-        <translation><b>Seleccione Rango</b><br/>En el track, seleccione el primer punto, y otro más a continuación.<br/></translation>
+        <location filename="../map/CMapIMG.cpp" line="194"/>
+        <source>Russian</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CPhotoAlbum</name>
     <message>
-        <location filename="../widgets/CPhotoAlbum.cpp" line="73"/>
-        <source>Select images...</source>
-        <translation>Seleccionar imagenes...</translation>
+        <location filename="../map/CMapIMG.cpp" line="195"/>
+        <source>Estonian</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CPlotDistance</name>
     <message>
-        <source>distance [%1]</source>
-        <translation type="vanished">distancia [%1]</translation>
+        <location filename="../map/CMapIMG.cpp" line="196"/>
+        <source>Latvian</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>time</source>
-        <translation type="vanished">tiempo</translation>
+        <location filename="../map/CMapIMG.cpp" line="197"/>
+        <source>Romanian</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>time [h]</source>
-        <translation type="obsolete">tiempo [h]</translation>
+        <location filename="../map/CMapIMG.cpp" line="198"/>
+        <source>Albanian</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>distance. [%1]</source>
-        <translation type="vanished">distancia. [%1]</translation>
+        <location filename="../map/CMapIMG.cpp" line="199"/>
+        <source>Bosnian</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CPlotProfile</name>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="63"/>
-        <source>distance [%1]</source>
-        <translation>distancia [%1]</translation>
+        <location filename="../map/CMapIMG.cpp" line="200"/>
+        <source>Lithuanian</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>time [h]</source>
-        <translation type="vanished">tiempo [h]</translation>
+        <location filename="../map/CMapIMG.cpp" line="201"/>
+        <source>Serbian</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="64"/>
-        <source>alt. [%1]</source>
-        <translation>alt. [%1]</translation>
+        <location filename="../map/CMapIMG.cpp" line="202"/>
+        <source>Macedonian</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CPlotSpeed</name>
     <message>
-        <source>distance [%1]</source>
-        <translation type="vanished">distancia [%1]</translation>
+        <location filename="../map/CMapIMG.cpp" line="203"/>
+        <source>Bulgarian</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>time [h]</source>
-        <translation type="vanished">tiempo [h]</translation>
+        <location filename="../map/CMapIMG.cpp" line="260"/>
+        <source>Major highway</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>speed. [%1]</source>
-        <translation type="vanished">velocidad. [%1]</translation>
+        <location filename="../map/CMapIMG.cpp" line="261"/>
+        <source>Principal highway</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CPrintDialog</name>
     <message>
-        <location filename="../print/CPrintDialog.cpp" line="67"/>
-        <source>Print Map...</source>
+        <location filename="../map/CMapIMG.cpp" line="262"/>
+        <source>Other highway</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../print/CPrintDialog.cpp" line="74"/>
-        <source>Save Map as Image...</source>
+        <location filename="../map/CMapIMG.cpp" line="263"/>
+        <source>Arterial road</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../print/CPrintDialog.cpp" line="94"/>
-        <source>Printer Properties...</source>
+        <location filename="../map/CMapIMG.cpp" line="264"/>
+        <source>Collector road</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../print/CPrintDialog.cpp" line="169"/>
-        <source>Pages: %1 x %2</source>
+        <location filename="../map/CMapIMG.cpp" line="265"/>
+        <source>Residential street</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../print/CPrintDialog.cpp" line="170"/>
-        <source>Zoom with mouse wheel on map below to change resolution:
-
-%1x%2 pixel
-x: %3 m/px
-y: %4 m/px</source>
+        <location filename="../map/CMapIMG.cpp" line="266"/>
+        <source>Alley/Private road</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../print/CPrintDialog.cpp" line="216"/>
-        <source>Printing pages.</source>
+        <location filename="../map/CMapIMG.cpp" line="267"/>
+        <source>Highway ramp, low speed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../print/CPrintDialog.cpp" line="260"/>
-        <source>Save map...</source>
+        <location filename="../map/CMapIMG.cpp" line="268"/>
+        <source>Highway ramp, high speed</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CProgressDialog</name>
     <message>
-        <location filename="../helpers/CProgressDialog.cpp" line="40"/>
-        <source>Elapsed time: %1</source>
+        <location filename="../map/CMapIMG.cpp" line="269"/>
+        <source>Unpaved road</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/CProgressDialog.cpp" line="74"/>
-        <source>Elapsed time: %1 seconds.</source>
+        <location filename="../map/CMapIMG.cpp" line="270"/>
+        <source>Major highway connector</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CProjWizard</name>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="62"/>
-        <source>north</source>
-        <translation>norte</translation>
+        <location filename="../map/CMapIMG.cpp" line="271"/>
+        <source>Roundabout</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="63"/>
-        <source>south</source>
-        <translation>sur</translation>
+        <location filename="../map/CMapIMG.cpp" line="272"/>
+        <source>Railroad</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="221"/>
-        <source>Error...</source>
-        <translation>Error...</translation>
+        <location filename="../map/CMapIMG.cpp" line="273"/>
+        <source>Shoreline</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="221"/>
-        <source>The value
-'%1'
-is not a valid coordinate system definition:
-%2</source>
-        <translation>El valor
-'%1'
-no es una definición de sistema de coordenadas válido:
-%2</translation>
+        <location filename="../map/CMapIMG.cpp" line="274"/>
+        <source>Trail</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CProjWpt</name>
     <message>
-        <location filename="../gis/wpt/CProjWpt.cpp" line="62"/>
-        <source>Edit name...</source>
-        <translation>Editar nombre...</translation>
+        <location filename="../map/CMapIMG.cpp" line="275"/>
+        <source>Stream</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CProjWpt.cpp" line="62"/>
-        <source>Enter new waypoint name.</source>
-        <translation>Introduzca el nuevo nombre del waypoint.</translation>
+        <location filename="../map/CMapIMG.cpp" line="276"/>
+        <source>Time zone</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CQlgtDb</name>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="308"/>
-        <source>Migrating database from version 4 to 5.</source>
-        <translation>Convirtiendo base de datos de version 4 a 5.</translation>
+        <location filename="../map/CMapIMG.cpp" line="277"/>
+        <location filename="../map/CMapIMG.cpp" line="278"/>
+        <source>Ferry</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="362"/>
-        <source>Migrating database from version 5 to 6.</source>
-        <translation>Convirtiendo base de datos de version 5 a 6.</translation>
+        <location filename="../map/CMapIMG.cpp" line="279"/>
+        <source>State/province border</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="420"/>
-        <source>Migrating database from version 6 to 7.</source>
-        <translation>Convirtiendo base de datos de version 6 a 7.</translation>
-    </message>
-    <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="486"/>
-        <source>Migrating database from version 7 to 8.</source>
-        <translation>Convirtiendo base de datos de version 7 a 8.</translation>
+        <location filename="../map/CMapIMG.cpp" line="280"/>
+        <source>County/parish border</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="515"/>
-        <source>Migrating database from version 8 to 9.</source>
-        <translation>Convirtiendo base de datos de version 8 a 9.</translation>
+        <location filename="../map/CMapIMG.cpp" line="281"/>
+        <source>International border</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="538"/>
-        <source>Open database: %1</source>
-        <translation>Abrir base de datos:%1</translation>
+        <location filename="../map/CMapIMG.cpp" line="282"/>
+        <source>River</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="547"/>
-        <source>Folders:          %1</source>
-        <translation>Carpetas:          %1</translation>
+        <location filename="../map/CMapIMG.cpp" line="283"/>
+        <source>Minor land contour</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="556"/>
-        <source>Tracks:           %1</source>
-        <translation>Tracks:           %1</translation>
+        <location filename="../map/CMapIMG.cpp" line="284"/>
+        <source>Intermediate land contour</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="564"/>
-        <source>Routes:           %1 (Only the basic route will be copied)</source>
-        <translation>Routes:           %1 (Only the basic route will be copied)</translation>
+        <location filename="../map/CMapIMG.cpp" line="285"/>
+        <source>Major land contour</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="572"/>
-        <source>Waypoints:        %1</source>
-        <translation>Waypoints:        %1</translation>
+        <location filename="../map/CMapIMG.cpp" line="286"/>
+        <source>Minor depth contour</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Overlays:         %1 (only area overlays will be converted to QMapShack)</source>
-        <translation type="obsolete">Superposiciones:         %1 (solo las superposiciones de área se copiaran a QMapShack)</translation>
+        <location filename="../map/CMapIMG.cpp" line="287"/>
+        <source>Intermediate depth contour</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="580"/>
-        <source>Overlays:         %1 (areas will be converted as areas, distance lines will be converted to tracks, all other overlay items will be lost)</source>
+        <location filename="../map/CMapIMG.cpp" line="288"/>
+        <source>Major depth contour</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="587"/>
-        <source>Diaries:          %1</source>
-        <translation>Diarios:          %1</translation>
+        <location filename="../map/CMapIMG.cpp" line="289"/>
+        <source>Intermittent stream</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="594"/>
-        <source>Map selections:   %1 (can't be converted to QMapShack)</source>
-        <translation>Selecciones de mapa:   %1 (NO pueden convertirse a QMapShack)</translation>
+        <location filename="../map/CMapIMG.cpp" line="290"/>
+        <location filename="../map/CMapIMG.cpp" line="372"/>
+        <source>Airport runway</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="600"/>
-        <source>------ Start to convert database to %1------</source>
-        <translation>------ Comenzar a convertir base de datos a %1------</translation>
+        <location filename="../map/CMapIMG.cpp" line="291"/>
+        <source>Pipeline</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="604"/>
-        <source>Failed to create target database.</source>
-        <translation>Fallo al crear la base de datos de destino.</translation>
+        <location filename="../map/CMapIMG.cpp" line="292"/>
+        <source>Powerline</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="605"/>
-        <source>------ Abort ------</source>
-        <translation>------ Abortar ------</translation>
+        <location filename="../map/CMapIMG.cpp" line="293"/>
+        <source>Marine boundary</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="633"/>
-        <source>------ Done ------</source>
-        <translation>------ Hecho ------</translation>
+        <location filename="../map/CMapIMG.cpp" line="294"/>
+        <source>Hazard boundary</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="641"/>
-        <source>Restore folders...</source>
-        <translation>Restaurar carpetas...</translation>
+        <location filename="../map/CMapIMG.cpp" line="359"/>
+        <source>Large urban area (&gt;200K)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Abort</source>
-        <translation type="obsolete">Abortar</translation>
+        <location filename="../map/CMapIMG.cpp" line="360"/>
+        <source>Small urban area (&lt;200K)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="661"/>
-        <source>Imported %1 folders and %2 diaries</source>
-        <translation>Importadas %1 carpetas y %2 diarios</translation>
+        <location filename="../map/CMapIMG.cpp" line="361"/>
+        <source>Rural housing area</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="667"/>
-        <source>Copy items...</source>
-        <translation>Copia elementos....</translation>
+        <location filename="../map/CMapIMG.cpp" line="362"/>
+        <source>Military base</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="685"/>
-        <source>Imported %1 tracks, %2 waypoints, %3 routes, %4 areas</source>
-        <translation>Importado: %1 tracks, %2 waypoints, %3 routes, %4 areas</translation>
+        <location filename="../map/CMapIMG.cpp" line="363"/>
+        <source>Parking lot</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="686"/>
-        <source>Import folders...</source>
-        <translation>Importar carpetas...</translation>
+        <location filename="../map/CMapIMG.cpp" line="364"/>
+        <source>Parking garage</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="751"/>
-        <source>Overlay of type '%1' cant be converted</source>
-        <translation>No puede convertirse superposición del tipo '%1' </translation>
+        <location filename="../map/CMapIMG.cpp" line="365"/>
+        <source>Airport</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CQmsDb</name>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="47"/>
-        <source>Existing file...</source>
+        <location filename="../map/CMapIMG.cpp" line="366"/>
+        <source>Shopping center</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="47"/>
-        <source>Remove existing %1?</source>
+        <location filename="../map/CMapIMG.cpp" line="367"/>
+        <source>Marina</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="52"/>
-        <source>Remove existing file %1</source>
+        <location filename="../map/CMapIMG.cpp" line="368"/>
+        <source>University/College</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="163"/>
-        <source>%1: drop item with QLGT DB ID %2</source>
+        <location filename="../map/CMapIMG.cpp" line="369"/>
+        <source>Hospital</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CRouterMapQuest</name>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="37"/>
-        <source>Fastest</source>
+        <location filename="../map/CMapIMG.cpp" line="370"/>
+        <source>Industrial complex</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="38"/>
-        <source>Shortest</source>
+        <location filename="../map/CMapIMG.cpp" line="371"/>
+        <source>Reservation</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="39"/>
-        <source>Bicycle</source>
+        <location filename="../map/CMapIMG.cpp" line="373"/>
+        <source>Man-made area</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="40"/>
-        <source>Pedestrian</source>
+        <location filename="../map/CMapIMG.cpp" line="374"/>
+        <source>Sports complex</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="42"/>
-        <source>US English</source>
+        <location filename="../map/CMapIMG.cpp" line="375"/>
+        <source>Golf course</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="43"/>
-        <source>British English</source>
+        <location filename="../map/CMapIMG.cpp" line="376"/>
+        <source>Cemetery</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="44"/>
-        <source>Danish</source>
-        <translation type="unfinished">Danés</translation>
+        <location filename="../map/CMapIMG.cpp" line="377"/>
+        <location filename="../map/CMapIMG.cpp" line="378"/>
+        <location filename="../map/CMapIMG.cpp" line="379"/>
+        <source>National park</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="45"/>
-        <source>Dutch</source>
-        <translation type="unfinished">Holandés</translation>
+        <location filename="../map/CMapIMG.cpp" line="380"/>
+        <source>City park</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="46"/>
-        <source>French</source>
-        <translation type="unfinished">Francés</translation>
+        <location filename="../map/CMapIMG.cpp" line="381"/>
+        <location filename="../map/CMapIMG.cpp" line="382"/>
+        <location filename="../map/CMapIMG.cpp" line="383"/>
+        <source>State park</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="47"/>
-        <source>German</source>
-        <translation type="unfinished">Alemán</translation>
+        <location filename="../map/CMapIMG.cpp" line="384"/>
+        <source>Forest</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="48"/>
-        <source>Italian</source>
-        <translation type="unfinished">Italiano</translation>
+        <location filename="../map/CMapIMG.cpp" line="385"/>
+        <source>Ocean</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="49"/>
-        <source>Norwegian</source>
-        <translation type="unfinished">Noruego</translation>
+        <location filename="../map/CMapIMG.cpp" line="386"/>
+        <location filename="../map/CMapIMG.cpp" line="388"/>
+        <location filename="../map/CMapIMG.cpp" line="398"/>
+        <source>Blue (unknown)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="50"/>
-        <source>Spanish</source>
-        <translation type="unfinished">Español</translation>
+        <location filename="../map/CMapIMG.cpp" line="387"/>
+        <source>Sea</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="51"/>
-        <source>Swedish</source>
-        <translation type="unfinished">Sueco</translation>
+        <location filename="../map/CMapIMG.cpp" line="389"/>
+        <location filename="../map/CMapIMG.cpp" line="390"/>
+        <location filename="../map/CMapIMG.cpp" line="397"/>
+        <source>Large lake</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="110"/>
-        <source>mode "%1"</source>
+        <location filename="../map/CMapIMG.cpp" line="391"/>
+        <location filename="../map/CMapIMG.cpp" line="392"/>
+        <source>Medium lake</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="114"/>
-        <source>no highways</source>
+        <location filename="../map/CMapIMG.cpp" line="393"/>
+        <location filename="../map/CMapIMG.cpp" line="394"/>
+        <source>Small lake</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="125"/>
-        <source>no toll roads</source>
+        <location filename="../map/CMapIMG.cpp" line="395"/>
+        <location filename="../map/CMapIMG.cpp" line="396"/>
+        <source>Major lake</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="136"/>
-        <source>no seasonal</source>
+        <location filename="../map/CMapIMG.cpp" line="399"/>
+        <source>Major River</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="147"/>
-        <source>no unpaved</source>
+        <location filename="../map/CMapIMG.cpp" line="400"/>
+        <source>Large River</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="158"/>
-        <source>no ferry</source>
+        <location filename="../map/CMapIMG.cpp" line="401"/>
+        <source>Medium River</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="169"/>
-        <source>no crossing of country borders</source>
+        <location filename="../map/CMapIMG.cpp" line="402"/>
+        <source>Small River</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="301"/>
-        <source><b>MapQuest</b><br/>Routing request sent to server. Please wait...</source>
+        <location filename="../map/CMapIMG.cpp" line="405"/>
+        <source>Intermittent water</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="312"/>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="346"/>
-        <source><b>MapQuest</b><br/>Bad response from server:<br/>%1</source>
+        <location filename="../map/CMapIMG.cpp" line="406"/>
+        <source>Wetland/Swamp</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="363"/>
-        <source><br/>Calculation time: %1s</source>
+        <location filename="../map/CMapIMG.cpp" line="407"/>
+        <source>Glacier</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CRouterRoutino</name>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="78"/>
-        <source>Foot</source>
+        <location filename="../map/CMapIMG.cpp" line="408"/>
+        <source>Orchard/Plantation</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="79"/>
-        <source>Horse</source>
+        <location filename="../map/CMapIMG.cpp" line="409"/>
+        <source>Scrub</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="80"/>
-        <source>Wheelchair</source>
+        <location filename="../map/CMapIMG.cpp" line="410"/>
+        <source>Tundra</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="81"/>
-        <source>Bicycle</source>
+        <location filename="../map/CMapIMG.cpp" line="411"/>
+        <source>Flat</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="82"/>
-        <source>Moped</source>
+        <location filename="../map/CMapIMG.cpp" line="412"/>
+        <source>???</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="83"/>
-        <source>Motorcycle</source>
+        <location filename="../map/CMapIMG.cpp" line="448"/>
+        <source>Failed to read: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="84"/>
-        <source>Motorcar</source>
+        <location filename="../map/CMapIMG.cpp" line="491"/>
+        <source>Failed to open: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="85"/>
-        <source>Goods</source>
+        <location filename="../map/CMapIMG.cpp" line="515"/>
+        <location filename="../map/CMapIMG.cpp" line="519"/>
+        <source>Bad file format: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="59"/>
-        <source>Shortest</source>
+        <location filename="../map/CMapIMG.cpp" line="608"/>
+        <source>Failed to read file structure: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="55"/>
-        <source>Found Routino with a wrong version. Expected %1 found %2</source>
+        <location filename="../map/CMapIMG.cpp" line="643"/>
+        <source>Loading %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="60"/>
-        <source>Quickest</source>
+        <location filename="../map/CMapIMG.cpp" line="649"/>
+        <source>User abort: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="87"/>
-        <source>English</source>
-        <translation type="unfinished">Inglés</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="88"/>
-        <source>German</source>
-        <translation type="unfinished">Alemán</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="89"/>
-        <source>French</source>
-        <translation type="unfinished">Francés</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="90"/>
-        <source>Hungarian</source>
-        <translation type="unfinished">Húngaro</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="91"/>
-        <source>Dutch</source>
-        <translation type="unfinished">Holandés</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="92"/>
-        <source>Russian</source>
-        <translation type="unfinished">Ruso</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="93"/>
-        <source>Polish</source>
-        <translation type="unfinished">Polaco</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="128"/>
-        <source>A function was called without the database variable set.</source>
+        <location filename="../map/CMapIMG.cpp" line="652"/>
+        <source>File is NT format. QMapShack is unable to read map files with NT format: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="131"/>
-        <source>A function was called without the profile variable set.</source>
+        <location filename="../map/CMapIMG.cpp" line="744"/>
+        <source>File contains locked / encypted data. Garmin does not want you to use this file with any other software than the one supplied by Garmin.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="134"/>
-        <source>A function was called without the translation variable set.</source>
+        <location filename="../map/CMapIMG.cpp" line="2502"/>
+        <location filename="../map/CMapIMG.cpp" line="2510"/>
+        <location filename="../map/CMapIMG.cpp" line="2514"/>
+        <location filename="../map/CMapIMG.cpp" line="2519"/>
+        <location filename="../map/CMapIMG.cpp" line="2565"/>
+        <location filename="../map/CMapIMG.cpp" line="2573"/>
+        <location filename="../map/CMapIMG.cpp" line="2577"/>
+        <location filename="../map/CMapIMG.cpp" line="2582"/>
+        <source>Point of Interest</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="137"/>
-        <source>The specified database to load did not exist.</source>
+        <location filename="../map/CMapIMG.cpp" line="2709"/>
+        <source>Unknown</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="140"/>
-        <source>The specified database could not be loaded.</source>
+        <location filename="../map/CMapIMG.cpp" line="2755"/>
+        <location filename="../map/CMapIMG.cpp" line="2763"/>
+        <location filename="../map/CMapIMG.cpp" line="2770"/>
+        <source>Area</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CMapList</name>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="143"/>
-        <source>The specified profiles XML file did not exist.</source>
+        <location filename="../map/CMapList.cpp" line="205"/>
+        <source>Deactivate</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="146"/>
-        <source>The specified profiles XML file could not be loaded.</source>
+        <location filename="../map/CMapList.cpp" line="205"/>
+        <source>Activate</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="149"/>
-        <source>The specified translations XML file did not exist.</source>
+        <location filename="../map/CMapList.cpp" line="228"/>
+        <source>Where do you want to store maps?</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CMapMAP</name>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="152"/>
-        <source>The specified translations XML file could not be loaded.</source>
+        <location filename="../map/CMapMAP.cpp" line="46"/>
+        <source>Failed ...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="155"/>
-        <source>The requested profile name does not exist in the loaded XML file.</source>
+        <location filename="../map/CMapMAP.cpp" line="63"/>
+        <source>Failed to open: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="158"/>
-        <source>The requested translation language does not exist in the loaded XML file.</source>
+        <location filename="../map/CMapMAP.cpp" line="73"/>
+        <source>Bad file format: </source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CMapPathSetup</name>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="161"/>
-        <source>There is no highway near the coordinates to place a waypoint.</source>
+        <location filename="../map/CMapPathSetup.cpp" line="47"/>
+        <source>Add or remove paths containing maps. There can be multiple maps in a path but no sub-path is parsed. Supported formats are: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="164"/>
-        <source>The profile and database do not work together.</source>
+        <location filename="../map/CMapPathSetup.cpp" line="62"/>
+        <source>Select map path...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="167"/>
-        <source>The profile being used has not been validated.</source>
+        <location filename="../map/CMapPathSetup.cpp" line="81"/>
+        <source>Select root path...</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CMapRMAP</name>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="170"/>
-        <source>The user specified profile contained invalid data.</source>
+        <location filename="../map/CMapRMAP.cpp" line="48"/>
+        <location filename="../map/CMapRMAP.cpp" line="57"/>
+        <location filename="../map/CMapRMAP.cpp" line="127"/>
+        <location filename="../map/CMapRMAP.cpp" line="144"/>
+        <location filename="../map/CMapRMAP.cpp" line="165"/>
+        <location filename="../map/CMapRMAP.cpp" line="187"/>
+        <location filename="../map/CMapRMAP.cpp" line="209"/>
+        <location filename="../map/CMapRMAP.cpp" line="237"/>
+        <source>Error...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="173"/>
-        <source>The routing options specified are not consistent with each other.</source>
+        <location filename="../map/CMapRMAP.cpp" line="48"/>
+        <source>This is not a TwoNav RMAP file.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="176"/>
-        <source>There is a mismatch between the library and caller API version.</source>
+        <location filename="../map/CMapRMAP.cpp" line="57"/>
+        <source>Unknown sub-format.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="179"/>
-        <source>Route calculation was aborted by user.</source>
+        <location filename="../map/CMapRMAP.cpp" line="127"/>
+        <source>Unknown version.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="185"/>
-        <source>A route could not be found to waypoint %1.</source>
+        <location filename="../map/CMapRMAP.cpp" line="144"/>
+        <location filename="../map/CMapRMAP.cpp" line="165"/>
+        <location filename="../map/CMapRMAP.cpp" line="187"/>
+        <location filename="../map/CMapRMAP.cpp" line="209"/>
+        <source>Failed to read reference point.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="188"/>
-        <source>Unknown error: %1</source>
+        <location filename="../map/CMapRMAP.cpp" line="237"/>
+        <source>Unknown projection and datum (%1%2).</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CMapTMS</name>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="200"/>
-        <source>profile "%1"</source>
+        <location filename="../map/CMapTMS.cpp" line="67"/>
+        <location filename="../map/CMapTMS.cpp" line="77"/>
+        <location filename="../map/CMapTMS.cpp" line="136"/>
+        <source>Error...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="201"/>
-        <source>, mode "%1"</source>
+        <location filename="../map/CMapTMS.cpp" line="67"/>
+        <source>Failed to open %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="55"/>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="238"/>
-        <source>Warning...</source>
-        <translation type="unfinished">Aviso...</translation>
+        <location filename="../map/CMapTMS.cpp" line="77"/>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="238"/>
-        <source>%1: Due to limitations in the Windows POSIX API Routino can't handle files larger than 4GB.</source>
+        <location filename="../map/CMapTMS.cpp" line="115"/>
+        <source>Layer %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="342"/>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="429"/>
-        <source>Calculate route with %1</source>
+        <location filename="../map/CMapTMS.cpp" line="130"/>
+        <source>This map requires OpenSSL support. However due to legal restrictions in some countries OpenSSL is not packaged with QMapShack. You can have a look at the <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> for binaries. You have to copy libeay32.dll and ssleay32.dll into the QMapShack program directory.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="350"/>
-        <source><br/>Calculation time: %1s</source>
+        <location filename="../map/CMapTMS.cpp" line="304"/>
+        <source><b>%1</b>: %2 tiles pending<br/></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>CRouterRoutinoPathSetup</name>
+    <name>CMapVRT</name>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutinoPathSetup.cpp" line="40"/>
-        <source>Add or remove paths containing Routino data. There can be multiple databases in a path but no sub-path is parsed.</source>
+        <location filename="../map/CMapVRT.cpp" line="45"/>
+        <location filename="../map/CMapVRT.cpp" line="59"/>
+        <location filename="../map/CMapVRT.cpp" line="88"/>
+        <location filename="../map/CMapVRT.cpp" line="126"/>
+        <source>Error...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutinoPathSetup.cpp" line="55"/>
-        <source>Select routing data file path...</source>
+        <location filename="../map/CMapVRT.cpp" line="45"/>
+        <location filename="../map/CMapVRT.cpp" line="59"/>
+        <source>Failed to load file: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Select DEM file path...</source>
-        <translation type="obsolete">Seleccione la ruta al archivo DEM...</translation>
-    </message>
-</context>
-<context>
-    <name>CRouterSetup</name>
-    <message>
-        <location filename="../gis/rte/router/CRouterSetup.cpp" line="36"/>
-        <source>Routino (offline)</source>
+        <location filename="../map/CMapVRT.cpp" line="88"/>
+        <source>File must be 8 bit palette or gray indexed.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterSetup.cpp" line="37"/>
-        <source>MapQuest (online)</source>
+        <location filename="../map/CMapVRT.cpp" line="126"/>
+        <source>No georeference information found.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>CRoutinoDatabaseBuilder</name>
+    <name>CMapVrtBuilder</name>
     <message>
-        <location filename="../tool/CRoutinoDatabaseBuilder.cpp" line="32"/>
-        <source>Create Routino Database</source>
+        <location filename="../tool/CMapVrtBuilder.cpp" line="28"/>
+        <source>Build GDAL VRT</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/CRoutinoDatabaseBuilder.cpp" line="56"/>
+        <location filename="../tool/CMapVrtBuilder.cpp" line="46"/>
         <source>Select files...</source>
-        <translation type="unfinished">Seleccionar ficheros de origen...</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/CRoutinoDatabaseBuilder.cpp" line="80"/>
-        <source>Select target path...</source>
+        <location filename="../tool/CMapVrtBuilder.cpp" line="70"/>
+        <source>Select target file...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/CRoutinoDatabaseBuilder.cpp" line="141"/>
+        <location filename="../tool/CMapVrtBuilder.cpp" line="114"/>
         <source>!!! done !!!
 </source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <source>!!! failed !!!
-</source>
-        <translation type="obsolete">!!! fallo !!!</translation>
-    </message>
 </context>
 <context>
-    <name>CSearchGoogle</name>
+    <name>CMapWMTS</name>
     <message>
-        <location filename="../gis/search/CSearchGoogle.cpp" line="118"/>
-        <source>Unknown response</source>
-        <translation>Respuesta desconocida</translation>
+        <location filename="../map/CMapWMTS.cpp" line="43"/>
+        <location filename="../map/CMapWMTS.cpp" line="53"/>
+        <location filename="../map/CMapWMTS.cpp" line="63"/>
+        <location filename="../map/CMapWMTS.cpp" line="72"/>
+        <location filename="../map/CMapWMTS.cpp" line="157"/>
+        <location filename="../map/CMapWMTS.cpp" line="217"/>
+        <source>Error...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/search/CSearchGoogle.cpp" line="128"/>
-        <source>Error: </source>
-        <translation>Error: </translation>
+        <location filename="../map/CMapWMTS.cpp" line="43"/>
+        <source>Failed to open %1</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CSetupDB</name>
     <message>
-        <source>Setup database...</source>
-        <translation type="obsolete">Configurar la base de datos...</translation>
-    </message>
-    <message>
-        <source>Changes will become active after an application's restart.</source>
-        <translation type="obsolete">Los cambios surtirán efecto tras reiniciar la aplicación.</translation>
-    </message>
-    <message>
-        <source>Select database path...</source>
-        <translation type="obsolete">Seleccione la ruta a la base de datos...</translation>
-    </message>
-</context>
-<context>
-    <name>CSetupDatabase</name>
-    <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="70"/>
-        <source>Error...</source>
-        <translation>Error...</translation>
-    </message>
-    <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="70"/>
-        <source>There is already a database with name '%1'</source>
-        <translation>Ya existe una base de datos con el nombre '%1'</translation>
+        <location filename="../map/CMapWMTS.cpp" line="53"/>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="84"/>
-        <source>New database...</source>
-        <translation>Nueva base de datos...</translation>
+        <location filename="../map/CMapWMTS.cpp" line="63"/>
+        <source>Failed to read: %1
+Unknown structure.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="109"/>
-        <source>Open database...</source>
-        <translation>Abrir base de datos...</translation>
+        <location filename="../map/CMapWMTS.cpp" line="72"/>
+        <source>Unexpected service. '* WMTS 1.0.0' is expected. '%1 %2' is read.</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CSetupWorkspace</name>
     <message>
-        <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
-        <source>Setup database...</source>
-        <translation>Configurar la base de datos...</translation>
+        <location filename="../map/CMapWMTS.cpp" line="151"/>
+        <source>This map requires OpenSSL support. However due to legal restrictions in some countries OpenSSL is not packaged with QMapShack. You can have a look at the <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> for binaries. You have to copy libeay32.dll and ssleay32.dll into the QMapShack program directory.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
-        <source>Changes will become active after an application's restart.</source>
-        <translation>Los cambios surtirán efecto tras reiniciar la aplicación.</translation>
+        <location filename="../map/CMapWMTS.cpp" line="217"/>
+        <source>No georeference information found.</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CTextEditWidget</name>
     <message>
-        <location filename="../widgets/CTextEditWidget.cpp" line="73"/>
-        <source>&Color...</source>
-        <translation>&Color...</translation>
+        <location filename="../map/CMapWMTS.cpp" line="413"/>
+        <source><b>%1</b>: %2 tiles pending<br/></source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IAbout</name>
-    <message>
-        <location filename="../IAbout.ui" line="14"/>
-        <source>About....</source>
-        <translation>Acerca de...</translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="55"/>
-        <source><b>QMapShack</b>, Version</source>
-        <translation><b>QMapShack</b>, Versión</translation>
-    </message>
+    <name>CMouseEditArea</name>
     <message>
-        <location filename="../IAbout.ui" line="62"/>
-        <location filename="../IAbout.ui" line="106"/>
-        <location filename="../IAbout.ui" line="120"/>
-        <location filename="../IAbout.ui" line="134"/>
-        <location filename="../IAbout.ui" line="148"/>
-        <source>TextLabel</source>
+        <location filename="../mouse/CMouseEditArea.cpp" line="28"/>
+        <location filename="../mouse/CMouseEditArea.cpp" line="35"/>
+        <source>Area</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="99"/>
-        <source>Qt</source>
-        <translation>Qt</translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="113"/>
-        <source>GDAL</source>
-        <translation>GDAL</translation>
+        <location filename="../mouse/CMouseEditArea.cpp" line="37"/>
+        <source><b>Edit Area</b><br/>Select a function and a routing mode via the tool buttons. Next select a point of the line. Only points marked with a large square can be changed. The ones with a black dot are subpoints introduced by routing.<br/></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="127"/>
-        <source>Proj4</source>
-        <translation>Proj4</translation>
+        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
+        <source>Edit name...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="141"/>
-        <source>Routino</source>
+        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
+        <source>Enter new area name.</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CMouseEditRte</name>
     <message>
-        <location filename="../IAbout.ui" line="166"/>
-        <source>Rainer Unseld </source>
+        <location filename="../mouse/CMouseEditRte.cpp" line="30"/>
+        <location filename="../mouse/CMouseEditRte.cpp" line="37"/>
+        <source>Route</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="173"/>
-        <source>French</source>
-        <translation type="unfinished">Francés</translation>
+        <location filename="../mouse/CMouseEditRte.cpp" line="39"/>
+        <source><b>Edit Route Points</b><br/>Select a function and a routing mode via the tool buttons. Next select a point of the line. Only points marked with a large square can be changed. The ones with a black dot are subpoints introduced by routing.<br/></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="180"/>
-        <source>Czech</source>
-        <translation type="unfinished">Checo</translation>
+        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
+        <source>Edit name...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="187"/>
-        <source>Pavel Fric</source>
+        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
+        <source>Enter new route name.</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CMouseEditTrk</name>
     <message>
-        <location filename="../IAbout.ui" line="194"/>
-        <source>German</source>
-        <translation type="unfinished">Alemán</translation>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="28"/>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="35"/>
+        <source>Track</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="201"/>
-        <source><b>Translation:</b></source>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="38"/>
+        <source><b>Edit Track Points</b><br/>Select a function and a routing mode via the tool buttons. Next select a point of the line. Only points marked with a large square can be changed. The ones with a black dot are subpoints introduced by routing.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="229"/>
-        <source>Dutch</source>
-        <translation type="unfinished">Holandés</translation>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="80"/>
+        <source>Warning!</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="236"/>
-        <source>Harrie Klomp</source>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="80"/>
+        <source>This will replace all data of the original by a simple line of coordinates. All other data will be lost permanently.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="295"/>
-        <source><b>Binaries:</b></source>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
+        <source>Edit name...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="311"/>
-        <source><b>Contributors:</b></source>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
+        <source>Enter new track name.</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CMouseNormal</name>
     <message>
-        <location filename="../IAbout.ui" line="208"/>
-        <source>Josef Latt</source>
+        <location filename="../mouse/CMouseNormal.cpp" line="39"/>
+        <source>Add Waypoint</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="215"/>
-        <source>Spanish</source>
-        <translation type="unfinished">Español</translation>
+        <location filename="../mouse/CMouseNormal.cpp" line="40"/>
+        <source>Add Track</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="222"/>
-        <source>Jose Luis Domingo Lopez</source>
+        <location filename="../mouse/CMouseNormal.cpp" line="41"/>
+        <source>Add Route</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="254"/>
-        <source>Ivo Kronenberg</source>
+        <location filename="../mouse/CMouseNormal.cpp" line="42"/>
+        <source>Add Area</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="261"/>
-        <source>Helmut Schmidt</source>
+        <location filename="../mouse/CMouseNormal.cpp" line="45"/>
+        <source>Copy position</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="268"/>
-        <source>Win64</source>
+        <location filename="../mouse/CMouseNormal.cpp" line="46"/>
+        <source>Copy position (Grid)</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CMousePrint</name>
     <message>
-        <location filename="../IAbout.ui" line="275"/>
-        <source>OS X</source>
+        <location filename="../mouse/CMousePrint.cpp" line="30"/>
+        <source><b>Save(Print) Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners. Save/print the selection by a left click on the disc/printer icon in the center of the selection.</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CMouseRangeTrk</name>
     <message>
-        <location filename="../IAbout.ui" line="282"/>
-        <source>...and thanks to all Linux binary maintainers for doing a great job. Special thanks to Dan Horák and Bas Couwenberg for showing presence on the mailing list to discuss distribution related topics.</source>
+        <location filename="../mouse/CMouseRangeTrk.cpp" line="42"/>
+        <source><b>Select Range</b><br/>Select first track point. And then a second one.<br/></source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CPhotoAlbum</name>
     <message>
-        <location filename="../IAbout.ui" line="318"/>
-        <source>Christian Eichler (qms at christian-eichler.de)</source>
+        <location filename="../widgets/CPhotoAlbum.cpp" line="73"/>
+        <source>Select images...</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CPlotProfile</name>
     <message>
-        <location filename="../IAbout.ui" line="332"/>
-        <source>This software is licensed under GPL3 or any later version</source>
+        <location filename="../plot/CPlotProfile.cpp" line="73"/>
+        <source>distance [%1]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="339"/>
-        <source>© 2014 Oliver Eichler (oliver.eichler at gmx.de)</source>
+        <location filename="../plot/CPlotProfile.cpp" line="74"/>
+        <source>alt. [%1]</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>ICanvasSetup</name>
+    <name>CPrintDialog</name>
     <message>
-        <source>Setup Map Workspace...</source>
-        <translation type="obsolete">Configurar Espacio de Trabajo del Mapa...</translation>
+        <location filename="../print/CPrintDialog.cpp" line="67"/>
+        <source>Print Map...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../canvas/ICanvasSetup.ui" line="14"/>
-        <source>Setup Map View...</source>
-        <translation>Configurar Vista de Mapa...</translation>
+        <location filename="../print/CPrintDialog.cpp" line="74"/>
+        <source>Save Map as Image...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../canvas/ICanvasSetup.ui" line="22"/>
-        <source>Projection & Datum</source>
-        <translation>Proyección & Datum</translation>
+        <location filename="../print/CPrintDialog.cpp" line="94"/>
+        <source>Printer Properties...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../canvas/ICanvasSetup.ui" line="32"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../print/CPrintDialog.cpp" line="169"/>
+        <source>Pages: %1 x %2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../canvas/ICanvasSetup.ui" line="53"/>
-        <source>Scales</source>
+        <location filename="../print/CPrintDialog.cpp" line="170"/>
+        <source>Zoom with mouse wheel on map below to change resolution:
+
+%1x%2 pixel
+x: %3 m/px
+y: %4 m/px</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../canvas/ICanvasSetup.ui" line="59"/>
-        <source>Logarithmic</source>
+        <location filename="../print/CPrintDialog.cpp" line="216"/>
+        <source>Printing pages.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../canvas/ICanvasSetup.ui" line="66"/>
-        <source>Square (optimized for TMS and WTMS tiles)</source>
+        <location filename="../print/CPrintDialog.cpp" line="260"/>
+        <source>Save map...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>ICombineTrk</name>
+    <name>CProgressDialog</name>
     <message>
-        <location filename="../gis/trk/ICombineTrk.ui" line="14"/>
-        <source>Combine Tracks...</source>
-        <translation>Combinar Tracks...</translation>
+        <location filename="../helpers/CProgressDialog.cpp" line="40"/>
+        <source>Elapsed time: %1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/ICombineTrk.ui" line="43"/>
-        <location filename="../gis/trk/ICombineTrk.ui" line="70"/>
-        <location filename="../gis/trk/ICombineTrk.ui" line="117"/>
-        <location filename="../gis/trk/ICombineTrk.ui" line="144"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../helpers/CProgressDialog.cpp" line="82"/>
+        <source>Elapsed time: %1 seconds.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>ICoordFormatSetup</name>
+    <name>CProjWizard</name>
     <message>
-        <location filename="../units/ICoordFormatSetup.ui" line="14"/>
-        <source>Coordinate Format...</source>
+        <location filename="../grid/CProjWizard.cpp" line="62"/>
+        <source>north</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../units/ICoordFormatSetup.ui" line="36"/>
-        <source>N48° 53.660 E013° 31.113</source>
+        <location filename="../grid/CProjWizard.cpp" line="63"/>
+        <source>south</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../units/ICoordFormatSetup.ui" line="29"/>
-        <source>N48.8943° E013.51855°</source>
+        <location filename="../grid/CProjWizard.cpp" line="222"/>
+        <source>Error...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../units/ICoordFormatSetup.ui" line="22"/>
-        <source>N48° 53' 39.6" E13° 31' 6.78"</source>
+        <location filename="../grid/CProjWizard.cpp" line="222"/>
+        <source>The value
+'%1'
+is not a valid coordinate system definition:
+%2</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>ICreateRouteFromWpt</name>
+    <name>CProjWpt</name>
     <message>
-        <location filename="../gis/rte/ICreateRouteFromWpt.ui" line="14"/>
-        <source>Create Route from Waypoints</source>
+        <location filename="../gis/wpt/CProjWpt.cpp" line="62"/>
+        <source>Edit name...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/ICreateRouteFromWpt.ui" line="30"/>
-        <location filename="../gis/rte/ICreateRouteFromWpt.ui" line="50"/>
-        <source>...</source>
-        <translation type="unfinished">...</translation>
+        <location filename="../gis/wpt/CProjWpt.cpp" line="62"/>
+        <source>Enter new waypoint name.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>ICutTrk</name>
+    <name>CPropertyTrk</name>
     <message>
-        <location filename="../gis/trk/ICutTrk.ui" line="14"/>
-        <source>Cut Track</source>
+        <location filename="../gis/trk/CPropertyTrk.cpp" line="65"/>
+        <source>distance [%1]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/ICutTrk.ui" line="20"/>
-        <source>Delete first part of the track and keep second one</source>
+        <location filename="../gis/trk/CPropertyTrk.cpp" line="77"/>
+        <source>time</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CQlgtDb</name>
     <message>
-        <location filename="../gis/trk/ICutTrk.ui" line="27"/>
-        <source>Keep both parts of the track</source>
+        <location filename="../qlgt/CQlgtDb.cpp" line="308"/>
+        <source>Migrating database from version 4 to 5.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/ICutTrk.ui" line="37"/>
-        <source>Keep first part of the track and delete second one</source>
+        <location filename="../qlgt/CQlgtDb.cpp" line="362"/>
+        <source>Migrating database from version 5 to 6.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/ICutTrk.ui" line="60"/>
-        <source>Check this to store the result into a new track. 
-
-If you keep both parts of the track you have to create new ones. 
-
-If you want to keep just one half you can simply remove the points, or check this to create a new track.</source>
+        <location filename="../qlgt/CQlgtDb.cpp" line="420"/>
+        <source>Migrating database from version 6 to 7.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/ICutTrk.ui" line="67"/>
-        <source>Create a new track</source>
+        <location filename="../qlgt/CQlgtDb.cpp" line="486"/>
+        <source>Migrating database from version 7 to 8.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Create a clone</source>
-        <translation type="obsolete">Crear un duplicado</translation>
-    </message>
-</context>
-<context>
-    <name>IDemPathSetup</name>
-    <message>
-        <source>Setup DEM file pathss</source>
-        <translation type="vanished">Configurar las rutas a los archivos DEM</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="515"/>
+        <source>Migrating database from version 8 to 9.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPathSetup.ui" line="14"/>
-        <source>Setup DEM file paths</source>
+        <location filename="../qlgt/CQlgtDb.cpp" line="538"/>
+        <source>Open database: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPathSetup.ui" line="31"/>
-        <location filename="../dem/IDemPathSetup.ui" line="51"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="547"/>
+        <source>Folders:          %1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPathSetup.ui" line="112"/>
-        <source>-</source>
-        <translation>-</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="556"/>
+        <source>Tracks:           %1</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IDemPropSetup</name>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../qlgt/CQlgtDb.cpp" line="564"/>
+        <source>Routes:           %1 (Only the basic route will be copied)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="35"/>
-        <source><html><head/><body><p>Change opacity of map</p></body></html></source>
-        <translation><html><head/><body><p>Cambiar la opacidad del mapa</p></body></html></translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="572"/>
+        <source>Waypoints:        %1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="50"/>
-        <source><html><head/><body><p>Click to use current scale as minimum scale to display the map.</p></body></html></source>
-        <translation><html><head/><body><p>Pulse para usar la escala actual como la escala mínima a la que mostrar el mapa.</p></body></html></translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="580"/>
+        <source>Overlays:         %1 (areas will be converted as areas, distance lines will be converted to tracks, all other overlay items will be lost)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="53"/>
-        <location filename="../dem/IDemPropSetup.ui" line="90"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="587"/>
+        <source>Diaries:          %1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="74"/>
-        <source><html><head/><body><p>Control the range of scale the map is displayed. Use the two buttons left and right to define the actual scale as either minimum or maximum scale.</p></body></html></source>
-        <translation><html><head/><body><p>Controle el rango de escalas para las cuales desea que se muestre el mapa. Use los dos botones a izquierda y derecha para definir la escala actual como bien la escala mínima o máxima para el mapa.</p></body></html></translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="594"/>
+        <source>Map selections:   %1 (can't be converted to QMapShack)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="87"/>
-        <source><html><head/><body><p>Click to use current scale as maximum scale to display the map.</p></body></html></source>
-        <translation><html><head/><body><p>Pulse para usar la escala actual como la escala máxima a la que mostrar el mapa</p></body></html></translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="600"/>
+        <source>------ Start to convert database to %1------</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="118"/>
-        <source>Hillshading</source>
-        <translation>Sombreado</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="604"/>
+        <source>Failed to create target database.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="144"/>
-        <source>Slope </source>
-        <translation>Pendiente</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="605"/>
+        <source>------ Abort ------</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="226"/>
-        <location filename="../dem/IDemPropSetup.ui" line="326"/>
-        <location filename="../dem/IDemPropSetup.ui" line="410"/>
-        <location filename="../dem/IDemPropSetup.ui" line="494"/>
-        <location filename="../dem/IDemPropSetup.ui" line="578"/>
-        <source>°</source>
-        <translation type="unfinished">º</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="633"/>
+        <source>------ Done ------</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="229"/>
-        <location filename="../dem/IDemPropSetup.ui" line="329"/>
-        <location filename="../dem/IDemPropSetup.ui" line="413"/>
-        <location filename="../dem/IDemPropSetup.ui" line="497"/>
-        <location filename="../dem/IDemPropSetup.ui" line="581"/>
-        <source>> </source>
+        <location filename="../qlgt/CQlgtDb.cpp" line="641"/>
+        <source>Restore folders...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="251"/>
-        <location filename="../dem/IDemPropSetup.ui" line="270"/>
-        <location filename="../dem/IDemPropSetup.ui" line="354"/>
-        <location filename="../dem/IDemPropSetup.ui" line="438"/>
-        <location filename="../dem/IDemPropSetup.ui" line="522"/>
-        <source>TextLabel</source>
+        <location filename="../qlgt/CQlgtDb.cpp" line="661"/>
+        <source>Imported %1 folders and %2 diaries</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IDemsList</name>
     <message>
-        <location filename="../dem/IDemList.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../qlgt/CQlgtDb.cpp" line="667"/>
+        <source>Copy items...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/IDemList.ui" line="118"/>
-        <source>To add files with elevation data use File->Setup DEM Paths. </source>
-        <translation>Para añadir archivos con información de elevación use Archivo->Configurar Rutas a los DEM. </translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="685"/>
+        <source>Imported %1 tracks, %2 waypoints, %3 routes, %4 areas</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/IDemList.ui" line="131"/>
-        <source>Use the context menu (right mouse button click on entry) to activate a file. Use drag-n-drop to move the activated file in the process order. </source>
-        <translation>Use el menú contextual (botón derecho del ratón y seleccione) para activar un archivo. Use arrastrar y soltar para mover el archivo activado en el orden de procesamiento.</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="686"/>
+        <source>Import folders...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../dem/IDemList.ui" line="156"/>
-        <source>Activate</source>
-        <translation>Activar</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="751"/>
+        <source>Overlay of type '%1' cant be converted</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IDetailsGeoCache</name>
+    <name>CQlgtTrack</name>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="20"/>
-        <source>Dialog</source>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="164"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="218"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="265"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="291"/>
+        <source>Corrupt track ...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="47"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="73"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="86"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="99"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="112"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="125"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="151"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="164"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="177"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="190"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="203"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="252"/>
-        <source>-</source>
-        <translation>-</translation>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="164"/>
+        <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="267"/>
-        <source>about:blank</source>
-        <translation>about:blank</translation>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="218"/>
+        <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="40"/>
-        <source>Position:</source>
-        <translation>Posición:</translation>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="265"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="291"/>
+        <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CQmsDb</name>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="60"/>
-        <source>Difficulty</source>
-        <translation>Dificultad</translation>
+        <location filename="../qlgt/CQmsDb.cpp" line="47"/>
+        <source>Existing file...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="138"/>
-        <source>Terrain</source>
-        <translation>Terreno</translation>
+        <location filename="../qlgt/CQmsDb.cpp" line="47"/>
+        <source>Remove existing %1?</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="214"/>
-        <source>Update spoilers</source>
+        <location filename="../qlgt/CQmsDb.cpp" line="52"/>
+        <source>Remove existing file %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="217"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="275"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../qlgt/CQmsDb.cpp" line="163"/>
+        <source>%1: drop item with QLGT DB ID %2</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CQmsProject</name>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="293"/>
-        <source>Hint:</source>
-        <translation>Consejo:</translation>
+        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <source>Failed to open...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="324"/>
-        <source>TextLabel</source>
+        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <source>Failed to open %1</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IDetailsOvlArea</name>
+    <name>CRouterMapQuest</name>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="14"/>
-        <source>Dialog</source>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="37"/>
+        <source>Fastest</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="44"/>
-        <source>-</source>
-        <translation>-</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="38"/>
+        <source>Shortest</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="69"/>
-        <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
-        <translation type="unfinished"><html><head/><body><p>El waypoint se importó en QMapShack y ha sido modificado, por lo que ya no muestra los datos originales. Por favor consulte  los cambios en el histórico. </p></body></html></translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="39"/>
+        <source>Bicycle</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="85"/>
-        <source>Toggle read only mode. You have to open the lock to edit the item.</source>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="40"/>
+        <source>Pedestrian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="88"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="42"/>
+        <source>US English</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="118"/>
-        <source>Color</source>
-        <translation>Color</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="43"/>
+        <source>British English</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="139"/>
-        <source>Border width</source>
-        <translation>Ancho del borde</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="44"/>
+        <source>Danish</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="153"/>
-        <source>Style</source>
-        <translation>Estilo</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="45"/>
+        <source>Dutch</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="172"/>
-        <source>Opacity</source>
-        <translation>Opacidad</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="46"/>
+        <source>French</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="185"/>
-        <source>Info</source>
-        <translation type="unfinished">Información</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="47"/>
+        <source>German</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="214"/>
-        <source>Points</source>
-        <translation>Puntos</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="48"/>
+        <source>Italian</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="241"/>
-        <source>Position</source>
-        <translation>Posición</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="49"/>
+        <source>Norwegian</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="250"/>
-        <source>Hist.</source>
-        <translation>Historial</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="50"/>
+        <source>Spanish</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IDetailsPrj</name>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="51"/>
+        <source>Swedish</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="50"/>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="57"/>
-        <source>-</source>
-        <translation>-</translation>
-    </message>
-    <message>
-        <source>Sort By Time</source>
-        <translation type="obsolete">Ordenar por Fecha/Hora</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="110"/>
+        <source>mode "%1"</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Keep Order of Project</source>
-        <translation type="obsolete">Mantener orden del proyecto</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="114"/>
+        <source>no highways</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="115"/>
-        <source>Print diary</source>
-        <translation>Imprimir diario</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="125"/>
+        <source>no toll roads</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="94"/>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="118"/>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="138"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="136"/>
+        <source>no seasonal</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="71"/>
-        <source>Keep order of project</source>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="147"/>
+        <source>no unpaved</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="76"/>
-        <source>Sort by time</source>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="158"/>
+        <source>no ferry</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="81"/>
-        <source>Sort along track (multiple)</source>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="169"/>
+        <source>no crossing of country borders</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="86"/>
-        <source>Sort along track (single)</source>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="301"/>
+        <source><b>MapQuest</b><br/>Routing request sent to server. Please wait...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="135"/>
-        <source>Rebuild diary.</source>
-        <translation>Recargar diario.</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="312"/>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="346"/>
+        <source><b>MapQuest</b><br/>Bad response from server:<br/>%1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="43"/>
-        <source>Keywords:</source>
-        <translation>Etiquetas:</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="363"/>
+        <source><br/>Calculation time: %1s</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IDetailsRte</name>
+    <name>CRouterRoutino</name>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="36"/>
-        <source>Info</source>
-        <translation type="unfinished">Información</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="55"/>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="238"/>
+        <source>Warning...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="65"/>
-        <source>-</source>
-        <translation type="unfinished">-</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="55"/>
+        <source>Found Routino with a wrong version. Expected %1 found %2</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="97"/>
-        <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
-        <translation type="unfinished"><html><head/><body><p>El waypoint se importó en QMapShack y ha sido modificado, por lo que ya no muestra los datos originales. Por favor consulte  los cambios en el histórico. </p></body></html></translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="59"/>
+        <source>Shortest</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="113"/>
-        <source>Toggle read only mode. You have to open the lock to edit the item.</source>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="60"/>
+        <source>Quickest</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="116"/>
-        <source>...</source>
-        <translation type="unfinished">...</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="78"/>
+        <source>Foot</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="176"/>
-        <source>Hist.</source>
-        <translation type="unfinished">Historial</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="79"/>
+        <source>Horse</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IDetailsTrk</name>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="80"/>
+        <source>Wheelchair</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="56"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="77"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="98"/>
-        <source>-
--</source>
-        <translation>-
--</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="81"/>
+        <source>Bicycle</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="533"/>
-        <source>Profile</source>
-        <translation>Perfil</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="82"/>
+        <source>Moped</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="702"/>
-        <source>Speed</source>
-        <translation>Velocidad</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="83"/>
+        <source>Motorcycle</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Progress</source>
-        <translation type="vanished">Progreso</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="84"/>
+        <source>Motorcar</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="163"/>
-        <source>Toggle read only mode. You have to open the lock to edit the item.</source>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="85"/>
+        <source>Goods</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="166"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="87"/>
+        <source>English</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="202"/>
-        <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
-        <translation type="unfinished"><html><head/><body><p>El waypoint se importó en QMapShack y ha sido modificado, por lo que ya no muestra los datos originales. Por favor consulte  los cambios en el histórico. </p></body></html></translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="88"/>
+        <source>German</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="298"/>
-        <source>Style</source>
-        <translation type="unfinished">Estilo</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="89"/>
+        <source>French</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="340"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="434"/>
-        <source>from Data</source>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="90"/>
+        <source>Hungarian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="353"/>
-        <source>Source</source>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="91"/>
+        <source>Dutch</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="376"/>
-        <source>Maximum</source>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="92"/>
+        <source>Russian</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="405"/>
-        <source>Minimum</source>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="93"/>
+        <source>Polish</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="447"/>
-        <source>Solid color</source>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="128"/>
+        <source>A function was called without the database variable set.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="495"/>
-        <source>Graphs</source>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="131"/>
+        <source>A function was called without the profile variable set.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="540"/>
-        <source>Graph 3</source>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="134"/>
+        <source>A function was called without the translation variable set.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="547"/>
-        <source>Graph 2</source>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="137"/>
+        <source>The specified database to load did not exist.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="554"/>
-        <source>Graph 1</source>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="140"/>
+        <source>The specified database could not be loaded.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="562"/>
-        <source>Activity</source>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="143"/>
+        <source>The specified profiles XML file did not exist.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="607"/>
-        <source>To differentiate the track statistics select an activity from the list for the complete track. Or select a part of the track to assign an activity.</source>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="146"/>
+        <source>The specified profiles XML file could not be loaded.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="634"/>
-        <source>Points</source>
-        <translation>Puntos</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="149"/>
+        <source>The specified translations XML file did not exist.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="682"/>
-        <source>Time</source>
-        <translation>Tiempo</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="152"/>
+        <source>The specified translations XML file could not be loaded.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="687"/>
-        <source>Ele.</source>
-        <translation>Altitud</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="155"/>
+        <source>The requested profile name does not exist in the loaded XML file.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="692"/>
-        <source>Delta</source>
-        <translation>Delta</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="158"/>
+        <source>The requested translation language does not exist in the loaded XML file.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="697"/>
-        <source>Dist.</source>
-        <translation>Distancia</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="161"/>
+        <source>In the routing database there is no highway near the coordinates to place a waypoint.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="707"/>
-        <source>Slope</source>
-        <translation>Pendiente</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="164"/>
+        <source>The profile and database do not work together.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="712"/>
-        <source>Ascend</source>
-        <translation>Ascenso</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="167"/>
+        <source>The profile being used has not been validated.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="717"/>
-        <source>Descend</source>
-        <translation>Descenso</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="170"/>
+        <source>The user specified profile contained invalid data.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="722"/>
-        <source>Position</source>
-        <translation>Posición</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="173"/>
+        <source>The routing options specified are not consistent with each other.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="266"/>
-        <source>Info</source>
-        <translation>Información</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="176"/>
+        <source>There is a mismatch between the library and caller API version.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="227"/>
-        <source>-</source>
-        <translation>-</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="179"/>
+        <source>Route calculation was aborted by user.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="731"/>
-        <source>Filter</source>
-        <translation>Filtro</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="185"/>
+        <source>A route could not be found to waypoint %1.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="768"/>
-        <source>Hist.</source>
-        <translation>Historial</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="188"/>
+        <source>Unknown error: %1</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IDetailsWpt</name>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="14"/>
-        <source>Dialog</source>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="200"/>
+        <source>profile "%1"</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="221"/>
-        <source>Toggle read only mode. You have to open the lock to edit the item.</source>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="201"/>
+        <source>, mode "%1"</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="224"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="279"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="299"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="331"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="238"/>
+        <source>%1: Due to limitations in the Windows POSIX API Routino can't handle files larger than 4GB.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="77"/>
-        <source>Position:</source>
-        <translation>Posición:</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="344"/>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="431"/>
+        <source>Calculate route with %1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="43"/>
-        <source>Info</source>
-        <translation type="unfinished">Información</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="352"/>
+        <source><br/>Calculation time: %1s</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CRouterRoutinoPathSetup</name>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="84"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="110"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="136"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="186"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="265"/>
-        <source>-</source>
-        <translation>-</translation>
+        <location filename="../gis/rte/router/CRouterRoutinoPathSetup.cpp" line="40"/>
+        <source>Add or remove paths containing Routino data. There can be multiple databases in a path but no sub-path is parsed.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="97"/>
-        <source>Ele.</source>
-        <translation></translation>
+        <location filename="../gis/rte/router/CRouterRoutinoPathSetup.cpp" line="55"/>
+        <source>Select routing data file path...</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CRouterSetup</name>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="123"/>
-        <source>Proximity:</source>
-        <translation>Proximidad:</translation>
+        <location filename="../gis/rte/router/CRouterSetup.cpp" line="36"/>
+        <source>Routino (offline)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="205"/>
-        <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
-        <translation><html><head/><body><p>El waypoint se importó en QMapShack y ha sido modificado, por lo que ya no muestra los datos originales. Por favor consulte  los cambios en el histórico. </p></body></html></translation>
+        <location filename="../gis/rte/router/CRouterSetup.cpp" line="37"/>
+        <source>MapQuest (online)</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CRoutinoDatabaseBuilder</name>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="350"/>
-        <source>Hist.</source>
-        <translation type="unfinished">Historial</translation>
-    </message>
-    <message>
-        <source><html><head/><body><p>Read Only Mode</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Modo Sólo Lectura</p></body></html></translation>
+        <location filename="../tool/CRoutinoDatabaseBuilder.cpp" line="32"/>
+        <source>Create Routino Database</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="276"/>
-        <source>Add images.</source>
-        <translation>Añadir imagenes.</translation>
+        <location filename="../tool/CRoutinoDatabaseBuilder.cpp" line="56"/>
+        <source>Select files...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="296"/>
-        <source>Delete selected image.</source>
-        <translation>Eliminar imagen seleccionada.</translation>
+        <location filename="../tool/CRoutinoDatabaseBuilder.cpp" line="80"/>
+        <source>Select target path...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="258"/>
-        <source>Date/Time:</source>
-        <translation>Fecha/Hora:</translation>
+        <location filename="../tool/CRoutinoDatabaseBuilder.cpp" line="141"/>
+        <source>!!! done !!!
+</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IElevationDialog</name>
-    <message>
-        <location filename="../helpers/IElevationDialog.ui" line="14"/>
-        <source>Edit elevation...</source>
-        <translation>Editar altitud...</translation>
-    </message>
+    <name>CSearchGoogle</name>
     <message>
-        <location filename="../helpers/IElevationDialog.ui" line="22"/>
-        <source>Elevation</source>
-        <translation>Altitud</translation>
+        <location filename="../gis/search/CSearchGoogle.cpp" line="118"/>
+        <source>Unknown response</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/IElevationDialog.ui" line="32"/>
-        <source>-</source>
-        <translation>-</translation>
+        <location filename="../gis/search/CSearchGoogle.cpp" line="128"/>
+        <source>Error: </source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CSetupDatabase</name>
     <message>
-        <location filename="../helpers/IElevationDialog.ui" line="39"/>
-        <source>Get elevation from active digital elevation model.</source>
-        <translation>Obtener la altitud desde el DEM activo.</translation>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="47"/>
+        <source>Missing Requirement</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/IElevationDialog.ui" line="42"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="48"/>
+        <source>MySQL cannot be used at this point, because the corresponding driver (QMYSQL) is not available.<br />Please make sure you have installed the corresponding package.<br />If you don't know what to do now you should have <a href="%1">a look at the wiki</a>.</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IFilterDelete</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterDelete.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="102"/>
+        <source>Error...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterDelete.ui" line="51"/>
-        <source><b>Remove Track Points</b></source>
-        <translation><b>Eliminar puntos del Track</b></translation>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="102"/>
+        <source>There is already a database with name '%1'</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterDelete.ui" line="63"/>
-        <source>Remove all hidden track points permanently.</source>
-        <translation>Eliminar todos los puntos ocultos del track definitavamente.</translation>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="115"/>
+        <source>New database...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterDelete.ui" line="70"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="140"/>
+        <source>Open database...</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IFilterDouglasPeuker</name>
+    <name>CSetupWorkspace</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="55"/>
+        <source>Setup database...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="45"/>
-        <source><b>Hide Points (Douglas Peuker)</b></source>
-        <translation><b>Ocultar Puntos (Douglas Peuker)</b></translation>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="55"/>
+        <source>Changes will become active after an application's restart.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CSlfProject</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="57"/>
-        <source>Hide track points if the distance to a line between neighboring points is less than</source>
-        <translation>Ocultar puntos del track si la distancia a una linea entre puntos vecinos es menor que</translation>
+        <location filename="../gis/slf/CSlfProject.cpp" line="42"/>
+        <source>Failed to load file %1...</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CSlfReader</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="70"/>
-        <source>m</source>
-        <translation>m</translation>
+        <location filename="../gis/slf/CSlfReader.cpp" line="59"/>
+        <source>%1 does not exist</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="93"/>
-        <source>Apply filter now.</source>
-        <translation>Aplicar filtro ahora.</translation>
+        <location filename="../gis/slf/CSlfReader.cpp" line="64"/>
+        <source>Failed to open %1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="96"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../gis/slf/CSlfReader.cpp" line="75"/>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IFilterInvalid</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterInvalid.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../gis/slf/CSlfReader.cpp" line="82"/>
+        <source>Not a SLF file: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterInvalid.ui" line="41"/>
-        <source>Hide Invalid Points</source>
+        <location filename="../gis/slf/CSlfReader.cpp" line="89"/>
+        <source>Unsupported revision %1: %2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterInvalid.ui" line="56"/>
-        <source>Hide points with invalid coordinates at the beginning of the track.</source>
+        <location filename="../gis/slf/CSlfReader.cpp" line="164"/>
+        <source>Break %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterInvalid.ui" line="63"/>
-        <source>...</source>
-        <translation type="unfinished">...</translation>
+        <location filename="../gis/slf/CSlfReader.cpp" line="168"/>
+        <source>Lap %1</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IFilterMedian</name>
+    <name>CTextEditWidget</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterMedian.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../widgets/CTextEditWidget.cpp" line="73"/>
+        <source>&Color...</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CTwoNavProject</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterMedian.ui" line="51"/>
-        <source><b>Smooth Profile (Median Method)</b></source>
-        <translation><b>Suavizar Perfil (Mediana)</b></translation>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
+        <location filename="../gis/tnv/serialization.cpp" line="560"/>
+        <location filename="../gis/tnv/serialization.cpp" line="588"/>
+        <location filename="../gis/tnv/serialization.cpp" line="599"/>
+        <location filename="../gis/tnv/serialization.cpp" line="617"/>
+        <location filename="../gis/tnv/serialization.cpp" line="645"/>
+        <location filename="../gis/tnv/serialization.cpp" line="719"/>
+        <source>Error...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterMedian.ui" line="63"/>
-        <source>Smooth deviation of the track points elevation with a Median filter of size </source>
-        <translation>Suavizar el desvio de la elevación de los puntos del track con la Mediana de</translation>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
+        <location filename="../gis/tnv/serialization.cpp" line="560"/>
+        <source>Failed to open %1.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterMedian.ui" line="76"/>
-        <source>points</source>
-        <translation>puntos</translation>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="159"/>
+        <source>Save GIS data to...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterMedian.ui" line="105"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../gis/tnv/serialization.cpp" line="588"/>
+        <location filename="../gis/tnv/serialization.cpp" line="599"/>
+        <source>Only support lon/lat WGS 84 format.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="617"/>
+        <location filename="../gis/tnv/serialization.cpp" line="645"/>
+        <location filename="../gis/tnv/serialization.cpp" line="719"/>
+        <source>Failed to read data.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IFilterNewDate</name>
+    <name>IAbout</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../IAbout.ui" line="14"/>
+        <source>About....</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="35"/>
-        <source><b>Change Time</b></source>
-        <translation><b>Cambiar Fecha/hora</b></translation>
+        <location filename="../IAbout.ui" line="55"/>
+        <source><b>QMapShack</b>, Version</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="44"/>
-        <source>Change start of track to </source>
-        <translation>Modificar el inicio del track a </translation>
+        <location filename="../IAbout.ui" line="62"/>
+        <location filename="../IAbout.ui" line="106"/>
+        <location filename="../IAbout.ui" line="120"/>
+        <location filename="../IAbout.ui" line="134"/>
+        <location filename="../IAbout.ui" line="148"/>
+        <source>TextLabel</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="51"/>
-        <source>dd.MM.yy HH:mm:ss</source>
+        <location filename="../IAbout.ui" line="99"/>
+        <source>Qt</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="61"/>
-        <source>-</source>
-        <translation type="unfinished">-</translation>
+        <location filename="../IAbout.ui" line="113"/>
+        <source>GDAL</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="81"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../IAbout.ui" line="127"/>
+        <source>Proj4</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IFilterObscureDate</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../IAbout.ui" line="141"/>
+        <source>Routino</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="45"/>
-        <source><b>Obscure Timestamps</b></source>
-        <translation><b>Ocultar Marcas de tiempo</b></translation>
+        <location filename="../IAbout.ui" line="172"/>
+        <source>Czech:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="54"/>
-        <source>Increase timestamp by</source>
-        <translation>Incrementar marca de tiempo en</translation>
+        <location filename="../IAbout.ui" line="182"/>
+        <source>Pavel Fric</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="61"/>
-        <source> sec.</source>
-        <translation></translation>
+        <location filename="../IAbout.ui" line="195"/>
+        <source>German:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="68"/>
-        <source>with each track point. 0 sec. will remove timestamps.</source>
-        <translation>con cada punto del track. ( 0 sec. eliminará las marcas de tiempo).</translation>
+        <location filename="../IAbout.ui" line="205"/>
+        <source>Josef Latt</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="88"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../IAbout.ui" line="218"/>
+        <source>Dutch:</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IFilterOffsetElevation</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../IAbout.ui" line="228"/>
+        <source>Harrie Klomp</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="51"/>
-        <source><b>Offset Elevation</b></source>
-        <translation><b>Desplazar Elevación</b></translation>
+        <location filename="../IAbout.ui" line="241"/>
+        <source>French:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="69"/>
-        <source>Add offset of</source>
-        <translation>Añadir corrección de </translation>
+        <location filename="../IAbout.ui" line="251"/>
+        <source>Rainer Unseld </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="95"/>
-        <source>to track points elevation.</source>
-        <translation>a la elevación de los puntos del track.</translation>
+        <location filename="../IAbout.ui" line="258"/>
+        <source>Jose Luis Domingo Lopez</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="115"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../IAbout.ui" line="271"/>
+        <source>Spanish:</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IFilterReplaceElevation</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../IAbout.ui" line="281"/>
+        <source><b>Translation:</b></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="51"/>
-        <source><b>Replace Elevation Data</b></source>
-        <translation><b>Reemplazar Datos de Elevación</b></translation>
+        <location filename="../IAbout.ui" line="305"/>
+        <source>Win64:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="63"/>
-        <source>Replace elevation of track points with the values from loaded DEM files.</source>
-        <translation>Reemplazar elevación de los puntos del track utilizando los valores del fichero DEM cargado.</translation>
+        <location filename="../IAbout.ui" line="321"/>
+        <source>OS X:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="70"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../IAbout.ui" line="331"/>
+        <source>Helmut Schmidt</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IFilterReset</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterReset.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../IAbout.ui" line="338"/>
+        <source>Ivo Kronenberg</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterReset.ui" line="35"/>
-        <source><b>Reset Hidden Track Points</b></source>
-        <translation><b>Restaurar Puntos Ocultos del Track</b></translation>
+        <location filename="../IAbout.ui" line="345"/>
+        <source><b>Binaries:</b></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../IAbout.ui" line="354"/>
+        <source>...and thanks to all Linux binary maintainers for doing a great job. Special thanks to Dan Horák and Bas Couwenberg for showing presence on the mailing list to discuss distribution related topics.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterReset.ui" line="47"/>
-        <source>Make all trackpoints visible again.</source>
-        <translation>Hacer visibles de nuevo todos los puntos del track.</translation>
+        <location filename="../IAbout.ui" line="374"/>
+        <source><b>Contributors:</b></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterReset.ui" line="54"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../IAbout.ui" line="381"/>
+        <source>Christian Eichler (qms at christian-eichler.de)
+Ivo Kronenberg</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IFilterSpeed</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../IAbout.ui" line="399"/>
+        <source>This software is licensed under GPL3 or any later version</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="35"/>
-        <source><b>Change Speed</b></source>
-        <translation><b>Modificar Velocidad</b></translation>
+    <message utf8="true">
+        <location filename="../IAbout.ui" line="406"/>
+        <source>© 2014 Oliver Eichler (oliver.eichler at gmx.de)</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>ICanvasSetup</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="44"/>
-        <source>Set speed to </source>
-        <translation>Ajustar velocidad a </translation>
+        <location filename="../canvas/ICanvasSetup.ui" line="14"/>
+        <source>Setup Map View...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="51"/>
-        <source> km/h</source>
-        <translation></translation>
+        <location filename="../canvas/ICanvasSetup.ui" line="22"/>
+        <source>Projection & Datum</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="102"/>
+        <location filename="../canvas/ICanvasSetup.ui" line="32"/>
         <source>...</source>
-        <translation>...</translation>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IGisWidget</name>
     <message>
-        <location filename="../gis/IGisWidget.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../canvas/ICanvasSetup.ui" line="53"/>
+        <source>Scales</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisWidget.ui" line="69"/>
-        <location filename="../gis/IGisWidget.ui" line="99"/>
-        <source>Name</source>
-        <translation>Nombre</translation>
+        <location filename="../canvas/ICanvasSetup.ui" line="59"/>
+        <source>Logarithmic</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisWidget.ui" line="133"/>
-        <source>To add a database do a right click on the database list above.</source>
-        <translation>Para añadir una base de datos haga click-derecho en el espacio superior.  </translation>
+        <location filename="../canvas/ICanvasSetup.ui" line="66"/>
+        <source>Square (optimized for TMS and WTMS tiles)</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IGridSetup</name>
-    <message>
-        <location filename="../grid/IGridSetup.ui" line="14"/>
-        <source>Setup Grid...</source>
-        <translation>Configurar Malla...</translation>
-    </message>
+    <name>IColorChooser</name>
     <message>
-        <location filename="../grid/IGridSetup.ui" line="22"/>
-        <source>Projection</source>
-        <translation>Proyección</translation>
+        <location filename="../widgets/IColorChooser.ui" line="14"/>
+        <source>Dialog</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>ICombineTrk</name>
     <message>
-        <location filename="../grid/IGridSetup.ui" line="37"/>
-        <source>restore default</source>
-        <translation>restaurar predeterminado</translation>
+        <location filename="../gis/trk/ICombineTrk.ui" line="14"/>
+        <source>Combine Tracks...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../grid/IGridSetup.ui" line="40"/>
-        <location filename="../grid/IGridSetup.ui" line="66"/>
-        <location filename="../grid/IGridSetup.ui" line="92"/>
-        <location filename="../grid/IGridSetup.ui" line="146"/>
+        <location filename="../gis/trk/ICombineTrk.ui" line="43"/>
+        <location filename="../gis/trk/ICombineTrk.ui" line="70"/>
+        <location filename="../gis/trk/ICombineTrk.ui" line="117"/>
+        <location filename="../gis/trk/ICombineTrk.ui" line="144"/>
         <source>...</source>
-        <translation>...</translation>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>ICoordFormatSetup</name>
     <message>
-        <location filename="../grid/IGridSetup.ui" line="63"/>
-        <source>Get projection from current map.</source>
-        <translation>Obtener la proyección desde el mapa actual.</translation>
+        <location filename="../units/ICoordFormatSetup.ui" line="14"/>
+        <source>Coordinate Format...</source>
+        <translation type="unfinished"></translation>
     </message>
-    <message>
-        <location filename="../grid/IGridSetup.ui" line="89"/>
-        <source>projection wizzard</source>
-        <translation>asistente de proyección</translation>
+    <message utf8="true">
+        <location filename="../units/ICoordFormatSetup.ui" line="22"/>
+        <source>N48° 53' 39.6" E13° 31' 6.78"</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../units/ICoordFormatSetup.ui" line="29"/>
+        <source>N48.8943° E013.51855°</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../units/ICoordFormatSetup.ui" line="36"/>
+        <source>N48° 53.660 E013° 31.113</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>ICreateRouteFromWpt</name>
     <message>
-        <location filename="../grid/IGridSetup.ui" line="130"/>
-        <source>Grid color</source>
-        <translation>Color de la malla</translation>
+        <location filename="../gis/rte/ICreateRouteFromWpt.ui" line="14"/>
+        <source>Create Route from Waypoints</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../grid/IGridSetup.ui" line="143"/>
-        <source>setup grid color</source>
-        <translation>configurar el color de la malla</translation>
+        <location filename="../gis/rte/ICreateRouteFromWpt.ui" line="30"/>
+        <location filename="../gis/rte/ICreateRouteFromWpt.ui" line="50"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IImportDatabase</name>
+    <name>ICutTrk</name>
     <message>
-        <location filename="../tool/IImportDatabase.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../gis/trk/ICutTrk.ui" line="14"/>
+        <source>Cut Track</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IImportDatabase.ui" line="45"/>
-        <source>Source Database:</source>
-        <translation>Origen de Base de datos:</translation>
+        <location filename="../gis/trk/ICutTrk.ui" line="20"/>
+        <source>Delete first part of the track and keep second one</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IImportDatabase.ui" line="52"/>
-        <location filename="../tool/IImportDatabase.ui" line="93"/>
-        <source>-</source>
-        <translation>-</translation>
+        <location filename="../gis/trk/ICutTrk.ui" line="27"/>
+        <source>Keep both parts of the track</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IImportDatabase.ui" line="22"/>
-        <location filename="../tool/IImportDatabase.ui" line="63"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../gis/trk/ICutTrk.ui" line="37"/>
+        <source>Keep first part of the track and delete second one</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IImportDatabase.ui" line="86"/>
-        <source>Target Database:</source>
-        <translation>Destino de Base de Datos:</translation>
+        <location filename="../gis/trk/ICutTrk.ui" line="60"/>
+        <source>Check this to store the result into a new track. 
+
+If you keep both parts of the track you have to create new ones. 
+
+If you want to keep just one half you can simply remove the points, or check this to create a new track.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IImportDatabase.ui" line="102"/>
-        <source>Start</source>
-        <translation>Comenzar</translation>
+        <location filename="../gis/trk/ICutTrk.ui" line="67"/>
+        <source>Create a new track</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IInputDialog</name>
+    <name>IDB</name>
     <message>
-        <location filename="../helpers/IInputDialog.ui" line="14"/>
-        <source>Edit...</source>
-        <translation>Editar...</translation>
+        <location filename="../gis/db/IDB.cpp" line="60"/>
+        <source>The internal database format of '%1'' has changed. QMapShack will migrate your database, now. After the migration the database won't be usable with older versions of QMapShack. It is recommended to backup the database first.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/IInputDialog.ui" line="20"/>
-        <source>TextLabel</source>
+        <location filename="../gis/db/IDB.cpp" line="64"/>
+        <source>Migrate database...</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>ILinksDialog</name>
     <message>
-        <location filename="../helpers/ILinksDialog.ui" line="14"/>
-        <source>Links...</source>
-        <translation>Links...</translation>
+        <location filename="../gis/db/IDB.cpp" line="74"/>
+        <source>Failed to migrate '%1'.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/ILinksDialog.ui" line="23"/>
-        <source>Type</source>
-        <translation>Tipo</translation>
+        <location filename="../gis/db/IDB.cpp" line="76"/>
+        <location filename="../gis/db/IDB.cpp" line="100"/>
+        <source>Error...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/ILinksDialog.ui" line="28"/>
-        <source>Text</source>
-        <translation>Texto</translation>
+        <location filename="../gis/db/IDB.cpp" line="85"/>
+        <source>The database version of '%1'' is more advanced as the one understood by your QMapShack installation. This won't work.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/ILinksDialog.ui" line="33"/>
-        <source>Uri</source>
-        <translation>Uri</translation>
+        <location filename="../gis/db/IDB.cpp" line="88"/>
+        <source>Wrong database version...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/ILinksDialog.ui" line="43"/>
-        <location filename="../helpers/ILinksDialog.ui" line="63"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../gis/db/IDB.cpp" line="98"/>
+        <source>Failed to initialize '%1'.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IMainWindow</name>
+    <name>IDBMysql</name>
     <message>
-        <location filename="../IMainWindow.ui" line="17"/>
-        <source>QMapShack</source>
-        <translation>QMapShack</translation>
+        <location filename="../gis/db/IDBMysql.cpp" line="54"/>
+        <source>Password...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="63"/>
-        <source>File</source>
-        <translation>Archivo</translation>
+        <location filename="../gis/db/IDBMysql.cpp" line="54"/>
+        <source>Password for database '%1':</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IDemPathSetup</name>
     <message>
-        <location filename="../IMainWindow.ui" line="80"/>
-        <source>View</source>
-        <translation>Ver</translation>
+        <location filename="../dem/IDemPathSetup.ui" line="14"/>
+        <source>Setup DEM file paths</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="102"/>
-        <source>Window</source>
-        <translation>Ventana</translation>
+        <location filename="../dem/IDemPathSetup.ui" line="31"/>
+        <location filename="../dem/IDemPathSetup.ui" line="51"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="107"/>
-        <source>?</source>
-        <translation>?</translation>
+        <location filename="../dem/IDemPathSetup.ui" line="112"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IDemPropSetup</name>
     <message>
-        <location filename="../IMainWindow.ui" line="114"/>
-        <source>Project</source>
-        <translation>Proyecto</translation>
+        <location filename="../dem/IDemPropSetup.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="124"/>
-        <source>Tool</source>
-        <translation>Herramientas</translation>
+        <location filename="../dem/IDemPropSetup.ui" line="35"/>
+        <source><html><head/><body><p>Change opacity of map</p></body></html></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="149"/>
-        <source>Maps</source>
-        <translation>Mapas</translation>
+        <location filename="../dem/IDemPropSetup.ui" line="50"/>
+        <source><html><head/><body><p>Click to use current scale as minimum scale to display the map.</p></body></html></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="192"/>
-        <source>Dig. Elev. Model (DEM)</source>
-        <translation>Modelo Digital del Terreno (DEM)</translation>
+        <location filename="../dem/IDemPropSetup.ui" line="53"/>
+        <location filename="../dem/IDemPropSetup.ui" line="90"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="231"/>
-        <source>Data</source>
-        <translation>Datos</translation>
+        <location filename="../dem/IDemPropSetup.ui" line="74"/>
+        <source><html><head/><body><p>Control the range of scale the map is displayed. Use the two buttons left and right to define the actual scale as either minimum or maximum scale.</p></body></html></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Add Map Workspace</source>
-        <translation type="obsolete">Añadir Espacio de Trabajo de Mapa</translation>
+        <location filename="../dem/IDemPropSetup.ui" line="87"/>
+        <source><html><head/><body><p>Click to use current scale as maximum scale to display the map.</p></body></html></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="249"/>
-        <source>Route</source>
+        <location filename="../dem/IDemPropSetup.ui" line="118"/>
+        <source>Hillshading</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="283"/>
-        <location filename="../IMainWindow.ui" line="286"/>
-        <source>Add Map View</source>
-        <translation>Añadir Vista de Mapa</translation>
+        <location filename="../dem/IDemPropSetup.ui" line="144"/>
+        <source>Slope </source>
+        <translation type="unfinished"></translation>
     </message>
-    <message>
-        <location filename="../IMainWindow.ui" line="289"/>
-        <source>Ctrl+T</source>
-        <translation>Ctrl+T</translation>
+    <message utf8="true">
+        <location filename="../dem/IDemPropSetup.ui" line="226"/>
+        <location filename="../dem/IDemPropSetup.ui" line="326"/>
+        <location filename="../dem/IDemPropSetup.ui" line="410"/>
+        <location filename="../dem/IDemPropSetup.ui" line="494"/>
+        <location filename="../dem/IDemPropSetup.ui" line="578"/>
+        <source>°</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="301"/>
-        <source>Show Scale</source>
-        <translation>Mostrar Escala</translation>
-    </message>
-    <message>
-        <location filename="../IMainWindow.ui" line="310"/>
-        <source>Setup Map Font</source>
-        <translation>Configurar Fuente del Mapa</translation>
-    </message>
-    <message>
-        <location filename="../IMainWindow.ui" line="322"/>
-        <source>Show Grid</source>
-        <translation>Mostrar Malla</translation>
-    </message>
-    <message>
-        <location filename="../IMainWindow.ui" line="325"/>
-        <source>Ctrl+G</source>
-        <translation>Ctrl+G</translation>
+        <location filename="../dem/IDemPropSetup.ui" line="229"/>
+        <location filename="../dem/IDemPropSetup.ui" line="329"/>
+        <location filename="../dem/IDemPropSetup.ui" line="413"/>
+        <location filename="../dem/IDemPropSetup.ui" line="497"/>
+        <location filename="../dem/IDemPropSetup.ui" line="581"/>
+        <source>> </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="334"/>
-        <source>Setup Grid</source>
-        <translation>Configurar Malla</translation>
+        <location filename="../dem/IDemPropSetup.ui" line="251"/>
+        <location filename="../dem/IDemPropSetup.ui" line="270"/>
+        <location filename="../dem/IDemPropSetup.ui" line="354"/>
+        <location filename="../dem/IDemPropSetup.ui" line="438"/>
+        <location filename="../dem/IDemPropSetup.ui" line="522"/>
+        <source>TextLabel</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IDemsList</name>
     <message>
-        <location filename="../IMainWindow.ui" line="337"/>
-        <source>Ctrl+Alt+G</source>
-        <translation>Ctrl+Alt+G</translation>
+        <location filename="../dem/IDemList.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="349"/>
-        <source>Flip Mouse Wheel</source>
-        <translation>Invertir la Rueda del Ratón</translation>
+        <location filename="../dem/IDemList.ui" line="118"/>
+        <source>To add files with elevation data use File->Setup DEM Paths. </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="358"/>
-        <location filename="../IMainWindow.ui" line="361"/>
-        <source>Setup Map Paths</source>
-        <translation>Configurar Rutas de Mapas</translation>
+        <location filename="../dem/IDemList.ui" line="131"/>
+        <source>Use the context menu (right mouse button click on entry) to activate a file. Use drag-n-drop to move the activated file in the process order. </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="373"/>
-        <source>POI Text</source>
-        <translation>Texto del POI</translation>
+        <location filename="../dem/IDemList.ui" line="156"/>
+        <source>Activate</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="385"/>
-        <source>Night / Day</source>
-        <translation>Noche / Día</translation>
+        <location filename="../dem/IDemList.ui" line="165"/>
+        <source>Move Up</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="397"/>
-        <source>Map Tool Tip</source>
-        <translation>Mostrar Tooltips en los Mapas</translation>
+        <location filename="../dem/IDemList.ui" line="168"/>
+        <source>Hide DEM behind previous one</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="400"/>
-        <source>Ctrl+I</source>
-        <translation type="unfinished">Ctrl+I</translation>
+        <location filename="../dem/IDemList.ui" line="177"/>
+        <source>Move down</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="409"/>
-        <source>Setup DEM Paths</source>
-        <translation>Configurar Rutas a los DEM</translation>
+        <location filename="../dem/IDemList.ui" line="180"/>
+        <source>Show DEM on top of next one</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="418"/>
-        <source>About</source>
-        <translation>Acerca de</translation>
+        <location filename="../dem/IDemList.ui" line="189"/>
+        <source>Reload DEM</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IDetailsGeoCache</name>
     <message>
-        <location filename="../IMainWindow.ui" line="427"/>
-        <source>Help</source>
-        <translation>Ayuda</translation>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="20"/>
+        <source>Dialog</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="436"/>
-        <location filename="../IMainWindow.ui" line="439"/>
-        <source>Setup Map View</source>
-        <translation>Configurar Vista de Mapa</translation>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="40"/>
+        <source>Position:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="553"/>
-        <source>VRT Builder</source>
-        <translation>Asistente VRT</translation>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="47"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="73"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="86"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="99"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="112"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="125"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="151"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="164"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="177"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="190"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="203"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="252"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="556"/>
-        <source>GUI front end to gdalbuildvrt</source>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="60"/>
+        <source>Difficulty</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="565"/>
-        <source>Store Map View</source>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="138"/>
+        <source>Terrain</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="568"/>
-        <source>Write current active map and DEM list including the properties to a file</source>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="214"/>
+        <source>Update spoilers</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="577"/>
-        <source>Load Map View</source>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="217"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="275"/>
+        <source>...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="580"/>
-        <source>Restore view with active map and DEM list including the properties from a file</source>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="267"/>
+        <source>about:blank</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="592"/>
-        <source>Ext. Profile</source>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="293"/>
+        <source>Hint:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="595"/>
-        <source>Ctrl+E</source>
-        <translation type="unfinished">Ctrl+E</translation>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="324"/>
+        <source>TextLabel</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IDetailsOvlArea</name>
     <message>
-        <location filename="../IMainWindow.ui" line="604"/>
-        <source>Close</source>
-        <translation type="unfinished">Cerrar</translation>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="14"/>
+        <source>Dialog</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="607"/>
-        <source>Ctrl+Q</source>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="132"/>
+        <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="616"/>
-        <source>Clone Map View</source>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="148"/>
+        <source>Toggle read only mode. You have to open the lock to edit the item.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="619"/>
-        <source>Ctrl+Shift+T</source>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="151"/>
+        <source>...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="628"/>
-        <source>Create Routino Database</source>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="181"/>
+        <source>Color</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="637"/>
-        <source>Save(Print) Map Screenshot</source>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="202"/>
+        <source>Border width</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="640"/>
-        <source>Print a selected area of the map</source>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="216"/>
+        <source>Style</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="643"/>
-        <source>Ctrl+P</source>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="235"/>
+        <source>Opacity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="652"/>
-        <source>Setup Coord. Format</source>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="248"/>
+        <source>Info</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="655"/>
-        <source>Change the format coordinates are displayed</source>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="277"/>
+        <source>Points</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Setup Map Workspace</source>
-        <translation type="obsolete">Configurar Espacio de Trabajo de Mapas</translation>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="304"/>
+        <source>Position</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="448"/>
-        <source>Load GIS Data</source>
-        <translation>Cargar Datos GIS</translation>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="313"/>
+        <source>Hist.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IDetailsPrj</name>
     <message>
-        <location filename="../IMainWindow.ui" line="451"/>
-        <source>Load projects from file</source>
-        <translation>Cargar proyectos desde archivo</translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="454"/>
-        <source>Ctrl+L</source>
-        <translation>Ctrl+L</translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="43"/>
+        <source>Keywords:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="463"/>
-        <source>Save All GIS Data</source>
-        <translation>Guardar Todos los Datos GIS</translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="50"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="57"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="466"/>
-        <source>Save all projects in the workspace</source>
-        <translation>Guardar todos los proyectos del espacio de trabajo</translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="71"/>
+        <source>Keep order of project</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="469"/>
-        <source>Ctrl+S</source>
-        <translation>Ctrl+S</translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="76"/>
+        <source>Sort by time</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="478"/>
-        <source>Setup Time Zone</source>
-        <translation>Configurar Zona Horaria</translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="81"/>
+        <source>Sort along track (multiple)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="487"/>
-        <source>Add empty project</source>
-        <translation>Añadir proyecto vacío</translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="86"/>
+        <source>Sort along track (single)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="499"/>
-        <source>Search Google</source>
-        <translation>Buscar en Google</translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="94"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="118"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="138"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="508"/>
-        <source>Close all projects</source>
-        <translation>Cerrar todos los proyectos</translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="115"/>
+        <source>Print diary</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="511"/>
-        <source>F8</source>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="135"/>
+        <source>Rebuild diary.</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IDetailsRte</name>
     <message>
-        <location filename="../IMainWindow.ui" line="520"/>
-        <source>Setup Units</source>
-        <translation>Configurar Unidades</translation>
+        <location filename="../gis/rte/IDetailsRte.ui" line="36"/>
+        <source>Info</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="529"/>
-        <source>Setup Workspace</source>
-        <translation>Configurar Espacio de trabajo</translation>
+        <location filename="../gis/rte/IDetailsRte.ui" line="154"/>
+        <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="532"/>
-        <source>Setup save on exit.</source>
+        <location filename="../gis/rte/IDetailsRte.ui" line="170"/>
+        <source>Toggle read only mode. You have to open the lock to edit the item.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="541"/>
-        <source>Import Database from QLandkarte</source>
-        <translation>Importar base de datos de Qlandkarte</translation>
+        <location filename="../gis/rte/IDetailsRte.ui" line="173"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="544"/>
-        <source>Import QLandkarte GT database</source>
+        <location filename="../gis/rte/IDetailsRte.ui" line="205"/>
+        <source>-</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Setup Database</source>
-        <translation type="obsolete">Configurar Base de Datos</translation>
+        <location filename="../gis/rte/IDetailsRte.ui" line="229"/>
+        <source>Hist.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IMapList</name>
+    <name>IDetailsTrk</name>
     <message>
-        <location filename="../map/IMapList.ui" line="14"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="14"/>
         <source>Form</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/IMapList.ui" line="103"/>
-        <source>To add maps use File->Setup Map Paths. </source>
-        <translation>Para añadir mapas use Archivo->Configurar Rutas de Mapas. </translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="56"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="77"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="98"/>
+        <source>-
+-</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/IMapList.ui" line="116"/>
-        <source>Use the context menu (right mouse button click on entry) to activate a map. Use drag-n-drop to move the activated map in the draw order. </source>
-        <translation>Use el menú contextual (botón derecho del ratón, y seleccione) para activar un mapa. Use arrastrar y soltar para mover el mapa activado en el orden de dibujado. </translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="255"/>
+        <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/IMapList.ui" line="129"/>
-        <source>Help! I want maps!
-I don't want to read the documentation!</source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="277"/>
+        <source>Toggle read only mode. You have to open the lock to edit the item.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/IMapList.ui" line="149"/>
-        <source>Activate</source>
-        <translation>Activar</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="280"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="445"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="474"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="549"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="578"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="682"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="708"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="737"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1047"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1076"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1108"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1144"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1173"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1205"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1241"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1270"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1302"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IMapPathSetup</name>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="14"/>
-        <source>Setup map paths</source>
-        <translation>Configurar rutas de mapas</translation>
-    </message>
-    <message>
-        <location filename="../map/IMapPathSetup.ui" line="20"/>
-        <source>Root path of tile cache for online maps:</source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="306"/>
+        <source>-</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="36"/>
-        <location filename="../map/IMapPathSetup.ui" line="73"/>
-        <location filename="../map/IMapPathSetup.ui" line="93"/>
-        <source>...</source>
-        <translation>...</translation>
-    </message>
-    <message>
-        <location filename="../map/IMapPathSetup.ui" line="185"/>
-        <source>Help! I want maps!
-I don't want to read the documentation!</source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="345"/>
+        <source>Info</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="29"/>
-        <location filename="../map/IMapPathSetup.ui" line="154"/>
-        <source>-</source>
-        <translation>-</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="377"/>
+        <source>Style</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IMapPropSetup</name>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="801"/>
+        <source>Source</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="35"/>
-        <source><html><head/><body><p>Change opacity of map</p></body></html></source>
-        <translation><html><head/><body><p>Cambiar la opacidad del mapa</p></body></html></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="667"/>
+        <source>Maximum</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="50"/>
-        <source><html><head/><body><p>Click to use current scale as minimum scale to display the map.</p></body></html></source>
-        <translation><html><head/><body><p>Pulse para usar la escala actual como la escala mínima a la que mostrar el mapa.</p></body></html></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="442"/>
+        <source>Use/edit user defined visibility of arrows for this track</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="53"/>
-        <location filename="../map/IMapPropSetup.ui" line="90"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="471"/>
+        <source>Use/edit system's visibility of arrows for all tracks</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="74"/>
-        <source><html><head/><body><p>Control the range of scale the map is displayed. Use the two buttons left and right to define the actual scale as either minimum or maximum scale.</p></body></html></source>
-        <translation><html><head/><body><p>Controle el rango de escalas para las cuales desea que se muestre el mapa. Use los dos botones a izquierda y derecha para definir la escala actual como bien la escala mínima o máxima para el mapa.</p></body></html></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="527"/>
+        <source>Minimum</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="87"/>
-        <source><html><head/><body><p>Click to use current scale as maximum scale to display the map.</p></body></html></source>
-        <translation><html><head/><body><p>Pulse para usar la escala actual como la escala máxima a la que mostrar el mapa.</p></body></html></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="839"/>
+        <source>Graphs</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="137"/>
-        <source>Areas</source>
-        <translation>Áreas</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1026"/>
+        <source>Profile</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="144"/>
-        <source>Lines</source>
-        <translation>Líneas</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="534"/>
+        <source>Width</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="151"/>
-        <source>Points</source>
-        <translation>Puntos</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="546"/>
+        <source>Use/edit user defined scale factor for this track</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="233"/>
-        <source>-</source>
-        <translation>-</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="575"/>
+        <source>Use/edit system's default factor for all tracks</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="240"/>
-        <source>Cache Path</source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="625"/>
+        <source>with arrows</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="196"/>
-        <source>Cache Size (MB)</source>
-        <translation>Tamaño de Caché (MiB)</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="642"/>
+        <source>x </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="216"/>
-        <source>Expiration (Days)</source>
-        <translation>Caducidad (Días)</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="679"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1044"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1141"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1238"/>
+        <source>User defined limits for this track</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IMapVrtBuilder</name>
     <message>
-        <location filename="../tool/IMapVrtBuilder.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="705"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1073"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1170"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1267"/>
+        <source>Automatic limits</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IMapVrtBuilder.ui" line="22"/>
-        <location filename="../tool/IMapVrtBuilder.ui" line="56"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="734"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1105"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1202"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1299"/>
+        <source>User defined limits for all tracks</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IMapVrtBuilder.ui" line="39"/>
-        <source>Select source files:</source>
-        <translation>Seleccionar ficheros de origen:</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="788"/>
+        <source>Color</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IMapVrtBuilder.ui" line="79"/>
-        <source>Target Filename:</source>
-        <translation>Fichero de destino:</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="852"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="872"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="958"/>
+        <source>max.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IMapVrtBuilder.ui" line="86"/>
-        <source>-</source>
-        <translation>-</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="991"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="998"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1012"/>
+        <source>min.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IMapVrtBuilder.ui" line="95"/>
-        <source>Start</source>
-        <translation>Comenzar</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1331"/>
+        <source>Activity</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IMouseEditLine</name>
     <message>
-        <source>Add points?</source>
-        <translation type="obsolete">¿Añadir puntos?</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1372"/>
+        <source>To differentiate the track statistics select an activity from the list for the complete track. Or select a part of the track to assign an activity.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Add points to temporary line?</source>
-        <translation type="obsolete">¿Añadir puntos a la línea temporal?</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1399"/>
+        <source>Points</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Warning!</source>
-        <translation type="obsolete">¡Cuidado!</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1447"/>
+        <source>Time</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>This will replace all data of the orignal by a simple line of coordinates. All other data will be lost permanently.</source>
-        <translation type="obsolete">Esto sustituirá todos los datos del original con una simple línea de coordenadas. Todos los demás datos se perderán definitivamente.</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1452"/>
+        <source>Ele.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="255"/>
-        <source><b>New Line</b><br/>Move the mouse and use the left mouse button to drop points. When done use the right mouse button to stop.<br/></source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1457"/>
+        <source>Delta</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="302"/>
-        <source><b>Delete Point</b><br/>Move the mouse close to a point and press the left button to delete it.<br/></source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1462"/>
+        <source>Dist.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="311"/>
-        <source><b>Select Range of Points</b><br/>Left click on first point to start selection. Left click second point to complete selection and choose from options. Use the right mouse button to cancel.<br/></source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1467"/>
+        <source>Speed</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="320"/>
-        <source><b>Move Point</b><br/>Move the mouse close to a point and press the left button to make it stick to the cursor. Move the mouse to move the point. Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1472"/>
+        <source>Slope</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="329"/>
-        <source><b>Add Point</b><br/>Move the mouse close to a line segment and press the left button to add a point. The point will stick to the cursor and you can move it.  Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1477"/>
+        <source>Ascend</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="338"/>
-        <source><b>No Routing</b><br/>All points will be connected with a straight line.<br/></source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1482"/>
+        <source>Descend</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="343"/>
-        <source><b>Auto Routing</b><br/>The current router setup is used to derive a route between points. <b>Note:</b> The selected router must be able to route on-the-fly. Offline routers usually can do, online routers can't.<br/></source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1487"/>
+        <source>Position</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="348"/>
-        <source><b>Vector Routing</b><br/>Connect points with a line from a loaded vector map if possible.<br/></source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1496"/>
+        <source>Filter</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="517"/>
-        <source><b>%1 Metrics</b></source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1533"/>
+        <source>Hist.</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IDetailsWpt</name>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="520"/>
-        <source>Distance:</source>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="14"/>
+        <source>Dialog</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="522"/>
-        <source>Ascend:</source>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="43"/>
+        <source>Info</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="524"/>
-        <source>Descend:</source>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="77"/>
+        <source>Position:</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IPhotoAlbum</name>
     <message>
-        <location filename="../widgets/IPhotoAlbum.ui" line="20"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="84"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="110"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="136"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="328"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/IPhotoAlbum.ui" line="50"/>
-        <location filename="../widgets/IPhotoAlbum.ui" line="77"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="97"/>
+        <source>Ele.</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IPlot</name>
     <message>
-        <location filename="../plot/IPlot.cpp" line="91"/>
-        <source>Reset Zoom</source>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="123"/>
+        <source>Proximity:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="92"/>
-        <source>Stop Range</source>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="268"/>
+        <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="93"/>
-        <source>Save...</source>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="284"/>
+        <source>Toggle read only mode. You have to open the lock to edit the item.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="613"/>
-        <source>No or bad data.</source>
-        <translation>Datos incorrectos o inexistentes.</translation>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="287"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="342"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="362"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="394"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="1200"/>
-        <source>Select output file</source>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="321"/>
+        <source>Date/Time:</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IPositionDialog</name>
     <message>
-        <location filename="../helpers/IPositionDialog.ui" line="14"/>
-        <source>Position ...</source>
-        <translation>Posición ...</translation>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="339"/>
+        <source>Add images.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/IPositionDialog.ui" line="20"/>
-        <source>Enter new position</source>
-        <translation>Introduzca la nueva posición</translation>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="359"/>
+        <source>Delete selected image.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/IPositionDialog.ui" line="30"/>
-        <source>Bad position format. Must be: 
-"[N|S] ddd mm.sss [W|E] ddd mm.sss"
-or
-"[N|S] ddd.ddd [W|E] ddd.ddd"</source>
-        <translation>Formato de posición incorrecto. Debe ser: 
-"[N|S] ggg mm.sss [W|E] ggg mm.sss"
-o
-"[N|S] ggg.ggg [W|E] ggg.ggg"</translation>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="413"/>
+        <source>Hist.</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IPrintDialog</name>
+    <name>IDevice</name>
     <message>
-        <location filename="../print/IPrintDialog.ui" line="20"/>
-        <source>Print map...</source>
+        <location filename="../device/IDevice.cpp" line="204"/>
+        <source>There is another project with the same name. If you press 'ok' it will be removed and replaced.</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IElevationDialog</name>
     <message>
-        <location filename="../print/IPrintDialog.ui" line="50"/>
-        <source>Save</source>
-        <translation type="unfinished">Guardar</translation>
+        <location filename="../helpers/IElevationDialog.ui" line="14"/>
+        <source>Edit elevation...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../print/IPrintDialog.ui" line="69"/>
-        <location filename="../print/IPrintDialog.ui" line="82"/>
-        <location filename="../print/IPrintDialog.ui" line="131"/>
-        <source>TextLabel</source>
+        <location filename="../helpers/IElevationDialog.ui" line="22"/>
+        <source>Elevation</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../print/IPrintDialog.ui" line="98"/>
-        <source>Print</source>
+        <location filename="../helpers/IElevationDialog.ui" line="32"/>
+        <source>-</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IProgressDialog</name>
     <message>
-        <location filename="../helpers/IProgressDialog.ui" line="14"/>
-        <source>Please wait...</source>
+        <location filename="../helpers/IElevationDialog.ui" line="39"/>
+        <source>Get elevation from active digital elevation model.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/IProgressDialog.ui" line="20"/>
-        <location filename="../helpers/IProgressDialog.ui" line="27"/>
-        <source>TextLabel</source>
+        <location filename="../helpers/IElevationDialog.ui" line="42"/>
+        <source>...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IProjWizard</name>
+    <name>IFilterDelete</name>
     <message>
-        <location filename="../grid/IProjWizard.ui" line="14"/>
-        <source>Proj4 Wizzard</source>
-        <translation>Asistente de Proj4</translation>
+        <location filename="../gis/trk/filter/IFilterDelete.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../grid/IProjWizard.ui" line="29"/>
-        <source>Mercator</source>
-        <translation>Mercator</translation>
+        <location filename="../gis/trk/filter/IFilterDelete.ui" line="51"/>
+        <source><b>Remove Track Points</b></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../grid/IProjWizard.ui" line="38"/>
-        <source>UTM</source>
-        <translation>UTM</translation>
+        <location filename="../gis/trk/filter/IFilterDelete.ui" line="63"/>
+        <source>Remove all hidden track points permanently.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../grid/IProjWizard.ui" line="45"/>
-        <source>zone</source>
-        <translation>zona</translation>
+        <location filename="../gis/trk/filter/IFilterDelete.ui" line="70"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IFilterDeleteExtension</name>
     <message>
-        <location filename="../grid/IProjWizard.ui" line="82"/>
-        <source>user defined</source>
-        <translation>definido por el usuario</translation>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../grid/IProjWizard.ui" line="94"/>
-        <source>Datum</source>
-        <translation>Datum</translation>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="51"/>
+        <source><b>Remove Extension from all Track Points</b></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../grid/IProjWizard.ui" line="104"/>
-        <source>World Mercator (OSM)</source>
-        <translation>World Mercator (OSM)</translation>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="63"/>
+        <source>Remove </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../grid/IProjWizard.ui" line="124"/>
-        <source>Result:</source>
-        <translation>Resultado:</translation>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="83"/>
+        <source>from all Track Points</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../grid/IProjWizard.ui" line="138"/>
-        <source>UPS North (North Pole)</source>
-        <translation>UPS Norte (Polo Norte)</translation>
-    </message>
-    <message>
-        <location filename="../grid/IProjWizard.ui" line="145"/>
-        <source>UPS South (South Pole)</source>
-        <translation>UPS Sur (Polo Sur)</translation>
-    </message>
-    <message>
-        <location filename="../grid/IProjWizard.ui" line="152"/>
-        <source>Projection</source>
-        <translation>Proyección</translation>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="103"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IProjWpt</name>
+    <name>IFilterDouglasPeuker</name>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="14"/>
-        <source>Waypoint Projection</source>
-        <translation>Proyección del Waypoint</translation>
+        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="22"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="45"/>
+        <source><b>Hide Points (Douglas Peuker)</b></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="45"/>
-        <source>-</source>
-        <translation>-</translation>
+        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="57"/>
+        <source>Hide track points if the distance to a line between neighboring points is less than</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="54"/>
-        <source>Clone waypoint and move by:</source>
-        <translation>Clonar el waypoint y moverlo:</translation>
+        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="70"/>
+        <source>m</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="66"/>
-        <source>m</source>
-        <translation>m</translation>
+        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="93"/>
+        <source>Apply filter now.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="76"/>
-        <source>°</source>
-        <translation>º</translation>
+        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="96"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IRouterMapQuest</name>
+    <name>IFilterInvalid</name>
     <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="14"/>
+        <location filename="../gis/trk/filter/IFilterInvalid.ui" line="14"/>
         <source>Form</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="22"/>
-        <source>Highways</source>
+        <location filename="../gis/trk/filter/IFilterInvalid.ui" line="41"/>
+        <source>Hide Invalid Points</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="29"/>
-        <source>Seasonal</source>
+        <location filename="../gis/trk/filter/IFilterInvalid.ui" line="56"/>
+        <source>Hide points with invalid coordinates at the beginning of the track.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="36"/>
-        <source>Language</source>
+        <location filename="../gis/trk/filter/IFilterInvalid.ui" line="63"/>
+        <source>...</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IFilterMedian</name>
     <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="43"/>
-        <source>Country Border</source>
+        <location filename="../gis/trk/filter/IFilterMedian.ui" line="14"/>
+        <source>Form</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="53"/>
-        <source>Profile</source>
-        <translation type="unfinished">Perfil</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="60"/>
-        <source>Avoid:</source>
+        <location filename="../gis/trk/filter/IFilterMedian.ui" line="51"/>
+        <source><b>Smooth Profile (Median Method)</b></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="67"/>
-        <source>Ferry</source>
-        <translation type="unfinished">Ferry</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="74"/>
-        <source>Toll Road</source>
+        <location filename="../gis/trk/filter/IFilterMedian.ui" line="63"/>
+        <source>Smooth deviation of the track points elevation with a Median filter of size </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="84"/>
-        <source>Unpaved</source>
+        <location filename="../gis/trk/filter/IFilterMedian.ui" line="76"/>
+        <source>points</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="106"/>
-        <source><p>Directions Courtesy of <a href="http://www.mapquest.com/" target="_blank">MapQuest</a> </p></source>
+        <location filename="../gis/trk/filter/IFilterMedian.ui" line="105"/>
+        <source>...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IRouterRoutino</name>
+    <name>IFilterNewDate</name>
     <message>
-        <location filename="../gis/rte/router/IRouterRoutino.ui" line="14"/>
+        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="14"/>
         <source>Form</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterRoutino.ui" line="31"/>
-        <source>Profile</source>
-        <translation type="unfinished">Perfil</translation>
+        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="35"/>
+        <source><b>Change Time</b></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterRoutino.ui" line="38"/>
-        <source>Mode</source>
+        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="44"/>
+        <source>Change start of track to </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterRoutino.ui" line="45"/>
-        <source>Database</source>
+        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="51"/>
+        <source>dd.MM.yy HH:mm:ss</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterRoutino.ui" line="52"/>
-        <source>Add paths with Routino database.</source>
+        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="61"/>
+        <source>-</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterRoutino.ui" line="55"/>
+        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="81"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IFilterObscureDate</name>
     <message>
-        <location filename="../gis/rte/router/IRouterRoutino.ui" line="66"/>
-        <source>Language</source>
+        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="14"/>
+        <source>Form</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterRoutino.ui" line="131"/>
-        <source>To use offline routing you need to define paths to local routing data. Use the setup tool button to register a path.</source>
+        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="45"/>
+        <source><b>Obscure Timestamps</b></source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IRouterRoutinoPathSetup</name>
     <message>
-        <location filename="../gis/rte/router/IRouterRoutinoPathSetup.ui" line="14"/>
-        <source>Setup Routino database...</source>
+        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="54"/>
+        <source>Increase timestamp by</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterRoutinoPathSetup.ui" line="27"/>
-        <location filename="../gis/rte/router/IRouterRoutinoPathSetup.ui" line="47"/>
-        <source>...</source>
-        <translation type="unfinished">...</translation>
+        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="61"/>
+        <source> sec.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterRoutinoPathSetup.ui" line="99"/>
-        <source>-</source>
-        <translation type="unfinished">-</translation>
+        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="68"/>
+        <source>with each track point. 0 sec. will remove timestamps.</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IRouterSetup</name>
     <message>
-        <location filename="../gis/rte/router/IRouterSetup.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="88"/>
+        <source>...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IRoutinoDatabaseBuilder</name>
+    <name>IFilterOffsetElevation</name>
     <message>
-        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="14"/>
+        <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="14"/>
         <source>Form</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="22"/>
-        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="63"/>
-        <source>...</source>
-        <translation type="unfinished">...</translation>
-    </message>
-    <message>
-        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="39"/>
-        <source>Select source files:</source>
-        <translation type="unfinished">Seleccionar ficheros de origen:</translation>
-    </message>
-    <message>
-        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="54"/>
-        <source>Start</source>
-        <translation type="unfinished">Comenzar</translation>
+        <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="51"/>
+        <source><b>Offset Elevation</b></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="86"/>
-        <source>Target Path:</source>
+        <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="69"/>
+        <source>Add offset of</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="93"/>
-        <source>-</source>
-        <translation type="unfinished">-</translation>
+        <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="95"/>
+        <source>to track points elevation.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="100"/>
-        <source>File Prefix</source>
+        <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="115"/>
+        <source>...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IScrOptEditLine</name>
+    <name>IFilterReplaceElevation</name>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="32"/>
+        <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="14"/>
         <source>Form</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="53"/>
-        <source>Save to orignal</source>
-        <translation>Guardar al original</translation>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="60"/>
-        <source>Save as new</source>
-        <translation>Guardar como nuevo</translation>
+        <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="51"/>
+        <source><b>Replace Elevation Data</b></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="67"/>
-        <source>Abort</source>
-        <translation>Abortar</translation>
+        <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="63"/>
+        <source>Replace elevation of track points with the values from loaded DEM files.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="102"/>
-        <source>Move points. (Ctrl+M)</source>
+        <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="70"/>
+        <source>...</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IFilterReset</name>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="112"/>
-        <source>Ctrl+M</source>
+        <location filename="../gis/trk/filter/IFilterReset.ui" line="14"/>
+        <source>Form</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="128"/>
-        <source>Add new points. (Ctrl++)</source>
+        <location filename="../gis/trk/filter/IFilterReset.ui" line="35"/>
+        <source><b>Reset Hidden Track Points</b></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="138"/>
-        <source>Ctrl++</source>
+        <location filename="../gis/trk/filter/IFilterReset.ui" line="47"/>
+        <source>Make all trackpoints visible again.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="151"/>
-        <source>Select a range of points. (Ctrl+R)</source>
+        <location filename="../gis/trk/filter/IFilterReset.ui" line="54"/>
+        <source>...</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IFilterSpeed</name>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="161"/>
-        <source>Ctrl+R</source>
-        <translation type="unfinished">Ctrl+R</translation>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="174"/>
-        <source>Delete a point. (Ctrl+D)</source>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="35"/>
+        <source><b>Change Speed</b></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="184"/>
-        <source>Ctrl+D</source>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="44"/>
+        <source>Set speed to </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="228"/>
-        <source>No auto-routing or line snapping (Ctrl+O)</source>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="51"/>
+        <source> km/h</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="238"/>
-        <source>Ctrl+O</source>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="102"/>
+        <source>...</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IFilterSplitSegment</name>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="251"/>
-        <source>Use auto-routing to between points. (Ctrl+A)</source>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="14"/>
+        <source>Form</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="261"/>
-        <source>Ctrl+A</source>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="51"/>
+        <source><html><head/><body><p><span style=" font-weight:600;">Split Segments into Tracks</span></p></body></html></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="274"/>
-        <source>Snap line along lines of a vector map. (Ctrl+V)</source>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="63"/>
+        <source>Creates a new track for every segment within this track.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="105"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="131"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="154"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="177"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="313"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="330"/>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="70"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IFitDecoderState</name>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="231"/>
-        <source>0</source>
+        <location filename="../gis/fit/decoder/IFitDecoderState.cpp" line="32"/>
+        <source>FIT decoding error: Decoder not in correct state %1 after last data byte in file.</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IGisItem</name>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="254"/>
-        <source>A</source>
+        <location filename="../gis/IGisItem.cpp" line="42"/>
+        <source>[no name]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="277"/>
-        <source>V</source>
+        <location filename="../gis/IGisItem.cpp" line="301"/>
+        <source>The item is not part of the project in the database.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="284"/>
-        <source>Ctrl+V</source>
-        <translation type="unfinished">Ctrl+V</translation>
+        <location filename="../gis/IGisItem.cpp" line="307"/>
+        <source>The item is not in the database.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="310"/>
-        <source>Undo last change</source>
+        <location filename="../gis/IGisItem.cpp" line="313"/>
+        <source>The item might need to be saved</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="327"/>
-        <source>Redo last change</source>
+        <location filename="../gis/IGisItem.cpp" line="397"/>
+        <source>Initial version.</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IScrOptOvlArea</name>
     <message>
-        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="14"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="../gis/IGisItem.cpp" line="505"/>
+        <source><h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press 'Ok'.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="40"/>
-        <source>View details and edit.</source>
+        <location filename="../gis/IGisItem.cpp" line="506"/>
+        <source>Read Only Mode...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="43"/>
-        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="57"/>
-        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="71"/>
-        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="92"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../gis/IGisItem.cpp" line="670"/>
+        <location filename="../gis/IGisItem.cpp" line="729"/>
+        <source><h4>Description:</h4></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="54"/>
-        <source>Copy area into another project.</source>
-        <translation>Copiar área en otro proyecto.</translation>
+        <location filename="../gis/IGisItem.cpp" line="673"/>
+        <location filename="../gis/IGisItem.cpp" line="732"/>
+        <source><p>--- no description ---</p></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="68"/>
-        <source>Delete area from project.</source>
+        <location filename="../gis/IGisItem.cpp" line="684"/>
+        <source><h4>Comment:</h4></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="89"/>
-        <source>Edit shape of the area.</source>
+        <location filename="../gis/IGisItem.cpp" line="687"/>
+        <source><p>--- no comment ---</p></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="121"/>
-        <source>TextLabel</source>
+        <location filename="../gis/IGisItem.cpp" line="698"/>
+        <location filename="../gis/IGisItem.cpp" line="743"/>
+        <source><h4>Links:</h4></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="701"/>
+        <location filename="../gis/IGisItem.cpp" line="746"/>
+        <source><p>--- no links ---</p></source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IScrOptPoint</name>
+    <name>IGisProject</name>
     <message>
-        <source>Delete point.</source>
-        <translation type="obsolete">Borrar punto.</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="109"/>
+        <source>Save project?</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Select a range of points.</source>
-        <translation type="obsolete">Selecciones un rango de puntos.</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="109"/>
+        <source><h3>%1</h3>The project was changed. Save before closing it?</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Move selected point.</source>
-        <translation type="obsolete">Mover el punto seleccionado.</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="261"/>
+        <source>%1: Correlate tracks and waypoints.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Add points before the selected point.</source>
-        <translation type="obsolete">Añadir puntos antes del seleccionado.</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="271"/>
+        <source><h3>%1</h3>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project in the future?</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Add points after the selected point.</source>
-        <translation type="obsolete">Añadir puntos después del seleccionado.</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="272"/>
+        <source>Canceled correlation...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>...</source>
-        <translation type="obsolete">...</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="312"/>
+        <source>Save "%1" to...</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IScrOptRange</name>
     <message>
-        <source>Delete selected range of points.</source>
-        <translation type="obsolete">Borrar el rango de puntos seleccionado.</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="423"/>
+        <source><br/>
+Filename: %1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>...</source>
-        <translation type="obsolete">...</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="428"/>
+        <source>Waypoints: %1</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IScrOptRangeLine</name>
     <message>
-        <location filename="../mouse/line/IScrOptRangeLine.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../gis/prj/IGisProject.cpp" line="432"/>
+        <source>Tracks: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptRangeLine.ui" line="20"/>
-        <source>Delete all points between the first and last one.</source>
+        <location filename="../gis/prj/IGisProject.cpp" line="436"/>
+        <source>Routes: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptRangeLine.ui" line="23"/>
-        <location filename="../mouse/line/IScrOptRangeLine.ui" line="37"/>
-        <source>...</source>
-        <translation type="unfinished">...</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="440"/>
+        <source>Areas: %1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptRangeLine.ui" line="34"/>
-        <source><html><head/><body><p>Calculate a route between the first and last selected point.</p></body></html></source>
+        <location filename="../gis/prj/IGisProject.cpp" line="520"/>
+        <source>Are you sure you want to delete '%1' from project '%2'?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="521"/>
+        <source>Delete...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IScrOptRangeTrk</name>
+    <name>IGisWidget</name>
     <message>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="14"/>
+        <location filename="../gis/IGisWidget.ui" line="14"/>
         <source>Form</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="40"/>
-        <source>Hide all points.</source>
-        <translation>Ocultar todos los puntos.</translation>
+        <location filename="../gis/IGisWidget.ui" line="69"/>
+        <location filename="../gis/IGisWidget.ui" line="99"/>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="43"/>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="57"/>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="71"/>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="85"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../gis/IGisWidget.ui" line="104"/>
+        <source>Age</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="54"/>
-        <source>Show all points.</source>
-        <translation>Mostrar todos los puntos.</translation>
+        <location filename="../gis/IGisWidget.ui" line="138"/>
+        <source>To add a database do a right click on the database list above.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IGridSetup</name>
     <message>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="68"/>
-        <source>Select an activity for the selected range.</source>
+        <location filename="../grid/IGridSetup.ui" line="14"/>
+        <source>Setup Grid...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="82"/>
-        <source>Copy track points as new track.</source>
-        <translation>Copiar los puntos del track como un nuevo track.</translation>
+        <location filename="../grid/IGridSetup.ui" line="22"/>
+        <source>Projection</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="117"/>
-        <source>TextLabel</source>
+        <location filename="../grid/IGridSetup.ui" line="37"/>
+        <source>restore default</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IScrOptRte</name>
     <message>
-        <location filename="../gis/rte/IScrOptRte.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../grid/IGridSetup.ui" line="40"/>
+        <location filename="../grid/IGridSetup.ui" line="66"/>
+        <location filename="../grid/IGridSetup.ui" line="92"/>
+        <location filename="../grid/IGridSetup.ui" line="146"/>
+        <source>...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><html><head/><body><p>View details &amp; Edit</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Ver detalles &amp; Editar</p></body></html></translation>
+        <location filename="../grid/IGridSetup.ui" line="63"/>
+        <source>Get projection from current map.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/IScrOptRte.ui" line="43"/>
-        <location filename="../gis/rte/IScrOptRte.ui" line="57"/>
-        <location filename="../gis/rte/IScrOptRte.ui" line="71"/>
-        <location filename="../gis/rte/IScrOptRte.ui" line="89"/>
-        <location filename="../gis/rte/IScrOptRte.ui" line="106"/>
-        <location filename="../gis/rte/IScrOptRte.ui" line="120"/>
-        <location filename="../gis/rte/IScrOptRte.ui" line="134"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../grid/IGridSetup.ui" line="89"/>
+        <source>projection wizzard</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/IScrOptRte.ui" line="54"/>
-        <source>Copy route into another project.</source>
-        <translation>Copiar ruta en otro proyecto.</translation>
+        <location filename="../grid/IGridSetup.ui" line="130"/>
+        <source>Grid color</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><html><head/><body><p>Delete</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Borrar</p></body></html></translation>
+        <location filename="../grid/IGridSetup.ui" line="143"/>
+        <source>setup grid color</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IImportDatabase</name>
     <message>
-        <location filename="../gis/rte/IScrOptRte.ui" line="40"/>
-        <source>View details and edit.</source>
+        <location filename="../tool/IImportDatabase.ui" line="14"/>
+        <source>Form</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/IScrOptRte.ui" line="68"/>
-        <source>Delete route from project.</source>
+        <location filename="../tool/IImportDatabase.ui" line="22"/>
+        <location filename="../tool/IImportDatabase.ui" line="63"/>
+        <source>...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/IScrOptRte.ui" line="103"/>
-        <source>Calculate route.</source>
+        <location filename="../tool/IImportDatabase.ui" line="45"/>
+        <source>Source Database:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/IScrOptRte.ui" line="117"/>
-        <source>Reset route calculation.</source>
+        <location filename="../tool/IImportDatabase.ui" line="52"/>
+        <location filename="../tool/IImportDatabase.ui" line="93"/>
+        <source>-</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/IScrOptRte.ui" line="131"/>
-        <source>Move route points.</source>
+        <location filename="../tool/IImportDatabase.ui" line="86"/>
+        <source>Target Database:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/IScrOptRte.ui" line="160"/>
-        <source>TextLabel</source>
+        <location filename="../tool/IImportDatabase.ui" line="102"/>
+        <source>Start</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IScrOptTrk</name>
+    <name>IInputDialog</name>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../helpers/IInputDialog.ui" line="14"/>
+        <source>Edit...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>View details &amp; Edit properties of track.</source>
-        <translation type="obsolete">Ver detalles / Editar las propiedades del track.</translation>
-    </message>
-    <message>
-        <source>Delete</source>
-        <translation type="obsolete">Eliminar</translation>
+        <location filename="../helpers/IInputDialog.ui" line="20"/>
+        <source>TextLabel</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>ILinksDialog</name>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="89"/>
-        <source>Show on-screen profile and detailed information about points.</source>
-        <translation>Mostrar el perfil en pantalla e información detallada de los puntos.</translation>
+        <location filename="../helpers/ILinksDialog.ui" line="14"/>
+        <source>Links...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Cut track at selected point into two tracks.</source>
-        <translation type="vanished">Partir el track en dos en el punto seleccionado.</translation>
+        <location filename="../helpers/ILinksDialog.ui" line="23"/>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="120"/>
-        <source>Edit position of track points.</source>
-        <translation>Editar la posición de los puntos del track.</translation>
+        <location filename="../helpers/ILinksDialog.ui" line="28"/>
+        <source>Text</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="40"/>
-        <source>View details and edit properties of track.</source>
+        <location filename="../helpers/ILinksDialog.ui" line="33"/>
+        <source>Uri</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="43"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="57"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="71"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="92"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="109"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="123"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="137"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="151"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="170"/>
+        <location filename="../helpers/ILinksDialog.ui" line="43"/>
+        <location filename="../helpers/ILinksDialog.ui" line="63"/>
         <source>...</source>
-        <translation>...</translation>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IMainWindow</name>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="54"/>
-        <source>Copy track into another project.</source>
-        <translation>Copiar track en otro proyecto.</translation>
+        <location filename="../IMainWindow.ui" line="17"/>
+        <source>QMapShack</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="68"/>
-        <source>Delete track from project.</source>
+        <location filename="../IMainWindow.ui" line="63"/>
+        <source>File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="106"/>
-        <source>Select a range of points.</source>
-        <translation>Seleccionar un rango de puntos.</translation>
+        <location filename="../IMainWindow.ui" line="80"/>
+        <source>View</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="134"/>
-        <source>Reverse track.</source>
-        <translation>Invertir track.</translation>
+        <location filename="../IMainWindow.ui" line="102"/>
+        <source>Window</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="148"/>
-        <source>Combine tracks.</source>
-        <translation>Combinar tracks.</translation>
+        <location filename="../IMainWindow.ui" line="107"/>
+        <source>?</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="162"/>
-        <source>Cut track at selected point. You can use this to:
-
-* remove bad points at the start or end of the track
-* use the track parts to plan a new tour
-* cut a long track into stages
-</source>
+        <location filename="../IMainWindow.ui" line="114"/>
+        <source>Project</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="196"/>
-        <source>TextLabel</source>
+        <location filename="../IMainWindow.ui" line="124"/>
+        <source>Tool</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IScrOptWpt</name>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="20"/>
-        <source>Form</source>
+        <location filename="../IMainWindow.ui" line="149"/>
+        <source>Maps</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><html><head/><body><p>View details &amp; Edit</p></body></html></source>
-        <translation type="obsolete">Ver detalles / Editar</translation>
+        <location filename="../IMainWindow.ui" line="192"/>
+        <source>Dig. Elev. Model (DEM)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="49"/>
-        <source>View details and edit.</source>
+        <location filename="../IMainWindow.ui" line="231"/>
+        <source>Data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="52"/>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="66"/>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="80"/>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="101"/>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="118"/>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="132"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../IMainWindow.ui" line="249"/>
+        <source>Route</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="63"/>
-        <source>Copy waypoint into another project.</source>
-        <translation><html><head/><body><p>Copiar waypoint en otro proyecto.</p></body></html></translation>
+        <location filename="../IMainWindow.ui" line="283"/>
+        <location filename="../IMainWindow.ui" line="286"/>
+        <source>Add Map View</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="77"/>
-        <source>Delete waypoint from project.</source>
+        <location filename="../IMainWindow.ui" line="289"/>
+        <source>Ctrl+T</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="98"/>
-        <source>Show content as static bubble.</source>
+        <location filename="../IMainWindow.ui" line="301"/>
+        <source>Show Scale</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="115"/>
-        <source>Move waypoint to a new location.</source>
+        <location filename="../IMainWindow.ui" line="310"/>
+        <source>Setup Map Font</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="129"/>
-        <source>Clone waypoint and move clone a given distance and angle.</source>
+        <location filename="../IMainWindow.ui" line="322"/>
+        <source>Show Grid</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><html><head/><body><p>Delete</p></body></html></source>
-        <translation type="obsolete">Eliminar</translation>
+        <location filename="../IMainWindow.ui" line="325"/>
+        <source>Ctrl+G</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><html><head/><body><p>Move waypoint to a new location.</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Mover el waypoint a una nueva ubicación.</p></body></html></translation>
+        <location filename="../IMainWindow.ui" line="334"/>
+        <source>Setup Grid</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source><html><head/><body><p>Clone waypoint and move clone a given distance and angle.</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Clonar el waypoibt y moverlo una cierta distancia y ángulo.</p></body></html></translation>
+        <location filename="../IMainWindow.ui" line="337"/>
+        <source>Ctrl+Alt+G</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="176"/>
-        <source>TextLabel</source>
+        <location filename="../IMainWindow.ui" line="349"/>
+        <source>Flip Mouse Wheel</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>ISelDevices</name>
     <message>
-        <location filename="../gis/ISelDevices.ui" line="14"/>
-        <source>Select devices...</source>
+        <location filename="../IMainWindow.ui" line="358"/>
+        <location filename="../IMainWindow.ui" line="361"/>
+        <source>Setup Map Paths</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>ISelectActivity</name>
     <message>
-        <location filename="../gis/trk/ISelectActivity.ui" line="14"/>
-        <source>Activities...</source>
+        <location filename="../IMainWindow.ui" line="373"/>
+        <source>POI Text</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/ISelectActivity.ui" line="20"/>
-        <source>Select one:</source>
+        <location filename="../IMainWindow.ui" line="385"/>
+        <source>Night / Day</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>ISelectCopyAction</name>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="14"/>
-        <source>Copy item...</source>
-        <translation>Copiar elemento...</translation>
+        <location filename="../IMainWindow.ui" line="397"/>
+        <source>Map Tool Tip</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="23"/>
-        <source>Replace existing item</source>
-        <translation>Sustituir el elemento existente</translation>
+        <location filename="../IMainWindow.ui" line="400"/>
+        <source>Ctrl+I</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="30"/>
-        <location filename="../helpers/ISelectCopyAction.ui" line="40"/>
-        <location filename="../helpers/ISelectCopyAction.ui" line="67"/>
-        <location filename="../helpers/ISelectCopyAction.ui" line="77"/>
-        <source>TextLabel</source>
+        <location filename="../IMainWindow.ui" line="409"/>
+        <source>Setup DEM Paths</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="60"/>
-        <source>Do not copy item</source>
-        <translation>NO copiar el elemento</translation>
+        <location filename="../IMainWindow.ui" line="418"/>
+        <source>About</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="97"/>
-        <source>Create a clone</source>
-        <translation>Crear un duplicado</translation>
+        <location filename="../IMainWindow.ui" line="427"/>
+        <source>Help</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="104"/>
-        <source>Replace with:</source>
-        <translation>Sustituir por:</translation>
+        <location filename="../IMainWindow.ui" line="430"/>
+        <source>F1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="111"/>
-        <source>Keep item:</source>
-        <translation>Mantener:</translation>
+        <location filename="../IMainWindow.ui" line="439"/>
+        <location filename="../IMainWindow.ui" line="442"/>
+        <source>Setup Map View</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="118"/>
-        <source>The clone's name will be appended with '_Clone'</source>
-        <translation>Se añadirá el sufijo '_Clone' al nombre del duplicado</translation>
+        <location filename="../IMainWindow.ui" line="451"/>
+        <source>Load GIS Data</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="135"/>
-        <source>And for all other items, too.</source>
-        <translation>Hacer igual para todos los elementos.</translation>
+        <location filename="../IMainWindow.ui" line="454"/>
+        <source>Load projects from file</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>ISelectDBFolder</name>
     <message>
-        <location filename="../gis/db/ISelectDBFolder.ui" line="14"/>
-        <source>Select Parent Folder...</source>
+        <location filename="../IMainWindow.ui" line="457"/>
+        <source>Ctrl+L</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectDBFolder.ui" line="26"/>
-        <source>Name</source>
-        <translation type="unfinished">Nombre</translation>
+        <location filename="../IMainWindow.ui" line="466"/>
+        <source>Save All GIS Data</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>ISelectProjectDialog</name>
     <message>
-        <location filename="../helpers/ISelectProjectDialog.ui" line="14"/>
-        <source>Select a project...</source>
-        <translation>Seleccionar un proyecto...</translation>
+        <location filename="../IMainWindow.ui" line="469"/>
+        <source>Save all projects in the workspace</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectProjectDialog.ui" line="20"/>
-        <source>Select project from list or enter new project name.</source>
-        <translation>Seleccione un proyecto de la lista, o introduzca un nuevo nombre de proyecto.</translation>
+        <location filename="../IMainWindow.ui" line="472"/>
+        <source>Ctrl+S</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectProjectDialog.ui" line="33"/>
-        <source>New project's name</source>
+        <location filename="../IMainWindow.ui" line="481"/>
+        <source>Setup Time Zone</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectProjectDialog.ui" line="43"/>
-        <source>New project is created as:</source>
-        <translation>El nuevo proyecto se creó como:</translation>
+        <location filename="../IMainWindow.ui" line="490"/>
+        <source>Add empty project</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectProjectDialog.ui" line="93"/>
-        <source>*.qms</source>
-        <translation>*.qms</translation>
+        <location filename="../IMainWindow.ui" line="502"/>
+        <source>Search Google</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectProjectDialog.ui" line="103"/>
-        <source>*.gpx</source>
-        <translation>*.gpx</translation>
+        <location filename="../IMainWindow.ui" line="511"/>
+        <source>Close all projects</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectProjectDialog.ui" line="110"/>
-        <source>Database</source>
+        <location filename="../IMainWindow.ui" line="514"/>
+        <source>F8</source>
         <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>ISelectSaveAction</name>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="14"/>
-        <source>Copy item...</source>
-        <translation type="unfinished">Copiar elemento...</translation>
+        <location filename="../IMainWindow.ui" line="523"/>
+        <source>Setup Units</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="23"/>
-        <source>Replace existing item</source>
-        <translation type="unfinished">Sustituir el elemento existente</translation>
+        <location filename="../IMainWindow.ui" line="532"/>
+        <source>Setup Workspace</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="30"/>
-        <source>Replace with:</source>
-        <translation type="unfinished">Sustituir por:</translation>
+        <location filename="../IMainWindow.ui" line="535"/>
+        <source>Setup save on exit.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="37"/>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="47"/>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="81"/>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="91"/>
-        <source>TextLabel</source>
+        <location filename="../IMainWindow.ui" line="544"/>
+        <source>Import Database from QLandkarte</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="67"/>
-        <source>Do not replace item</source>
+        <location filename="../IMainWindow.ui" line="547"/>
+        <source>Import QLandkarte GT database</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="74"/>
-        <source>Use item:</source>
+        <location filename="../IMainWindow.ui" line="556"/>
+        <source>VRT Builder</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="111"/>
-        <source>And for all other items, too.</source>
-        <translation type="unfinished">Hacer igual para todos los elementos.</translation>
+        <location filename="../IMainWindow.ui" line="559"/>
+        <source>GUI front end to gdalbuildvrt</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>ISetupDB</name>
     <message>
-        <source>Setup database...</source>
-        <translation type="obsolete">Configurar la base de datos...</translation>
+        <location filename="../IMainWindow.ui" line="568"/>
+        <source>Store Map View</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>save workspace on exit, and every</source>
-        <translation type="obsolete">guardar el espacio de trabajo al salir, y cada</translation>
+        <location filename="../IMainWindow.ui" line="571"/>
+        <source>Write current active map and DEM list including the properties to a file</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>minutes</source>
-        <translation type="obsolete">minutos</translation>
+        <location filename="../IMainWindow.ui" line="580"/>
+        <source>Load Map View</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Database path</source>
-        <translation type="obsolete">Ruta de la base de datos</translation>
+        <location filename="../IMainWindow.ui" line="583"/>
+        <source>Restore view with active map and DEM list including the properties from a file</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>...</source>
-        <translation type="obsolete">...</translation>
+        <location filename="../IMainWindow.ui" line="595"/>
+        <source>Ext. Profile</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>-</source>
-        <translation type="obsolete">-</translation>
+        <location filename="../IMainWindow.ui" line="598"/>
+        <source>Ctrl+E</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>ISetupDatabase</name>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="14"/>
-        <source>Add database...</source>
-        <translation>Añadir Base de Datos...</translation>
+        <location filename="../IMainWindow.ui" line="607"/>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="25"/>
-        <source>File</source>
-        <translation>Archivo</translation>
+        <location filename="../IMainWindow.ui" line="610"/>
+        <source>Ctrl+Q</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="32"/>
-        <source>-</source>
-        <translation>-</translation>
+        <location filename="../IMainWindow.ui" line="619"/>
+        <source>Clone Map View</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="39"/>
-        <source>Name</source>
-        <translation>Nombre</translation>
+        <location filename="../IMainWindow.ui" line="622"/>
+        <source>Ctrl+Shift+T</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="46"/>
-        <source>Add new database.</source>
-        <translation>Añadir nueva base de datos.</translation>
+        <location filename="../IMainWindow.ui" line="631"/>
+        <source>Create Routino Database</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="49"/>
-        <location filename="../gis/db/ISetupDatabase.ui" line="63"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../IMainWindow.ui" line="640"/>
+        <source>Save(Print) Map Screenshot</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="60"/>
-        <source>Open existing database.</source>
-        <translation>Abrir base de datos existente.</translation>
+        <location filename="../IMainWindow.ui" line="643"/>
+        <source>Print a selected area of the map</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>ISetupFolder</name>
     <message>
-        <source>Folder...</source>
-        <translation type="obsolete">Carpeta...</translation>
+        <location filename="../IMainWindow.ui" line="646"/>
+        <source>Ctrl+P</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Name</source>
-        <translation type="obsolete">Nombre</translation>
+        <location filename="../IMainWindow.ui" line="655"/>
+        <source>Setup Coord. Format</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupFolder.ui" line="14"/>
-        <source>Database Folder...</source>
+        <location filename="../IMainWindow.ui" line="658"/>
+        <source>Change the format coordinates are displayed</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IMapList</name>
     <message>
-        <location filename="../gis/db/ISetupFolder.ui" line="20"/>
-        <source>Folder name</source>
+        <location filename="../map/IMapList.ui" line="14"/>
+        <source>Form</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupFolder.ui" line="30"/>
-        <source>Group</source>
-        <translation>Grupo</translation>
+        <location filename="../map/IMapList.ui" line="103"/>
+        <source>To add maps use File->Setup Map Paths. </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupFolder.ui" line="41"/>
-        <source>Project</source>
-        <translation>Proyecto</translation>
+        <location filename="../map/IMapList.ui" line="116"/>
+        <source>Use the context menu (right mouse button click on entry) to activate a map. Use drag-n-drop to move the activated map in the draw order. </source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupFolder.ui" line="55"/>
-        <source>Other</source>
-        <translation>Otros</translation>
+        <location filename="../map/IMapList.ui" line="129"/>
+        <source>Help! I want maps!
+I don't want to read the documentation!</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>ISetupNewWpt</name>
     <message>
-        <location filename="../gis/wpt/ISetupNewWpt.ui" line="14"/>
-        <source>New Waypoint...</source>
+        <location filename="../map/IMapList.ui" line="149"/>
+        <source>Activate</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/ISetupNewWpt.ui" line="22"/>
-        <source>Symbol</source>
+        <location filename="../map/IMapList.ui" line="158"/>
+        <source>Move Up</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/ISetupNewWpt.ui" line="29"/>
-        <source>...</source>
-        <translation type="unfinished">...</translation>
+        <location filename="../map/IMapList.ui" line="161"/>
+        <source>Hide map behind previous map</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/ISetupNewWpt.ui" line="39"/>
-        <source>Position</source>
-        <translation type="unfinished">Posición</translation>
+        <location filename="../map/IMapList.ui" line="170"/>
+        <source>Move down</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/ISetupNewWpt.ui" line="49"/>
-        <source>Name</source>
-        <translation type="unfinished">Nombre</translation>
+        <location filename="../map/IMapList.ui" line="173"/>
+        <source>Show map on top of next map</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/ISetupNewWpt.ui" line="59"/>
-        <source>Bad position format. Must be: 
-"[N|S] ddd mm.sss [W|E] ddd mm.sss"
-or
-"[N|S] ddd.ddd [W|E] ddd.ddd"</source>
-        <translation type="unfinished">Formato de posición incorrecto. Debe ser: 
-"[N|S] ggg mm.sss [W|E] ggg mm.sss"
-o
-"[N|S] ggg.ggg [W|E] ggg.ggg"</translation>
+        <location filename="../map/IMapList.ui" line="182"/>
+        <source>Reload Maps</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>ISetupWorkspace</name>
+    <name>IMapPathSetup</name>
     <message>
-        <source>Setup database...</source>
-        <translation type="obsolete">Configurar la base de datos...</translation>
+        <location filename="../map/IMapPathSetup.ui" line="14"/>
+        <source>Setup map paths</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupWorkspace.ui" line="14"/>
-        <source>Setup workspace...</source>
-        <translation>Configurar espacio de trabajo...</translation>
+        <location filename="../map/IMapPathSetup.ui" line="20"/>
+        <source>Root path of tile cache for online maps:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupWorkspace.ui" line="35"/>
-        <source>save workspace on exit, and every</source>
-        <translation>guardar el espacio de trabajo al salir, y cada</translation>
+        <location filename="../map/IMapPathSetup.ui" line="29"/>
+        <location filename="../map/IMapPathSetup.ui" line="154"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupWorkspace.ui" line="45"/>
-        <source>minutes</source>
-        <translation>minutos</translation>
+        <location filename="../map/IMapPathSetup.ui" line="36"/>
+        <location filename="../map/IMapPathSetup.ui" line="73"/>
+        <location filename="../map/IMapPathSetup.ui" line="93"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapPathSetup.ui" line="185"/>
+        <source>Help! I want maps!
+I don't want to read the documentation!</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>ITextEditWidget</name>
+    <name>IMapPropSetup</name>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="14"/>
-        <source>Edit text...</source>
-        <translation>Editar texto...</translation>
+        <location filename="../map/IMapPropSetup.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="25"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="38"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="51"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="64"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="77"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="97"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="110"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="123"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="136"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="169"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="182"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="195"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="208"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../map/IMapPropSetup.ui" line="35"/>
+        <source><html><head/><body><p>Change opacity of map</p></body></html></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="256"/>
-        <source>Undo</source>
-        <translation>Deshacer</translation>
+        <location filename="../map/IMapPropSetup.ui" line="50"/>
+        <source><html><head/><body><p>Click to use current scale as minimum scale to display the map.</p></body></html></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="259"/>
-        <source>Ctrl+Z</source>
-        <translation>Ctrl+Z</translation>
+        <location filename="../map/IMapPropSetup.ui" line="53"/>
+        <location filename="../map/IMapPropSetup.ui" line="90"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="268"/>
-        <source>Redo</source>
-        <translation>Rehacer</translation>
+        <location filename="../map/IMapPropSetup.ui" line="74"/>
+        <source><html><head/><body><p>Control the range of scale the map is displayed. Use the two buttons left and right to define the actual scale as either minimum or maximum scale.</p></body></html></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="271"/>
-        <source>Ctrl+Shift+Z</source>
-        <translation>Ctrl+Shift+Z</translation>
+        <location filename="../map/IMapPropSetup.ui" line="87"/>
+        <source><html><head/><body><p>Click to use current scale as maximum scale to display the map.</p></body></html></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="280"/>
-        <source>Cut</source>
-        <translation>Cortar</translation>
+        <location filename="../map/IMapPropSetup.ui" line="137"/>
+        <source>Areas</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="283"/>
-        <source>Ctrl+X</source>
-        <translation>Ctrl+X</translation>
+        <location filename="../map/IMapPropSetup.ui" line="144"/>
+        <source>Lines</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="292"/>
-        <source>Copy</source>
-        <translation>Copiar</translation>
+        <location filename="../map/IMapPropSetup.ui" line="151"/>
+        <source>Points</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="295"/>
-        <source>Ctrl+C</source>
-        <translation>Ctrl+C</translation>
+        <location filename="../map/IMapPropSetup.ui" line="196"/>
+        <source>Cache Size (MB)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="304"/>
-        <source>Paste</source>
-        <translation>Pegar</translation>
+        <location filename="../map/IMapPropSetup.ui" line="216"/>
+        <source>Expiration (Days)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="307"/>
-        <source>Ctrl+V</source>
-        <translation>Ctrl+V</translation>
+        <location filename="../map/IMapPropSetup.ui" line="233"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="319"/>
-        <source>Align Left</source>
-        <translation>Alinear a la Izquierda</translation>
+        <location filename="../map/IMapPropSetup.ui" line="240"/>
+        <source>Cache Path</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IMapVrtBuilder</name>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="322"/>
-        <source>Ctrl+L</source>
-        <translation>Ctrl+L</translation>
+        <location filename="../tool/IMapVrtBuilder.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="334"/>
-        <source>Align Right</source>
-        <translation>Alinear a la Derecha</translation>
+        <location filename="../tool/IMapVrtBuilder.ui" line="22"/>
+        <location filename="../tool/IMapVrtBuilder.ui" line="56"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="337"/>
-        <source>Ctrl+R</source>
-        <translation>Ctrl+R</translation>
+        <location filename="../tool/IMapVrtBuilder.ui" line="39"/>
+        <source>Select source files:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="349"/>
-        <source>Align Center</source>
-        <translation>Alinear al Centro</translation>
+        <location filename="../tool/IMapVrtBuilder.ui" line="79"/>
+        <source>Target Filename:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="352"/>
-        <source>Ctrl+E</source>
-        <translation>Ctrl+E</translation>
+        <location filename="../tool/IMapVrtBuilder.ui" line="86"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="364"/>
-        <source>Align Block</source>
-        <translation>Alinear Bloque</translation>
+        <location filename="../tool/IMapVrtBuilder.ui" line="95"/>
+        <source>Start</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IMouseEditLine</name>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="367"/>
-        <source>Ctrl+J</source>
-        <translation>Ctrl+J</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="269"/>
+        <source><b>New Line</b><br/>Move the mouse and use the left mouse button to drop points. When done use the right mouse button to stop.<br/></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="379"/>
-        <source>Underline</source>
-        <translation>Subrayar</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="316"/>
+        <source><b>Delete Point</b><br/>Move the mouse close to a point and press the left button to delete it.<br/></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="382"/>
-        <source>Ctrl+U</source>
-        <translation>Ctrl+U</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="325"/>
+        <source><b>Select Range of Points</b><br/>Left click on first point to start selection. Left click second point to complete selection and choose from options. Use the right mouse button to cancel.<br/></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="394"/>
-        <source>Bold</source>
-        <translation>Negrita</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="334"/>
+        <source><b>Move Point</b><br/>Move the mouse close to a point and press the left button to make it stick to the cursor. Move the mouse to move the point. Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="397"/>
-        <source>Ctrl+B</source>
-        <translation>Ctrl+B</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="343"/>
+        <source><b>Add Point</b><br/>Move the mouse close to a line segment and press the left button to add a point. The point will stick to the cursor and you can move it.  Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="409"/>
-        <source>Italic</source>
-        <translation>Cursiva</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="352"/>
+        <source><b>No Routing</b><br/>All points will be connected with a straight line.<br/></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="412"/>
-        <source>Ctrl+I</source>
-        <translation>Ctrl+I</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="357"/>
+        <source><b>Auto Routing</b><br/>The current router setup is used to derive a route between points. <b>Note:</b> The selected router must be able to route on-the-fly. Offline routers usually can do, online routers can't.<br/></source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>ITimeZoneSetup</name>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="14"/>
-        <source>Setup Time Zone ...</source>
-        <translation>Configurar la Zona Horaria...</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="362"/>
+        <source><b>Vector Routing</b><br/>Connect points with a line from a loaded vector map if possible.<br/></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="22"/>
-        <source>UTC</source>
-        <translation>UTC</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="542"/>
+        <source><b>%1 Metrics</b></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="32"/>
-        <source>Local</source>
-        <translation>Local</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="545"/>
+        <source>Distance:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="42"/>
-        <source>Automatic</source>
-        <translation>Automático</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="547"/>
+        <source>Ascend:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="75"/>
-        <source>Print date/time in </source>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="549"/>
+        <source>Descend:</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IPhotoAlbum</name>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="82"/>
-        <source>long format, or</source>
+        <location filename="../widgets/IPhotoAlbum.ui" line="20"/>
+        <source>Form</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="92"/>
-        <source>short format</source>
+        <location filename="../widgets/IPhotoAlbum.ui" line="50"/>
+        <location filename="../widgets/IPhotoAlbum.ui" line="77"/>
+        <source>...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IToolShell</name>
+    <name>IPlot</name>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="44"/>
-        <source>Execution of external program `%1` failed: </source>
+        <location filename="../plot/IPlot.cpp" line="93"/>
+        <source>Reset Zoom</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="48"/>
-        <source>Process cannot be started.
-</source>
+        <location filename="../plot/IPlot.cpp" line="94"/>
+        <source>Stop Range</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="49"/>
-        <source>Make sure the required packages are installed, `%1` exists and is executable.
-</source>
+        <location filename="../plot/IPlot.cpp" line="95"/>
+        <source>Save...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="53"/>
-        <source>External process crashed.
-</source>
+        <location filename="../plot/IPlot.cpp" line="638"/>
+        <source>No or bad data.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="57"/>
-        <source>An unknown error occurred.
-</source>
+        <location filename="../plot/IPlot.cpp" line="1230"/>
+        <source>Select output file</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IPositionDialog</name>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="148"/>
-        <source>!!! failed !!!
-</source>
-        <translation type="unfinished">!!! fallo !!!</translation>
+        <location filename="../helpers/IPositionDialog.ui" line="14"/>
+        <source>Position ...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../helpers/IPositionDialog.ui" line="20"/>
+        <source>Enter new position</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../helpers/IPositionDialog.ui" line="30"/>
+        <source>Bad position format. Must be: 
+"[N|S] ddd mm.sss [W|E] ddd mm.sss"
+or
+"[N|S] ddd.ddd [W|E] ddd.ddd"</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>IUnitsSetup</name>
+    <name>IPrintDialog</name>
     <message>
-        <location filename="../units/IUnitsSetup.ui" line="14"/>
-        <source>Setup units...</source>
-        <translation>Configurar unidades...</translation>
+        <location filename="../print/IPrintDialog.ui" line="20"/>
+        <source>Print map...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../units/IUnitsSetup.ui" line="38"/>
-        <source>Metric</source>
-        <translation>Métrico</translation>
+        <location filename="../print/IPrintDialog.ui" line="37"/>
+        <source>When saving online maps make sure that the map has been loaded into the cache for the extent to be saved.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../print/IPrintDialog.ui" line="60"/>
+        <source>Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../print/IPrintDialog.ui" line="79"/>
+        <source>When printing online maps make sure that the map has been loaded into the cache for the extent to be printed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../print/IPrintDialog.ui" line="89"/>
+        <location filename="../print/IPrintDialog.ui" line="102"/>
+        <location filename="../print/IPrintDialog.ui" line="151"/>
+        <source>TextLabel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../print/IPrintDialog.ui" line="118"/>
+        <source>Print</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>IProgressDialog</name>
+    <message>
+        <location filename="../helpers/IProgressDialog.ui" line="14"/>
+        <source>Please wait...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../helpers/IProgressDialog.ui" line="20"/>
+        <location filename="../helpers/IProgressDialog.ui" line="27"/>
+        <source>TextLabel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>IProjWizard</name>
+    <message>
+        <location filename="../grid/IProjWizard.ui" line="14"/>
+        <source>Proj4 Wizzard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../grid/IProjWizard.ui" line="29"/>
+        <source>Mercator</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../grid/IProjWizard.ui" line="38"/>
+        <source>UTM</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../grid/IProjWizard.ui" line="45"/>
+        <source>zone</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../grid/IProjWizard.ui" line="82"/>
+        <source>user defined</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../grid/IProjWizard.ui" line="94"/>
+        <source>Datum</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../grid/IProjWizard.ui" line="104"/>
+        <source>World Mercator (OSM)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../grid/IProjWizard.ui" line="124"/>
+        <source>Result:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../grid/IProjWizard.ui" line="138"/>
+        <source>UPS North (North Pole)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../grid/IProjWizard.ui" line="145"/>
+        <source>UPS South (South Pole)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../grid/IProjWizard.ui" line="152"/>
+        <source>Projection</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>IProjWpt</name>
+    <message>
+        <location filename="../gis/wpt/IProjWpt.ui" line="14"/>
+        <source>Waypoint Projection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IProjWpt.ui" line="22"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IProjWpt.ui" line="45"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IProjWpt.ui" line="54"/>
+        <source>Clone waypoint and move by:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IProjWpt.ui" line="66"/>
+        <source>m</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message utf8="true">
+        <location filename="../gis/wpt/IProjWpt.ui" line="76"/>
+        <source>°</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>IRouterMapQuest</name>
+    <message>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="22"/>
+        <source>Highways</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="29"/>
+        <source>Seasonal</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="36"/>
+        <source>Language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="43"/>
+        <source>Country Border</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="53"/>
+        <source>Profile</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="60"/>
+        <source>Avoid:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="67"/>
+        <source>Ferry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="74"/>
+        <source>Toll Road</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="84"/>
+        <source>Unpaved</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="106"/>
+        <source><p>Directions Courtesy of <a href="http://www.mapquest.com/" target="_blank">MapQuest</a> </p></source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>IRouterRoutino</name>
+    <message>
+        <location filename="../gis/rte/router/IRouterRoutino.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/router/IRouterRoutino.ui" line="31"/>
+        <source>Profile</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/router/IRouterRoutino.ui" line="38"/>
+        <source>Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/router/IRouterRoutino.ui" line="45"/>
+        <source>Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/router/IRouterRoutino.ui" line="52"/>
+        <source>Add paths with Routino database.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/router/IRouterRoutino.ui" line="55"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/router/IRouterRoutino.ui" line="66"/>
+        <source>Language</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/router/IRouterRoutino.ui" line="131"/>
+        <source>To use offline routing you need to define paths to local routing data. Use the setup tool button to register a path.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>IRouterRoutinoPathSetup</name>
+    <message>
+        <location filename="../gis/rte/router/IRouterRoutinoPathSetup.ui" line="14"/>
+        <source>Setup Routino database...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/router/IRouterRoutinoPathSetup.ui" line="27"/>
+        <location filename="../gis/rte/router/IRouterRoutinoPathSetup.ui" line="47"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/router/IRouterRoutinoPathSetup.ui" line="99"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>IRouterSetup</name>
+    <message>
+        <location filename="../gis/rte/router/IRouterSetup.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>IRoutinoDatabaseBuilder</name>
+    <message>
+        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="22"/>
+        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="63"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="39"/>
+        <source>Select source files:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="54"/>
+        <source>Start</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="86"/>
+        <source>Target Path:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="93"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="100"/>
+        <source>File Prefix</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>IScrOptEditLine</name>
+    <message>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="32"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="40"/>
+        <source>Save to original</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="47"/>
+        <source>Save as new</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../units/IUnitsSetup.ui" line="47"/>
-        <source><b>Note:</b> For some GUI elements changing the units will not take effect until you restart QMapShack.</source>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="54"/>
+        <source>Abort</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../units/IUnitsSetup.ui" line="31"/>
-        <source>Imperial</source>
-        <translation>Imperial</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="89"/>
+        <source>Move points. (Ctrl+M)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../units/IUnitsSetup.ui" line="24"/>
-        <source>Nautic</source>
-        <translation>Naútico</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="92"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="118"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="141"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="164"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="300"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="317"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>IWptIconDialog</name>
     <message>
-        <location filename="../helpers/IWptIconDialog.ui" line="14"/>
-        <source>Icons...</source>
-        <translation>Iconos...</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="99"/>
+        <source>Ctrl+M</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>QObject</name>
     <message>
-        <location filename="../units/IUnit.cpp" line="745"/>
-        <location filename="../units/IUnit.cpp" line="751"/>
-        <source>Error</source>
-        <translation>Error</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="115"/>
+        <source>Add new points. (Ctrl++)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="745"/>
-        <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
-        <translation>Formato de coordenadas incorrecto. Debe ser: "[N|S] ggg mm.sss [W|E] ggg mm.sss" o "[N|S] ggg.ggg [W|E] ggg.ggg"</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="125"/>
+        <source>Ctrl++</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="751"/>
-        <source>Position values out of bounds. </source>
-        <translation type="unfinished">Valores de posición fuera del límite.</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="138"/>
+        <source>Select a range of points. (Ctrl+R)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Bad position format. Must be: [N|S] ddd mm.sss [W|E] ddd mm.sss</source>
-        <translation type="obsolete">Formato de posición incorrecto. Debe ser: "[N|S] ggg mm.sss [W|E] ggg mm.sss"</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="148"/>
+        <source>Ctrl+R</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="111"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="120"/>
-        <source>Failed to read...</source>
-        <translation>Fallo al leer...</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="161"/>
+        <source>Delete a point. (Ctrl+D)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="111"/>
-        <source>Failed to read: %1
-line %2, column %3:
- %4</source>
-        <translation>Fallo al leer: %1
-línea %2, columna %3.
- %4</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="171"/>
+        <source>Ctrl+D</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="120"/>
-        <source>Not a GPX file: </source>
-        <translation>No es un archivo GPX: </translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="215"/>
+        <source>No auto-routing or line snapping (Ctrl+O)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="410"/>
-        <source>Saving GIS data failed...</source>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="218"/>
+        <source>0</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>
-Filename: %1</source>
-        <translation type="obsolete">
-Nombre del archivo: %1</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="225"/>
+        <source>Ctrl+O</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>
-Waypoints: %1</source>
-        <translation type="obsolete">
-Waypoints: %1</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="238"/>
+        <source>Use auto-routing to between points. (Ctrl+A)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>
-Tracks: %1</source>
-        <translation type="obsolete">
-Tracks: %1</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="241"/>
+        <source>A</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>
-Routes: %1</source>
-        <translation type="obsolete">
-Rutas: %1</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="248"/>
+        <source>Ctrl+A</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>
-Areas: %1</source>
-        <translation type="obsolete">
-Áreas: %1</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="261"/>
+        <source>Snap line along lines of a vector map. (Ctrl+V)</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="97"/>
-        <source>Save project?</source>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="264"/>
+        <source>V</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="237"/>
-        <source>%1: Correlate tracks and waypoints.</source>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="271"/>
+        <source>Ctrl+V</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="97"/>
-        <source><h3>%1</h3>The project was changed. Save before closing it?</source>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="297"/>
+        <source>Undo last change</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="247"/>
-        <source><h3>%1</h3>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project in the future?</source>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="314"/>
+        <source>Redo last change</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IScrOptOvlArea</name>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="248"/>
-        <source>Canceled correlation...</source>
+        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="14"/>
+        <source>Form</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="326"/>
-        <source><br/>
-Filename: %1</source>
+        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="40"/>
+        <source>View details and edit.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="331"/>
-        <source>Waypoints: %1</source>
+        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="43"/>
+        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="57"/>
+        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="71"/>
+        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="92"/>
+        <source>...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="335"/>
-        <source>Tracks: %1</source>
+        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="54"/>
+        <source>Copy area into another project.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="339"/>
-        <source>Routes: %1</source>
+        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="68"/>
+        <source>Delete area from project.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="343"/>
-        <source>Areas: %1</source>
+        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="89"/>
+        <source>Edit shape of the area.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="423"/>
-        <source>Are you sure you want to delete '%1' from project '%2'?</source>
-        <translation>¿Desea realmente eleiminar '%1' del proyecto '%2'?</translation>
+        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="121"/>
+        <source>TextLabel</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IScrOptRangeLine</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="436"/>
-        <source>Are you sure you want to delete '%1' from folder '%2'?</source>
-        <translation>¿Desea realmente eleiminar '%1' de la carpeta '%2'?</translation>
+        <location filename="../mouse/line/IScrOptRangeLine.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="437"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="424"/>
-        <source>Delete...</source>
-        <translation>Borrar...</translation>
+        <location filename="../mouse/line/IScrOptRangeLine.ui" line="20"/>
+        <source>Delete all points between the first and last one.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="98"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="144"/>
-        <source>Failed to open...</source>
-        <translation>Fallo al abrir...</translation>
+        <location filename="../mouse/line/IScrOptRangeLine.ui" line="23"/>
+        <location filename="../mouse/line/IScrOptRangeLine.ui" line="37"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="98"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="144"/>
-        <source>Failed to open %1</source>
-        <translation>Fallo al abrir %1</translation>
+        <location filename="../mouse/line/IScrOptRangeLine.ui" line="34"/>
+        <source><html><head/><body><p>Calculate a route between the first and last selected point.</p></body></html></source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IScrOptRangeTrk</name>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="158"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="222"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="95"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="159"/>
-        <source>Save GIS data to...</source>
-        <translation>Guardar los datos GIS en...</translation>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="262"/>
-        <source>Save ...</source>
-        <translation>Guardar...</translation>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="40"/>
+        <source>Hide all points.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Abort save</source>
-        <translation type="obsolete">Cancelar guardar</translation>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="43"/>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="57"/>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="71"/>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="85"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="286"/>
-        <source>File exists ...</source>
-        <translation>El archivo ya existe ...</translation>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="54"/>
+        <source>Show all points.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="287"/>
-        <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
-        <translation>El archivo ya existe y no lo ha creado QMapShack. Si pulsa 'sí' todos los datos de este archivo se perderán. Incluso si el archivo contiene datos GPX y QMapShack lo ha leído, QMapShack podría no ser capaz de leer y almacenar todos los elementos en el archivo, y aquellos que no haya leído se perderán. Se le recomienda usar otro archivo distinto. <b>¿Quiere realmente sobrescribir el archivo</b></translation>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="68"/>
+        <source>Select an activity for the selected range.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="395"/>
-        <source>Failed to create file '%1'</source>
-        <translation>Fallo al crear el archivo '%1'</translation>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="82"/>
+        <source>Copy track points as new track.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Saveing GIS data failed...</source>
-        <translation type="vanished">Fallo al guardar los datos GIS...</translation>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="117"/>
+        <source>TextLabel</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IScrOptRte</name>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="405"/>
-        <source>Failed to write file '%1'</source>
-        <translation>Fallo al escribir en el archivo '%1'</translation>
+        <location filename="../gis/rte/IScrOptRte.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="262"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="371"/>
-        <source>Length: %1 %2</source>
-        <translation>Longitud: %1 %2</translation>
+        <location filename="../gis/rte/IScrOptRte.ui" line="40"/>
+        <source>View details and edit.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="378"/>
-        <source>, %1%2 %3, %4%5 %6</source>
-        <translation>, %1%2 %3, %4%5 %6</translation>
+        <location filename="../gis/rte/IScrOptRte.ui" line="43"/>
+        <location filename="../gis/rte/IScrOptRte.ui" line="57"/>
+        <location filename="../gis/rte/IScrOptRte.ui" line="71"/>
+        <location filename="../gis/rte/IScrOptRte.ui" line="89"/>
+        <location filename="../gis/rte/IScrOptRte.ui" line="106"/>
+        <location filename="../gis/rte/IScrOptRte.ui" line="120"/>
+        <location filename="../gis/rte/IScrOptRte.ui" line="134"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="386"/>
-        <source>Time: %1</source>
-        <translation>Tiempo: %1</translation>
+        <location filename="../gis/rte/IScrOptRte.ui" line="54"/>
+        <source>Copy route into another project.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="389"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="399"/>
-        <source>, Speed: %1 %2</source>
-        <translation>, Velocidad: %1 %2</translation>
+        <location filename="../gis/rte/IScrOptRte.ui" line="68"/>
+        <source>Delete route from project.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="396"/>
-        <source>Moving: %1</source>
-        <translation>En movimiento: %1</translation>
+        <location filename="../gis/rte/IScrOptRte.ui" line="103"/>
+        <source>Calculate route.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="405"/>
-        <source>Start: %1</source>
-        <translation>Comienzo: %1</translation>
+        <location filename="../gis/rte/IScrOptRte.ui" line="117"/>
+        <source>Reset route calculation.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="410"/>
-        <source>End: %1</source>
-        <translation>Final: %1</translation>
+        <location filename="../gis/rte/IScrOptRte.ui" line="131"/>
+        <source>Move route points.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="414"/>
-        <source>Points: %1 (%2)</source>
-        <translation>Puntos: %1 (%2)</translation>
+        <location filename="../gis/rte/IScrOptRte.ui" line="160"/>
+        <source>TextLabel</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IScrOptTrk</name>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="523"/>
-        <source>Ele.: %1 %2</source>
-        <translation>Altitud: %1 %2</translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="526"/>
-        <source> slope: %1%3 (%2%)</source>
-        <translation> pendiente: %1%3 (%2%)</translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="40"/>
+        <source>View details and edit properties of track.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="531"/>
-        <source> speed: %1%2</source>
-        <translation> velocidad: %1%2</translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="43"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="57"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="71"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="92"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="109"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="123"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="137"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="151"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="170"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="559"/>
-        <source>... and %1 tags not displayed</source>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="54"/>
+        <source>Copy track into another project.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="571"/>
-        <source>Ascend: %1%2 (%3%)</source>
-        <translation>Ascenso: %1%2 (%3%)</translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="68"/>
+        <source>Delete track from project.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="575"/>
-        <source>Ascend: - (-)</source>
-        <translation>Ascenso: - (-)</translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="89"/>
+        <source>Show on-screen profile and detailed information about points.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="585"/>
-        <source> Descend: - (-) </source>
-        <translation> Descenso: - (-) </translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="106"/>
+        <source>Select a range of points.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="606"/>
-        <source> Moving: - (-) </source>
-        <translation> En movimiento: - (-) </translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="120"/>
+        <source>Edit position of track points.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="625"/>
-        <source>Ascend: %1%2</source>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="134"/>
+        <source>Reverse track.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="630"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="647"/>
-        <source>, %1%2</source>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="148"/>
+        <source>Combine tracks.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="635"/>
-        <source>Ascend: -</source>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="162"/>
+        <source>Cut track at selected point. You can use this to:
+
+* remove bad points at the start or end of the track
+* use the track parts to plan a new tour
+* cut a long track into stages
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="642"/>
-        <source> Descend: %1%2</source>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="196"/>
+        <source>TextLabel</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IScrOptWpt</name>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="652"/>
-        <source>Descend: -</source>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="20"/>
+        <source>Form</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="658"/>
-        <source>Dist.: %1%2</source>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="49"/>
+        <source>View details and edit.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="663"/>
-        <source> Time: %1%2</source>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="52"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="66"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="80"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="101"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="118"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="132"/>
+        <source>...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1307"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1331"/>
-        <source>Permanently removed points %1..%2</source>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="63"/>
+        <source>Copy waypoint into another project.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1513"/>
-        <source>Hide points.</source>
-        <translation>Ocultar puntos.</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1553"/>
-        <source>Show points.</source>
-        <translation>Mostrar puntos.</translation>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="77"/>
+        <source>Delete waypoint from project.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2088"/>
-        <source>Changed activity to '%1' for complete track.</source>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="98"/>
+        <source>Show content as static bubble.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2163"/>
-        <source>Changed activity to '%1' for range(%2..%3).</source>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="115"/>
+        <source>Move waypoint to a new location.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="581"/>
-        <source> Descend: %1%2 (%3%)</source>
-        <translation> Descenso: %1%2 (%3%)</translation>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="129"/>
+        <source>Clone waypoint and move clone a given distance and angle.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="249"/>
-        <source>Changed trackpoints, sacrificed all previous data.</source>
-        <translation>Se cambiaron los puntos del track, y descartados todos los datos previos.</translation>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="176"/>
+        <source>TextLabel</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>ISelDevices</name>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="592"/>
-        <source>Dist.: %1%2 (%3%)</source>
-        <translation>Distancia: %1%2 (%3%)</translation>
+        <location filename="../gis/ISelDevices.ui" line="14"/>
+        <source>Select devices...</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>ISelectActivity</name>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="596"/>
-        <source>Dist.: - (-)</source>
-        <translation>Dist.: - (-)</translation>
+        <location filename="../gis/trk/ISelectActivity.ui" line="14"/>
+        <source>Activities...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="602"/>
-        <source> Moving: %1%2 (%3%)</source>
-        <translation> En movimiento: %1%2 (%3%)</translation>
+        <location filename="../gis/trk/ISelectActivity.ui" line="20"/>
+        <source>Select one:</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>ISelectActivityColor</name>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="96"/>
-        <source>thin</source>
-        <translation>fino</translation>
+        <location filename="../gis/trk/ISelectActivityColor.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>ISelectCopyAction</name>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="97"/>
-        <source>normal</source>
-        <translation>normal</translation>
+        <location filename="../helpers/ISelectCopyAction.ui" line="14"/>
+        <source>Copy item...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="98"/>
-        <source>wide</source>
-        <translation>ancho</translation>
+        <location filename="../helpers/ISelectCopyAction.ui" line="29"/>
+        <source>Replace existing item</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="99"/>
-        <source>strong</source>
-        <translation>intenso</translation>
+        <location filename="../helpers/ISelectCopyAction.ui" line="36"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="46"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="79"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="89"/>
+        <source>TextLabel</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="138"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="63"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="124"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="92"/>
-        <source>_Clone</source>
+        <location filename="../helpers/ISelectCopyAction.ui" line="72"/>
+        <source>Do not copy item</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="431"/>
-        <source>Area: %1%2</source>
+        <location filename="../helpers/ISelectCopyAction.ui" line="115"/>
+        <source>Create a clone</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="493"/>
-        <source>Changed area shape.</source>
-        <translation>Se cambió la forma del área.</translation>
+        <location filename="../helpers/ISelectCopyAction.ui" line="122"/>
+        <source>Replace with:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="501"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="221"/>
-        <source>Changed name.</source>
-        <translation>Se cambió el nombre.</translation>
+        <location filename="../helpers/ISelectCopyAction.ui" line="129"/>
+        <source>Keep item:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="507"/>
-        <source>Changed border width.</source>
-        <translation>Se cambió la anchura del borde.</translation>
+        <location filename="../helpers/ISelectCopyAction.ui" line="136"/>
+        <source>The clone's name will be appended with '_Clone'</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="513"/>
-        <source>Changed fill pattern.</source>
-        <translation>Se cambió el patró de relleno.</translation>
+        <location filename="../helpers/ISelectCopyAction.ui" line="153"/>
+        <source>And for all other items, too.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>ISelectDBFolder</name>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="519"/>
-        <source>Changed opacity.</source>
-        <translation>Se cambió la opacidad.</translation>
+        <location filename="../gis/db/ISelectDBFolder.ui" line="14"/>
+        <source>Select Parent Folder...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="525"/>
-        <source>Changed comment.</source>
-        <translation>Se cambió el comentario.</translation>
+        <location filename="../gis/db/ISelectDBFolder.ui" line="26"/>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>ISelectProjectDialog</name>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="531"/>
-        <source>Changed description.</source>
-        <translation>Se cambió la descripción.</translation>
+        <location filename="../helpers/ISelectProjectDialog.ui" line="14"/>
+        <source>Select a project...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="537"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="239"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2059"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="366"/>
-        <source>Changed links</source>
-        <translation>Se cambió el enlace</translation>
+        <location filename="../helpers/ISelectProjectDialog.ui" line="20"/>
+        <source>Select project from list or enter new project name.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="549"/>
-        <source>Changed color</source>
-        <translation>Se cambió el color</translation>
+        <location filename="../helpers/ISelectProjectDialog.ui" line="33"/>
+        <source>New project's name</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="227"/>
-        <source>Elevation: %1 %2</source>
-        <translation>Altitud: %1 %2</translation>
+        <location filename="../helpers/ISelectProjectDialog.ui" line="43"/>
+        <source>New project is created as:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="238"/>
-        <source>Proximity: %1 %2</source>
-        <translation>Proximidad: %1 %2</translation>
+        <location filename="../helpers/ISelectProjectDialog.ui" line="93"/>
+        <source>*.qms</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2041"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="312"/>
-        <source>Changed name</source>
-        <translation>Se cambió el nombre</translation>
+        <location filename="../helpers/ISelectProjectDialog.ui" line="103"/>
+        <source>*.gpx</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1245"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1264"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1340"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1399"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1578"/>
-        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
-        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
-        <source>Edit name...</source>
-        <translation>Editar nombre...</translation>
+        <location filename="../helpers/ISelectProjectDialog.ui" line="110"/>
+        <source>Database</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>ISelectSaveAction</name>
     <message>
-        <source>Enter new waypoint name.</source>
-        <translation type="obsolete">Introduzca el nuevo nombre del waypoint.</translation>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="20"/>
+        <source>Copy item...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="322"/>
-        <source>Changed position</source>
-        <translation>Se cambió la posición</translation>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="35"/>
+        <source>Replace existing item</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="328"/>
-        <source>Changed elevation</source>
-        <translation>Se cambió la altitud</translation>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="42"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="68"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="130"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="140"/>
+        <source>TextLabel</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="334"/>
-        <source>Changed proximity</source>
-        <translation>Se cambió la proximidad</translation>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="61"/>
+        <source>Do not replace item</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="348"/>
-        <source>Changed icon</source>
-        <translation>Se cambió el icono</translation>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="87"/>
+        <source>Add a clone</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="372"/>
-        <source>Changed images</source>
-        <translation>Se cambió la imagen</translation>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="100"/>
+        <source>The clone's name will be appended with '_Clone'</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="378"/>
-        <source>Add image</source>
-        <translation>Añadir Imagen</translation>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="116"/>
+        <source>And for all other items, too.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="227"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2047"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="354"/>
-        <source>Changed comment</source>
-        <translation>Se cambió el comentario</translation>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="123"/>
+        <source>Use item:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="233"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2053"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="360"/>
-        <source>Changed description</source>
-        <translation>Se cambió la descripción</translation>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="171"/>
+        <source>Replace with:</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>ISetupDatabase</name>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="266"/>
-        <source>Length: -</source>
+        <location filename="../gis/db/ISetupDatabase.ui" line="14"/>
+        <source>Add database...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="273"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="456"/>
-        <source>Time: %1 %2</source>
-        <translation type="unfinished">Tiempo: %1 %2</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="25"/>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="458"/>
-        <source>Distance: %1 %2</source>
+        <location filename="../gis/db/ISetupDatabase.ui" line="181"/>
+        <source>Server</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="277"/>
-        <source>Time: -</source>
+        <location filename="../gis/db/ISetupDatabase.ui" line="193"/>
+        <source>Port</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="283"/>
-        <source>Last time routed:<br/>%1</source>
+        <location filename="../gis/db/ISetupDatabase.ui" line="206"/>
+        <source>00000</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="285"/>
-        <source>with %1</source>
+        <location filename="../gis/db/ISetupDatabase.ui" line="215"/>
+        <source>User</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="572"/>
-        <source>Changed route points.</source>
+        <location filename="../gis/db/ISetupDatabase.ui" line="225"/>
+        <source>Password</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="582"/>
-        <source>Archived</source>
-        <translation>Archivado</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="252"/>
+        <source><p align="justify"><span style=" font-weight:600;">Caution!</span> It is recommended to leave the password blank, as QMapShack will store it as plain text. If you don't give a password you will be asked for it on each startup.</p></source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="586"/>
-        <source>Available</source>
-        <translation>Disponible</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="275"/>
+        <source><b>Port:</b> Leave the port field empty to use the default port.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="590"/>
-        <source>Not Available</source>
-        <translation>No Disponible</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="239"/>
+        <source>Do not use a password.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
-        <source>Warning...</source>
-        <translation>Aviso...</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="61"/>
+        <source>File:</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
-        <source>This is a typ file with unknown polygon encoding. Please report!</source>
-        <translation>Este es un fichero TYP con una codificación de polígonos desconocida. ¡Por favor repórtelo!</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="68"/>
+        <source>-</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
-        <source>This is a typ file with unknown polyline encoding. Please report!</source>
-        <translation>Este es un fichero TYP con una codificación de polilíneas desconocida. ¡Por favor repórtelo!</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="75"/>
+        <source>Add new database.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="345"/>
-        <source>Initial version.</source>
-        <translation>Versión inicial</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="78"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="92"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press'Ok'.</source>
-        <translation type="obsolete">Este elemento probablemente sea de sólo lectura por no haber sido creado por QMapShack. Habitualmente no deseará cambiar los datos importados. De lo contrario, es correcto pulsar 'OK'.</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="89"/>
+        <source>Open existing database.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="453"/>
-        <source><h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press 'Ok'.</source>
+        <location filename="../gis/db/ISetupDatabase.ui" line="115"/>
+        <source>MySQL</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="454"/>
-        <source>Read Only Mode...</source>
-        <translation>Modo Sólo Lectura...</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="153"/>
+        <source>SQLite</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>ISetupFolder</name>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="615"/>
-        <source><h4>Comment:</h4></source>
-        <translation><h4>Comentario:</h4></translation>
+        <location filename="../gis/db/ISetupFolder.ui" line="14"/>
+        <source>Database Folder...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="618"/>
-        <source><p>--- no comment ---</p></source>
-        <translation><p>---sin comentario---</p></translation>
+        <location filename="../gis/db/ISetupFolder.ui" line="20"/>
+        <source>Folder name</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="601"/>
-        <location filename="../gis/IGisItem.cpp" line="660"/>
-        <source><h4>Description:</h4></source>
-        <translation><h4>Descripción:</h4></translation>
+        <location filename="../gis/db/ISetupFolder.ui" line="30"/>
+        <source>Group</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="42"/>
-        <source>[no name]</source>
+        <location filename="../gis/db/ISetupFolder.ui" line="41"/>
+        <source>Project</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="604"/>
-        <location filename="../gis/IGisItem.cpp" line="663"/>
-        <source><p>--- no description ---</p></source>
-        <translation><p>---sin descripción---</p></translation>
+        <location filename="../gis/db/ISetupFolder.ui" line="55"/>
+        <source>Other</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>ISetupNewWpt</name>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="629"/>
-        <location filename="../gis/IGisItem.cpp" line="674"/>
-        <source><h4>Links:</h4></source>
-        <translation></translation>
+        <location filename="../gis/wpt/ISetupNewWpt.ui" line="14"/>
+        <source>New Waypoint...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="632"/>
-        <location filename="../gis/IGisItem.cpp" line="677"/>
-        <source><p>--- no links ---</p></source>
-        <translation><p>--- sin links ---</p></translation>
+        <location filename="../gis/wpt/ISetupNewWpt.ui" line="22"/>
+        <source>Symbol</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1245"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1264"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1340"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1399"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1578"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
-        <source>Enter new track name.</source>
-        <translation>Introduzca el nombre del nuevo track.</translation>
+        <location filename="../gis/wpt/ISetupNewWpt.ui" line="29"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
     </message>
-    <message>
-        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
-        <source>Enter new area name.</source>
-        <translation>Introduzca el nombre del nuevo área.</translation>
+    <message>
+        <location filename="../gis/wpt/ISetupNewWpt.ui" line="39"/>
+        <source>Position</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderDatabase.cpp" line="28"/>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="30"/>
-        <source>All your data grouped by folders.</source>
-        <translation>Todos tus datos agrupados en carpetas.</translation>
+        <location filename="../gis/wpt/ISetupNewWpt.ui" line="49"/>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="66"/>
-        <location filename="../gis/db/CLostFoundProject.cpp" line="39"/>
-        <source>Lost & Found</source>
-        <translation>Objetos Perdidos</translation>
+        <location filename="../gis/wpt/ISetupNewWpt.ui" line="59"/>
+        <source>Bad position format. Must be: 
+"[N|S] ddd mm.sss [W|E] ddd mm.sss"
+or
+"[N|S] ddd.ddd [W|E] ddd.ddd"</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>ISetupWorkspace</name>
     <message>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="61"/>
-        <source>Lost & Found (%1)</source>
-        <translation>Objetos Perdidos (%1)</translation>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="14"/>
+        <source>Setup workspace...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/converter.cpp" line="198"/>
-        <source>Copy flag information from QLandkarte GT track</source>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="35"/>
+        <source>save workspace on exit, and every</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="163"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="217"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="264"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="290"/>
-        <source>Corrupt track ...</source>
-        <translation type="unfinished">Track corrupto...</translation>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="45"/>
+        <source>minutes</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="163"/>
-        <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="56"/>
+        <source>listen for database changes from other instances of QMapShack. On port</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="217"/>
-        <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="63"/>
+        <source>00000</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>ITextEditWidget</name>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="264"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="290"/>
-        <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
+        <location filename="../widgets/ITextEditWidget.ui" line="14"/>
+        <source>Edit text...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="106"/>
-        <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
-        <translation>Ocultar puntos con algoritmo Douglas Peuker (%1%2)</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="25"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="38"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="51"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="64"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="77"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="97"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="110"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="123"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="136"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="169"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="182"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="195"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="208"/>
+        <source>...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="141"/>
-        <source>Hide points with invalid coordinates at the beginning of the track</source>
+        <location filename="../widgets/ITextEditWidget.ui" line="256"/>
+        <source>Undo</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="157"/>
-        <source>Reset all hidden track points to visible</source>
-        <translation>Restaurados todos los puntos a visible</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="259"/>
+        <source>Ctrl+Z</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="191"/>
-        <source>Permanently removed all hidden track points</source>
-        <translation>Elminados definitivamente todos los puntos ocultos del track</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="268"/>
+        <source>Redo</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="241"/>
-        <source>Smoothed profile with a Median filter of size %1</source>
-        <translation>Pefil suavizado con Mediana de %1 puntos</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="271"/>
+        <source>Ctrl+Shift+Z</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="277"/>
-        <source>Replaced elevation data with data from DEM files.</source>
-        <translation>Datos de elevación sustituidos por valores de fichero DEM.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="280"/>
+        <source>Cut</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="300"/>
-        <source>Offset elevation data by %1%2.</source>
-        <translation>Elevación desplazada %1%2.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="283"/>
+        <source>Ctrl+X</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="319"/>
-        <source>Changed start of track to %1.</source>
-        <translation>Cambiado el inicio de track a %1.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="292"/>
+        <source>Copy</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="338"/>
-        <source>Remove timestamps.</source>
-        <translation>Eliminadas las marcas de tiempo.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="295"/>
+        <source>Ctrl+C</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="361"/>
-        <source>Set artificial timestamps with delta of %1 sec.</source>
-        <translation>Marcas de tiempo ficticias con incremento de %1 sec.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="304"/>
+        <source>Paste</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="394"/>
-        <source>Changed speed to %1%2.</source>
-        <translation>Velocidad modificada a %1%2.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="307"/>
+        <source>Ctrl+V</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1098"/>
-        <source>Delete project...</source>
-        <translation>Eliminar Proyecto...</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="319"/>
+        <source>Align Left</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1098"/>
-        <source>Do you really want to delete %1?</source>
-        <translation>¿Desea realmente eliminar %1?</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="322"/>
+        <source>Ctrl+L</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
-        <location filename="../gis/tnv/serialization.cpp" line="211"/>
-        <location filename="../gis/tnv/serialization.cpp" line="347"/>
-        <location filename="../gis/tnv/serialization.cpp" line="376"/>
-        <location filename="../gis/tnv/serialization.cpp" line="387"/>
-        <location filename="../gis/tnv/serialization.cpp" line="420"/>
-        <location filename="../gis/tnv/serialization.cpp" line="560"/>
-        <location filename="../gis/tnv/serialization.cpp" line="588"/>
-        <location filename="../gis/tnv/serialization.cpp" line="599"/>
-        <location filename="../gis/tnv/serialization.cpp" line="617"/>
-        <location filename="../gis/tnv/serialization.cpp" line="645"/>
-        <location filename="../gis/tnv/serialization.cpp" line="719"/>
-        <source>Error...</source>
-        <translation>Error...</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="334"/>
+        <source>Align Right</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
-        <location filename="../gis/tnv/serialization.cpp" line="211"/>
-        <location filename="../gis/tnv/serialization.cpp" line="347"/>
-        <location filename="../gis/tnv/serialization.cpp" line="560"/>
-        <source>Failed to open %1.</source>
-        <translation>Fallo al abrir %1.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="337"/>
+        <source>Ctrl+R</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/tnv/serialization.cpp" line="376"/>
-        <location filename="../gis/tnv/serialization.cpp" line="387"/>
-        <location filename="../gis/tnv/serialization.cpp" line="588"/>
-        <location filename="../gis/tnv/serialization.cpp" line="599"/>
-        <source>Only support lon/lat WGS 84 format.</source>
-        <translation type="unfinished">Solamente soporta formato lon/lat WGS84.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="349"/>
+        <source>Align Center</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/tnv/serialization.cpp" line="420"/>
-        <location filename="../gis/tnv/serialization.cpp" line="617"/>
-        <location filename="../gis/tnv/serialization.cpp" line="645"/>
-        <location filename="../gis/tnv/serialization.cpp" line="719"/>
-        <source>Failed to read data.</source>
-        <translation>Fallo al leer los datos.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="352"/>
+        <source>Ctrl+E</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../device/CDeviceGarmin.cpp" line="204"/>
-        <source>Picture%1</source>
+        <location filename="../widgets/ITextEditWidget.ui" line="364"/>
+        <source>Align Block</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../device/IDevice.cpp" line="204"/>
-        <source>There is another project with the same name. If you press 'ok' it will be removed and replaced.</source>
+        <location filename="../widgets/ITextEditWidget.ui" line="367"/>
+        <source>Ctrl+J</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
-        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
-        <source>Enter new route name.</source>
+        <location filename="../widgets/ITextEditWidget.ui" line="379"/>
+        <source>Underline</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="28"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="94"/>
-        <source>Foot</source>
+        <location filename="../widgets/ITextEditWidget.ui" line="382"/>
+        <source>Ctrl+U</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="35"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="95"/>
-        <source>Bicycle</source>
+        <location filename="../widgets/ITextEditWidget.ui" line="394"/>
+        <source>Bold</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="42"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="96"/>
-        <source>Motor Bike</source>
+        <location filename="../widgets/ITextEditWidget.ui" line="397"/>
+        <source>Ctrl+B</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="49"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="97"/>
-        <source>Car</source>
+        <location filename="../widgets/ITextEditWidget.ui" line="409"/>
+        <source>Italic</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="56"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="98"/>
-        <source>Cable Car</source>
+        <location filename="../widgets/ITextEditWidget.ui" line="412"/>
+        <source>Ctrl+I</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>ITimeZoneSetup</name>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="63"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="99"/>
-        <source>Swim</source>
+        <location filename="../units/ITimeZoneSetup.ui" line="14"/>
+        <source>Setup Time Zone ...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="70"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="100"/>
-        <source>Ship</source>
+        <location filename="../units/ITimeZoneSetup.ui" line="22"/>
+        <source>UTC</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="77"/>
-        <source>Aeronautik</source>
+        <location filename="../units/ITimeZoneSetup.ui" line="32"/>
+        <source>Local</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="101"/>
-        <source>Aeronautics</source>
+        <location filename="../units/ITimeZoneSetup.ui" line="42"/>
+        <source>Automatic</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="210"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="254"/>
-        <source>Distance:</source>
+        <location filename="../units/ITimeZoneSetup.ui" line="75"/>
+        <source>Print date/time in </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="212"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="276"/>
-        <source>Ascend:</source>
+        <location filename="../units/ITimeZoneSetup.ui" line="82"/>
+        <source>long format, or</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="214"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="298"/>
-        <source>Descend:</source>
+        <location filename="../units/ITimeZoneSetup.ui" line="92"/>
+        <source>short format</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IToolShell</name>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="216"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="320"/>
-        <source>Speed Moving:</source>
+        <location filename="../tool/IToolShell.cpp" line="45"/>
+        <source>Execution of external program `%1` failed: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="218"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="342"/>
-        <source>Speed Total:</source>
+        <location filename="../tool/IToolShell.cpp" line="49"/>
+        <source>Process cannot be started.
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="220"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="364"/>
-        <source>Time Moving:</source>
+        <location filename="../tool/IToolShell.cpp" line="50"/>
+        <source>Make sure the required packages are installed, `%1` exists and is executable.
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="222"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="386"/>
-        <source>Time Total:</source>
+        <location filename="../tool/IToolShell.cpp" line="54"/>
+        <source>External process crashed.
+</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="53"/>
-        <source>Progress</source>
-        <translation type="unfinished">Progreso</translation>
+        <location filename="../tool/IToolShell.cpp" line="58"/>
+        <source>An unknown error occurred.
+</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="56"/>
-        <source>time</source>
-        <translation type="unfinished">tiempo</translation>
+        <location filename="../tool/IToolShell.cpp" line="149"/>
+        <source>!!! failed !!!
+</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IUnit</name>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="57"/>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="82"/>
-        <source>distance [%1]</source>
-        <translation type="unfinished">distancia [%1]</translation>
+        <location filename="../units/IUnit.cpp" line="735"/>
+        <location filename="../units/IUnit.cpp" line="741"/>
+        <source>Error</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="57"/>
-        <source>Slope (directed)</source>
+        <location filename="../units/IUnit.cpp" line="735"/>
+        <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="62"/>
-        <source>Speed</source>
-        <translation type="unfinished">Velocidad</translation>
+        <location filename="../units/IUnit.cpp" line="741"/>
+        <source>Position values out of bounds. </source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IUnitsSetup</name>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="67"/>
-        <source>Elevation</source>
-        <translation type="unfinished">Altitud</translation>
+        <location filename="../units/IUnitsSetup.ui" line="14"/>
+        <source>Setup units...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="74"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="100"/>
-        <source>Heart Rate</source>
+        <location filename="../units/IUnitsSetup.ui" line="24"/>
+        <source>Nautic</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="79"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="105"/>
-        <source>Cadence</source>
+        <location filename="../units/IUnitsSetup.ui" line="31"/>
+        <source>Imperial</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="84"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="110"/>
-        <source>Air Temperature</source>
+        <location filename="../units/IUnitsSetup.ui" line="38"/>
+        <source>Metric</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="89"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="115"/>
-        <source>Water Temperature</source>
+        <location filename="../units/IUnitsSetup.ui" line="47"/>
+        <source><b>Note:</b> For some GUI elements changing the units will not take effect until you restart QMapShack.</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>IWptIconDialog</name>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="94"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="120"/>
-        <source>Depth</source>
+        <location filename="../helpers/IWptIconDialog.ui" line="14"/>
+        <source>Icons...</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
diff --git a/src/locale/qmapshack_cs.ts b/src/locale/qmapshack_cs.ts
index f7da89e..51e760e 100644
--- a/src/locale/qmapshack_cs.ts
+++ b/src/locale/qmapshack_cs.ts
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.1" language="cs_CZ">
+<TS version="2.0" language="cs_CZ">
 <context>
     <name>CAbout</name>
     <message>
         <source>API Version %1 (expected %2)</source>
-        <translation type="vanished">Verze API %1 (očekávána %2)     </translation>
+        <translation type="obsolete">Verze API %1 (očekávána %2)     </translation>
     </message>
     <message>
         <location filename="../CAbout.cpp" line="38"/>
@@ -19,6 +19,109 @@
     </message>
 </context>
 <context>
+    <name>CActivityTrk</name>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="29"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="117"/>
+        <source>Foot</source>
+        <translation type="unfinished">Chodec</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="37"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="118"/>
+        <source>Bicycle</source>
+        <translation type="unfinished">Jízdní kolo</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="45"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="119"/>
+        <source>Motor Bike</source>
+        <translation type="unfinished">Motocykl</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="53"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="120"/>
+        <source>Car</source>
+        <translation type="unfinished">Auto</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="61"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="121"/>
+        <source>Cable Car</source>
+        <translation type="unfinished">Lanovka</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="69"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="122"/>
+        <source>Swim</source>
+        <translation type="unfinished">Plavání</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="77"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="123"/>
+        <source>Ship</source>
+        <translation type="unfinished">Loď</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="85"/>
+        <source>Aeronautik</source>
+        <translation type="unfinished">Vzduchoplavba</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="93"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="125"/>
+        <source>Ski/Winter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="124"/>
+        <source>Aeronautics</source>
+        <translation type="unfinished">Letectví</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="261"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="305"/>
+        <source>Distance:</source>
+        <translation type="unfinished">Vzdálenost:</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="263"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="327"/>
+        <source>Ascend:</source>
+        <translation type="unfinished">Stoupání:</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="265"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="349"/>
+        <source>Descend:</source>
+        <translation type="unfinished">Klesání:</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="267"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="371"/>
+        <source>Speed Moving:</source>
+        <translation type="unfinished">Rychlost při pohybu:</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="269"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="393"/>
+        <source>Speed Total:</source>
+        <translation type="unfinished">Celková rychlost:</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="271"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="415"/>
+        <source>Time Moving:</source>
+        <translation type="unfinished">Čas při pohybu:</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="273"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="437"/>
+        <source>Time Total:</source>
+        <translation type="unfinished">Celkový čas:</translation>
+    </message>
+</context>
+<context>
     <name>CCanvas</name>
     <message>
         <source>Workspace %1</source>
@@ -31,6 +134,14 @@
     </message>
 </context>
 <context>
+    <name>CColorChooser</name>
+    <message>
+        <location filename="../widgets/CColorChooser.cpp" line="51"/>
+        <source>Esc.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CCommandProcessor</name>
     <message>
         <location filename="../helpers/CCommandProcessor.cpp" line="31"/>
@@ -64,14 +175,177 @@
     </message>
 </context>
 <context>
+    <name>CCreateRouteFromWpt</name>
+    <message>
+        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
+        <source>Edit name...</source>
+        <translation type="unfinished">Upravit název...</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
+        <source>Enter new route name.</source>
+        <translation type="unfinished">Zadat nový název pro cestu.</translation>
+    </message>
+</context>
+<context>
+    <name>CDBFolderLostFound</name>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="30"/>
+        <source>All your data grouped by folders.</source>
+        <translation type="unfinished">Všechna data seskupená podle složek.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="59"/>
+        <source>Lost & Found (%1)</source>
+        <translation type="unfinished">Ztraceno a nalezeno (%1)</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="64"/>
+        <source>Lost & Found</source>
+        <translation type="unfinished">Ztraceno a nalezeno</translation>
+    </message>
+</context>
+<context>
+    <name>CDBFolderMysql</name>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="32"/>
+        <source>All your data grouped by folders.</source>
+        <translation type="unfinished">Všechna data seskupená podle složek.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="53"/>
+        <source>MySQL Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="56"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="60"/>
+        <source>Server: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="65"/>
+        <source> (No PW)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="73"/>
+        <source>Error: </source>
+        <translation type="unfinished">Chyba: </translation>
+    </message>
+</context>
+<context>
+    <name>CDBFolderSqlite</name>
+    <message>
+        <location filename="../gis/db/CDBFolderSqlite.cpp" line="28"/>
+        <source>All your data grouped by folders.</source>
+        <translation type="unfinished">Všechna data seskupená podle složek.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderSqlite.cpp" line="46"/>
+        <source>SQLite Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderSqlite.cpp" line="56"/>
+        <source>File: </source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CDBItem</name>
+    <message>
+        <location filename="../gis/db/CDBItem.cpp" line="87"/>
+        <source>%1 min.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBItem.cpp" line="91"/>
+        <source>%1 h</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBItem.cpp" line="95"/>
+        <source>%1 days</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CDBProject</name>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="195"/>
+        <source>The item %1 has been changed by %2 (%3). 
+
+To solve this conflict you can create and save a clone, force your version or drop your version and take the one from the database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="201"/>
+        <source>Conflict with database...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="202"/>
+        <source>Clone && Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="203"/>
+        <source>Force Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="204"/>
+        <source>Take remote</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="507"/>
+        <source>Missing folder...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="508"/>
+        <source>Failed to save project. The folder has been deleted in the database.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="517"/>
+        <source>Save ...</source>
+        <translation type="unfinished">Uložit...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <source>Error</source>
+        <translation type="unfinished">Chyba</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <source>There was an unexpected database error:
+
+%1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="704"/>
+        <source>The project '%1' is about to update itself from the database. However there are changes not saved.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="705"/>
+        <source>Save changes?</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CDemList</name>
     <message>
-        <location filename="../dem/CDemList.cpp" line="145"/>
+        <location filename="../dem/CDemList.cpp" line="198"/>
         <source>Deactivate</source>
         <translation>Vypnout</translation>
     </message>
     <message>
-        <location filename="../dem/CDemList.cpp" line="145"/>
+        <location filename="../dem/CDemList.cpp" line="198"/>
         <source>Activate</source>
         <translation>Zapnout</translation>
     </message>
@@ -93,7 +367,7 @@
     <name>CDemPropSetup</name>
     <message>
         <source><b>Grade %1</b></source>
-        <translation type="vanished"><b>Stupeň %1</b></translation>
+        <translation type="obsolete"><b>Stupeň %1</b></translation>
     </message>
 </context>
 <context>
@@ -101,8 +375,8 @@
     <message>
         <location filename="../dem/CDemVRT.cpp" line="44"/>
         <location filename="../dem/CDemVRT.cpp" line="52"/>
-        <location filename="../dem/CDemVRT.cpp" line="62"/>
-        <location filename="../dem/CDemVRT.cpp" line="91"/>
+        <location filename="../dem/CDemVRT.cpp" line="61"/>
+        <location filename="../dem/CDemVRT.cpp" line="90"/>
         <source>Error...</source>
         <translation>Chyba...</translation>
     </message>
@@ -113,12 +387,12 @@
     </message>
     <message>
         <location filename="../dem/CDemVRT.cpp" line="52"/>
-        <location filename="../dem/CDemVRT.cpp" line="62"/>
+        <location filename="../dem/CDemVRT.cpp" line="61"/>
         <source>DEM must have one band with 16bit or 32bit data.</source>
         <translation>DEM musí mít jedno pásmo s 16bitovými nebo 32bitovými daty.</translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="91"/>
+        <location filename="../dem/CDemVRT.cpp" line="90"/>
         <source>No georeference information found.</source>
         <translation>Nenalezeny žádné údaje o vyjádření prostorových vztahů.</translation>
     </message>
@@ -150,14 +424,12 @@
 <context>
     <name>CDetailsOvlArea</name>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="134"/>
         <source>Edit name...</source>
-        <translation>Upravit název...</translation>
+        <translation type="obsolete">Upravit název...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="134"/>
         <source>Enter new area name.</source>
-        <translation>Zadat název nové oblasti.</translation>
+        <translation type="obsolete">Zadat název nové oblasti.</translation>
     </message>
     <message>
         <source>Enter new waypoint name.</source>
@@ -183,13 +455,13 @@
 <context>
     <name>CDetailsPrj</name>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="247"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="687"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="270"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="738"/>
         <source>none</source>
         <translation>žádné</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="320"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="343"/>
         <source>Build diary...</source>
         <translation>Sestavit deník...</translation>
     </message>
@@ -198,97 +470,97 @@
         <translation type="obsolete">Zrušit</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="395"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="446"/>
         <source><h2>Waypoints</h2></source>
         <translation><h2>Cestovní body</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="402"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="428"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="532"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="622"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="652"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="453"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="479"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="583"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="673"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="703"/>
         <source>Info</source>
         <translation>Informace</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="403"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="429"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="533"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="623"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="653"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="454"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="480"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="584"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="674"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="704"/>
         <source>Comment</source>
         <translation>Poznámka</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="421"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="472"/>
         <source><h2>Tracks</h2></source>
         <translation><h2>Stopy</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="615"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="666"/>
         <source><h2>Areas</h2></source>
         <translation><h2>Oblasti</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="101"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="126"/>
         <source>You want to sort waypoints along a track, but you switched off track and waypoint correlation. Do you want to switch it on again?</source>
         <translation>Chcete třídit cestovní body podél cesty, ale vypnul jste svázání cestovních bodů a cest (dání do vzájemného vztahu). Chcete je opět zapnout?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="102"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="127"/>
         <source>Correlation...</source>
         <translation>Svázání...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="375"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="398"/>
         <source><b>Summary over all tracks in project</b><br/></source>
         <translation><b>Přehled všech stop v projektu</b><br/></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="551"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="602"/>
         <source>distance: %1%2</source>
         <translation>Vzdálenost: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="553"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="604"/>
         <source>ascent: %1%2</source>
         <translation>Stoupání: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="555"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="606"/>
         <source>descend: %1%2</source>
         <translation>Klesání: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="645"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="696"/>
         <source><h2>Routes</h2></source>
         <translation><h2>Cesty</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="673"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="700"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="724"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="751"/>
         <source>Edit name...</source>
         <translation>Upravit název...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="673"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="700"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="724"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="751"/>
         <source>Enter new project name.</source>
         <translation>Zadejte název projektu.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="682"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="733"/>
         <source>Edit keywords...</source>
         <translation>Upravit klíčová slova...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="682"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="733"/>
         <source>Enter keywords.</source>
         <translation>Zadejte klíčová slova.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="816"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="882"/>
         <source>Print Diary</source>
         <translation>Tisk deníku</translation>
     </message>
@@ -296,14 +568,12 @@
 <context>
     <name>CDetailsRte</name>
     <message>
-        <location filename="../gis/rte/CDetailsRte.cpp" line="119"/>
         <source>Edit name...</source>
-        <translation>Upravit název...</translation>
+        <translation type="obsolete">Upravit název...</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CDetailsRte.cpp" line="119"/>
         <source>Enter new route name.</source>
-        <translation>Zadat nový název pro cestu.</translation>
+        <translation type="obsolete">Zadat nový název pro cestu.</translation>
     </message>
 </context>
 <context>
@@ -325,62 +595,74 @@
         <translation type="obsolete">Vzdálenost [%1]</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="409"/>
         <source>Solid color</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Plná barva </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="112"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="182"/>
         <source>Reduce visible track points</source>
         <translation>Omezit počet viditelných bodů stopy</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="128"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="185"/>
         <source>Change elevation of track points</source>
         <translation>Změnit informace o výškách bodů stopy</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="141"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="188"/>
         <source>Change timestamp of track points</source>
         <translation>Změnit časová razítka bodů stopy</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="154"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="191"/>
+        <source>Modify track points' extensions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="194"/>
         <source>Cut track into pieces</source>
         <translation>Rozkrájet stopu na kusy</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="309"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="318"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="321"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="327"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="346"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="348"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="411"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="419"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="422"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="427"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="441"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="443"/>
         <source>%1 %2</source>
         <translation>%1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="603"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="508"/>
+        <source>Color</source>
+        <translation type="unfinished">Barva</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="509"/>
+        <source>Activity</source>
+        <translation type="unfinished">Činnost</translation>
+    </message>
+    <message>
         <source>Edit name...</source>
-        <translation>Upravit název...</translation>
+        <translation type="obsolete">Upravit název...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="603"/>
         <source>Enter new track name.</source>
-        <translation>Zadat název nové stopy.</translation>
+        <translation type="obsolete">Zadat název nové stopy.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="655"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="742"/>
         <source>Reset activities...</source>
         <translation>Nastavit činnosti znovu...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="655"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="742"/>
         <source>This will remove all activities from the track. Proceed?</source>
         <translation>Tímto budou všechny činnosti odstraněny ze stopy. Pokračovat?</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="661"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="748"/>
         <source>None</source>
         <translation>Žádné</translation>
     </message>
@@ -420,26 +702,37 @@
         <translation type="obsolete"><p>--- žádný popis ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="134"/>
         <source>Edit name...</source>
-        <translation>Upravit název...</translation>
+        <translation type="obsolete">Upravit název...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="134"/>
         <source>Enter new waypoint name.</source>
-        <translation>Zadat nový cestovní bod.</translation>
+        <translation type="obsolete">Zadat nový cestovní bod.</translation>
     </message>
     <message>
         <source>Enter new elevation.</source>
         <translation type="obsolete">Zadat novou výšku.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="153"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="166"/>
         <source>Enter new proximity range.</source>
         <translation>Zadejte nový poplach kvůli odstupu.</translation>
     </message>
 </context>
 <context>
+    <name>CDeviceGarmin</name>
+    <message>
+        <location filename="../device/CDeviceGarmin.cpp" line="228"/>
+        <source>Picture%1</source>
+        <translation type="unfinished">Obrázek %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/serialization.cpp" line="1039"/>
+        <source>Unknown</source>
+        <translation type="unfinished">Neznámý</translation>
+    </message>
+</context>
+<context>
     <name>CElevationDialog</name>
     <message>
         <location filename="../helpers/CElevationDialog.cpp" line="83"/>
@@ -448,270 +741,998 @@
     </message>
 </context>
 <context>
-    <name>CGisListDB</name>
-    <message>
-        <location filename="../gis/CGisListDB.cpp" line="75"/>
-        <source>Add Database</source>
-        <translation>Přidat databázi</translation>
-    </message>
+    <name>CFilterDeleteExtension</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="78"/>
-        <source>Add Folder</source>
-        <translation>Přidat složku</translation>
+        <location filename="../gis/trk/filter/CFilterDeleteExtension.cpp" line="61"/>
+        <source>No extension available</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitCrcState</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="79"/>
-        <source>Delete Folder</source>
-        <translation>Smazat složku</translation>
+        <location filename="../gis/fit/decoder/CFitCrcState.cpp" line="32"/>
+        <source>FIT decoding error : invalid CRC.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitDecoder</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="82"/>
-        <location filename="../gis/CGisListDB.cpp" line="92"/>
-        <source>Delete Item</source>
-        <translation>Smazat prvek</translation>
+        <location filename="../gis/fit/decoder/CFitDecoder.cpp" line="116"/>
+        <source>FIT decoding error: unexpected end of file %1.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitFieldBuilder</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="86"/>
-        <source>Remove Database</source>
-        <translation>Odstranit databázi</translation>
+        <location filename="../gis/fit/decoder/CFitFieldBuilder.cpp" line="70"/>
+        <source>FIT decoding error: unknown base type %1.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitHeaderState</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="89"/>
-        <source>Empty</source>
-        <translation>Prázdný</translation>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="70"/>
+        <source>FIT decoding error: protocol %1 version not supported.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="281"/>
-        <source>Remove database...</source>
-        <translation>Odstranit databázi...</translation>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="121"/>
+        <source>FIT decoding error: file header signature mismatch. File is not FIT.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitProject</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="281"/>
-        <source>Do you really want to remove '%1' from the list?</source>
+        <location filename="../gis/fit/CFitProject.cpp" line="44"/>
+        <location filename="../gis/fit/CFitProject.cpp" line="62"/>
+        <source>Failed to load file %1...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <source>Do you realy want to remove '%1' from the list?</source>
-        <translation type="vanished">Opravdu chcete '%1' odstranit ze seznamu?</translation>
+        <location filename="../gis/fit/CFitProject.cpp" line="86"/>
+        <source>Failed to open FIT file %1.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitRecordContentState</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="322"/>
-        <source>Delete database folder...</source>
-        <translation>Smazat složku s databází...</translation>
+        <location filename="../gis/fit/decoder/CFitRecordContentState.cpp" line="66"/>
+        <source>FIT decoding error: architecture %1 not supported.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="322"/>
-        <source>Are you sure you want to delete "%1" from the database?</source>
-        <translation>Opravdu chcete "%1" odstranit z databáze?</translation>
+        <location filename="../gis/fit/decoder/CFitRecordContentState.cpp" line="87"/>
+        <source>FIT decoding error: invalid offset %1 for state 'record content'</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CGarminTyp</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="348"/>
-        <location filename="../gis/CGisListDB.cpp" line="363"/>
-        <source>Remove items...</source>
-        <translation>Odstranit prvky...</translation>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
+        <source>Warning...</source>
+        <translation type="unfinished">Varování...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="348"/>
-        <source>Are you sure you want to delete all items from Lost&Found? This will remove them permanently.</source>
-        <translation>Opravdu chcete smazat všechny prvky ze ztracených a nalezených? Tím budou trvale odstraněny.</translation>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
+        <source>This is a typ file with unknown polygon encoding. Please report!</source>
+        <translation type="unfinished">Toto je souborový typ s neznámým druhem mnohoúhelníku. Nahlašte to, prosím!</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="363"/>
-        <source>Are you sure you want to delete all selected items from Lost&Found? This will remove them permanently.</source>
-        <translation>Opravdu chcete smazat všechny vybrané prvky ze ztracených a nalezených? Tím budou trvale odstraněny.</translation>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
+        <source>This is a typ file with unknown polyline encoding. Please report!</source>
+        <translation type="unfinished">Toto je souborový typ s neznámým druhem čáry. Nahlašte to, prosím!</translation>
     </message>
 </context>
 <context>
-    <name>CGisListWks</name>
+    <name>CGisItemOvlArea</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="102"/>
-        <source>Save As...</source>
-        <translation>Uložit jako...</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="36"/>
+        <source>thin</source>
+        <translation type="unfinished">Tenký</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="101"/>
-        <source>Save</source>
-        <translation>Uložit</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="37"/>
+        <source>normal</source>
+        <translation type="unfinished">Obvyklý</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="97"/>
-        <source>Edit..</source>
-        <translation>Upravit...</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="38"/>
+        <source>wide</source>
+        <translation type="unfinished">Široký</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="39"/>
+        <source>strong</source>
+        <translation type="unfinished">Silný</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="78"/>
+        <source>_Clone</source>
+        <translation type="unfinished">_Klon</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="380"/>
+        <source>Area: %1%2</source>
+        <translation type="unfinished">Oblast: %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="442"/>
+        <source>Changed area shape.</source>
+        <translation type="unfinished">Změněn tvar oblasti.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="450"/>
+        <source>Changed name.</source>
+        <translation type="unfinished">Změněn název.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="456"/>
+        <source>Changed border width.</source>
+        <translation type="unfinished">Změněna šířka okraje.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="462"/>
+        <source>Changed fill pattern.</source>
+        <translation type="unfinished">Změněn vzor výplně.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="468"/>
+        <source>Changed opacity.</source>
+        <translation type="unfinished">Změněna neprůhlednost.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="474"/>
+        <source>Changed comment.</source>
+        <translation type="unfinished">Změněna poznámka.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="480"/>
+        <source>Changed description.</source>
+        <translation type="unfinished">Změněn popis.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="486"/>
+        <source>Changed links</source>
+        <translation type="unfinished">Změněné odkazy</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="497"/>
+        <source>Changed color</source>
+        <translation type="unfinished">Změněná barva</translation>
+    </message>
+</context>
+<context>
+    <name>CGisItemRte</name>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="63"/>
+        <source>_Clone</source>
+        <translation type="unfinished">_Klon</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="249"/>
+        <source>Changed name.</source>
+        <translation type="unfinished">Změněn název.</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="255"/>
+        <source>Changed comment</source>
+        <translation type="unfinished">Změněná poznámka</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="261"/>
+        <source>Changed description</source>
+        <translation type="unfinished">Změněný popis</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="267"/>
+        <source>Changed links</source>
+        <translation type="unfinished">Změněné odkazy</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="285"/>
+        <source>Length: %1 %2</source>
+        <translation type="unfinished">Délka: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="289"/>
+        <source>Length: -</source>
+        <translation type="unfinished">Délka: -</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="296"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="479"/>
+        <source>Time: %1 %2</source>
+        <translation type="unfinished">Čas: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="300"/>
+        <source>Time: -</source>
+        <translation type="unfinished">Výsledný čas: -</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="306"/>
+        <source>Last time routed:<br/>%1</source>
+        <translation type="unfinished">Poslední spočítání cesty:<br/>%1</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="308"/>
+        <source>with %1</source>
+        <translation type="unfinished">s %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="481"/>
+        <source>Distance: %1 %2</source>
+        <translation type="unfinished">Vzdálenost: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="595"/>
+        <source>Changed route points.</source>
+        <translation type="unfinished">Změněné body cesty.</translation>
+    </message>
+</context>
+<context>
+    <name>CGisItemTrk</name>
+    <message>
+        <location filename="../gis/fit/serialization.cpp" line="188"/>
+        <source>FIT file %1 contains no GPS data.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="211"/>
+        <location filename="../gis/tnv/serialization.cpp" line="347"/>
+        <location filename="../gis/tnv/serialization.cpp" line="376"/>
+        <location filename="../gis/tnv/serialization.cpp" line="387"/>
+        <location filename="../gis/tnv/serialization.cpp" line="420"/>
+        <source>Error...</source>
+        <translation type="unfinished">Chyba...</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="211"/>
+        <location filename="../gis/tnv/serialization.cpp" line="347"/>
+        <source>Failed to open %1.</source>
+        <translation type="unfinished">Nepodařilo se otevřít %1.</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="376"/>
+        <location filename="../gis/tnv/serialization.cpp" line="387"/>
+        <source>Only support lon/lat WGS 84 format.</source>
+        <translation type="unfinished">Jako formát je podporován jen lon/lat WGS 84.</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="420"/>
+        <source>Failed to read data.</source>
+        <translation type="unfinished">Nepodařilo se přečíst data.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="124"/>
+        <source>_Clone</source>
+        <translation type="unfinished">_Klon</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="291"/>
+        <source>Changed trackpoints, sacrificed all previous data.</source>
+        <translation type="unfinished">Změněny body stop. Obětována veškerá předchozí data.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="394"/>
+        <source>Length: %1 %2</source>
+        <translation type="unfinished">Délka: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="401"/>
+        <source>, %1%2 %3, %4%5 %6</source>
+        <translation type="unfinished">, %1%2 %3, %4%5 %6</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="409"/>
+        <source>Time: %1</source>
+        <translation type="unfinished">Čas: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="412"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="422"/>
+        <source>, Speed: %1 %2</source>
+        <translation type="unfinished">, Rychlost: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="419"/>
+        <source>Moving: %1</source>
+        <translation type="unfinished">Pohyb: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="428"/>
+        <source>Start: %1</source>
+        <translation type="unfinished">Začátek: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="433"/>
+        <source>End: %1</source>
+        <translation type="unfinished">Konec: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="437"/>
+        <source>Points: %1 (%2)</source>
+        <translation type="unfinished">Body: %1 (%2)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="546"/>
+        <source>Ele.: %1 %2</source>
+        <translation type="unfinished">Výška: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="549"/>
+        <source> slope: %1%3 (%2%)</source>
+        <translation type="unfinished"> sklon: %1%3 (%2%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="554"/>
+        <source> speed: %1%2</source>
+        <translation type="unfinished"> rychlost: %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="582"/>
+        <source>... and %1 tags not displayed</source>
+        <translation type="unfinished">... a %1 značek nezobrazeno</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="594"/>
+        <source>Ascend: %1%2 (%3%)</source>
+        <translation type="unfinished">Stoupání: %1%2 (%3%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="598"/>
+        <source>Ascend: - (-)</source>
+        <translation type="unfinished">Stoupání: - (-)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="604"/>
+        <source> Descend: %1%2 (%3%)</source>
+        <translation type="unfinished"> Klesání: %1%2 (%3%) </translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="608"/>
+        <source> Descend: - (-) </source>
+        <translation type="unfinished"> Klesání: - (-) </translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="615"/>
+        <source>Dist.: %1%2 (%3%)</source>
+        <translation type="unfinished">Vzdálenost: %1%2 (%3%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="619"/>
+        <source>Dist.: - (-)</source>
+        <translation type="unfinished">Vzdálenost: - (-)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="625"/>
+        <source> Moving: %1%2 (%3%)</source>
+        <translation type="unfinished"> Pohyb: %1%2 (%3%) </translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="629"/>
+        <source> Moving: - (-) </source>
+        <translation type="unfinished"> Pohyb: - (-) </translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="648"/>
+        <source>Ascend: %1%2</source>
+        <translation type="unfinished">Stoupání: %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="653"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="670"/>
+        <source>, %1%2</source>
+        <translation type="unfinished">, %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="658"/>
+        <source>Ascend: -</source>
+        <translation type="unfinished">Stoupání: -</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="665"/>
+        <source> Descend: %1%2</source>
+        <translation type="unfinished"> Klesání: %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="675"/>
+        <source>Descend: -</source>
+        <translation type="unfinished">Klesání: -</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="681"/>
+        <source>Dist.: %1%2</source>
+        <translation type="unfinished">Vzdál.: %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="686"/>
+        <source> Time: %1%2</source>
+        <translation type="unfinished"> Čas: %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <source>Edit name...</source>
+        <translation type="unfinished">Upravit název...</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <source>Enter new track name.</source>
+        <translation type="unfinished">Zadat název nové stopy.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1331"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1355"/>
+        <source>Permanently removed points %1..%2</source>
+        <translation type="unfinished">Trvale odstraněné body %1 ... %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1537"/>
+        <source>Hide points.</source>
+        <translation type="unfinished">Skrýt body.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1577"/>
+        <source>Show points.</source>
+        <translation type="unfinished">Ukázat body.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2143"/>
+        <source>Changed name</source>
+        <translation type="unfinished">Změněný název</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2149"/>
+        <source>Changed comment</source>
+        <translation type="unfinished">Změněná poznámka</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2155"/>
+        <source>Changed description</source>
+        <translation type="unfinished">Změněný popis</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2161"/>
+        <source>Changed links</source>
+        <translation type="unfinished">Změněné odkazy</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2188"/>
+        <source>Changed activity to '%1' for complete track.</source>
+        <translation type="unfinished">Činnost byla pro celou stopu změněna na '%1'.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2262"/>
+        <source>Changed activity to '%1' for range(%2..%3).</source>
+        <translation type="unfinished">Činnost byla změněna pro oblast (%2..%3) na '%1'.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="108"/>
+        <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
+        <translation type="unfinished">Skrýt body pomocí algoritmu Douglas Peuker (%1%2)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="143"/>
+        <source>Hide points with invalid coordinates at the beginning of the track</source>
+        <translation type="unfinished">Skrýt body s neplatnými souřadnicemi na začátku stopy</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="159"/>
+        <source>Reset all hidden track points to visible</source>
+        <translation type="unfinished">Nastavit znovu všechny skryté body stopy na viditelné</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="193"/>
+        <source>Permanently removed all hidden track points</source>
+        <translation type="unfinished">Všechny skryté body stopy odstraněny trvale</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="243"/>
+        <source>Smoothed profile with a Median filter of size %1</source>
+        <translation type="unfinished">Profil vyhlazen středovým filtrem o velikosti %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="279"/>
+        <source>Replaced elevation data with data from DEM files.</source>
+        <translation type="unfinished">Výšková data nahrazena daty ze souborů s digitálním výškovým modelem.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="302"/>
+        <source>Offset elevation data by %1%2.</source>
+        <translation type="unfinished">Výšková data posunuta o %1%2.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="321"/>
+        <source>Changed start of track to %1.</source>
+        <translation type="unfinished">Začátek stopy změněn na %1.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="340"/>
+        <source>Remove timestamps.</source>
+        <translation type="unfinished">Odstranit časová razítka.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="363"/>
+        <source>Set artificial timestamps with delta of %1 sec.</source>
+        <translation type="unfinished">Uměle utvořená časová razítka nastavena s odstupem %1 s.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="396"/>
+        <source>Changed speed to %1%2.</source>
+        <translation type="unfinished">Rychlost změněna na %1%2.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="415"/>
+        <source>%1 (Segment %2)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="438"/>
+        <source>Removed extension %1 from all Track Points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/converter.cpp" line="198"/>
+        <source>Copy flag information from QLandkarte GT track</source>
+        <translation type="unfinished">Kopírovat informační příznak ze stopy QLandkarte GT</translation>
+    </message>
+</context>
+<context>
+    <name>CGisItemWpt</name>
+    <message>
+        <location filename="../gis/gpx/serialization.cpp" line="588"/>
+        <source>Archived</source>
+        <translation type="unfinished">Archivováno</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/serialization.cpp" line="592"/>
+        <source>Available</source>
+        <translation type="unfinished">Dostupné</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/serialization.cpp" line="596"/>
+        <source>Not Available</source>
+        <translation type="unfinished">Nedostupné</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="102"/>
+        <source>_Clone</source>
+        <translation type="unfinished">_Klon</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="267"/>
+        <source>Elevation: %1 %2</source>
+        <translation type="unfinished">Výška: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="278"/>
+        <source>Proximity: %1 %2</source>
+        <translation type="unfinished">Blízkost: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="352"/>
+        <source>Changed name</source>
+        <translation type="unfinished">Změněný název</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="362"/>
+        <source>Changed position</source>
+        <translation type="unfinished">Změněná poloha</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="368"/>
+        <source>Changed elevation</source>
+        <translation type="unfinished">Změněná výška</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="374"/>
+        <source>Changed proximity</source>
+        <translation type="unfinished">Změněná blízkost</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="388"/>
+        <source>Changed icon</source>
+        <translation type="unfinished">Změněná ikona</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="394"/>
+        <source>Changed comment</source>
+        <translation type="unfinished">Změněná poznámka</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="400"/>
+        <source>Changed description</source>
+        <translation type="unfinished">Změněný popis</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="406"/>
+        <source>Changed links</source>
+        <translation type="unfinished">Změněné odkazy</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="412"/>
+        <source>Changed images</source>
+        <translation type="unfinished">Změněné obrázky</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="418"/>
+        <source>Add image</source>
+        <translation type="unfinished">Přidat obrázek</translation>
+    </message>
+</context>
+<context>
+    <name>CGisListDB</name>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="81"/>
+        <source>Due to changes in the database system QMapShack forgot about the filename of your database '%1'. You have to select it again in the next step.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="82"/>
+        <source>Select database file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="115"/>
+        <source>Add Database</source>
+        <translation>Přidat databázi</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="118"/>
+        <source>Add Folder</source>
+        <translation>Přidat složku</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="119"/>
+        <source>Delete Folder</source>
+        <translation>Smazat složku</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="122"/>
+        <location filename="../gis/CGisListDB.cpp" line="133"/>
+        <source>Delete Item</source>
+        <translation>Smazat prvek</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="126"/>
+        <source>Sync. with Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="127"/>
+        <source>Remove Database</source>
+        <translation>Odstranit databázi</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="130"/>
+        <source>Empty</source>
+        <translation>Prázdný</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="418"/>
+        <source>Remove database...</source>
+        <translation>Odstranit databázi...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="418"/>
+        <source>Do you really want to remove '%1' from the list?</source>
+        <translation>Opravdu chcete '%1' odstranit ze seznamu?</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="611"/>
+        <source>Are you sure you want to delete '%1' from folder '%2'?</source>
+        <translation type="unfinished">Jste si jistý, že chcete smazat '%1' ze složky '%2'?</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="612"/>
+        <source>Delete...</source>
+        <translation type="unfinished">Smazat...</translation>
+    </message>
+    <message>
+        <source>Do you realy want to remove '%1' from the list?</source>
+        <translation type="obsolete">Opravdu chcete '%1' odstranit ze seznamu?</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="476"/>
+        <source>Delete database folder...</source>
+        <translation>Smazat složku s databází...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="476"/>
+        <source>Are you sure you want to delete "%1" from the database?</source>
+        <translation>Opravdu chcete "%1" odstranit z databáze?</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="503"/>
+        <location filename="../gis/CGisListDB.cpp" line="524"/>
+        <source>Remove items...</source>
+        <translation>Odstranit prvky...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="503"/>
+        <source>Are you sure you want to delete all items from Lost&Found? This will remove them permanently.</source>
+        <translation>Opravdu chcete smazat všechny prvky ze ztracených a nalezených? Tím budou trvale odstraněny.</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="524"/>
+        <source>Are you sure you want to delete all selected items from Lost&Found? This will remove them permanently.</source>
+        <translation>Opravdu chcete smazat všechny vybrané prvky ze ztracených a nalezených? Tím budou trvale odstraněny.</translation>
+    </message>
+</context>
+<context>
+    <name>CGisListWks</name>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="105"/>
+        <source>Save As...</source>
+        <translation>Uložit jako...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <source>Save</source>
+        <translation>Uložit</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="99"/>
+        <source>Edit..</source>
+        <translation>Upravit...</translation>
     </message>
     <message>
         <source>Update Project on Devices</source>
         <translation type="obsolete">Aktualizovat projekt na zařízeních</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="106"/>
+        <location filename="../gis/CGisListWks.cpp" line="112"/>
         <source>Close</source>
         <translation>Zavřít</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="112"/>
+        <location filename="../gis/CGisListWks.cpp" line="118"/>
         <source>Update Project on Device</source>
         <translation>Aktualizovat projekt na zařízení</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="124"/>
+        <location filename="../gis/CGisListWks.cpp" line="130"/>
         <source>Edit...</source>
         <translation>Upravit...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="125"/>
+        <location filename="../gis/CGisListWks.cpp" line="131"/>
         <source>Copy to...</source>
         <translation>Kopírovat do...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="140"/>
+        <location filename="../gis/CGisListWks.cpp" line="146"/>
         <source>Show Bubble</source>
         <translation>Ukázat bublinu</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="142"/>
+        <location filename="../gis/CGisListWks.cpp" line="148"/>
         <source>Move Waypoint</source>
         <translation>Přesunout cestovní bod</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="143"/>
+        <location filename="../gis/CGisListWks.cpp" line="149"/>
         <source>Proj. Waypoint...</source>
         <translation>Promítnutí cestovního bodu...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="151"/>
+        <location filename="../gis/CGisListWks.cpp" line="157"/>
         <source>Route Instructions</source>
         <translation>Pokyny pro cestu</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="153"/>
+        <location filename="../gis/CGisListWks.cpp" line="159"/>
         <source>Calculate Route</source>
         <translation>Spočítat cestu</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="154"/>
+        <location filename="../gis/CGisListWks.cpp" line="160"/>
         <source>Reset Route</source>
         <translation>Nastavit cestu znovu</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="155"/>
+        <location filename="../gis/CGisListWks.cpp" line="161"/>
         <source>Edit Route</source>
         <translation>Upravit cestu</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="171"/>
+        <location filename="../gis/CGisListWks.cpp" line="177"/>
         <source>Create Route</source>
         <translation>Vytvořit cestu</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="613"/>
+        <location filename="../gis/CGisListWks.cpp" line="621"/>
         <source>Drop items...</source>
         <translation>Zahodit prvky...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="638"/>
-        <location filename="../gis/CGisListWks.cpp" line="1544"/>
-        <location filename="../gis/CGisListWks.cpp" line="1582"/>
+        <location filename="../gis/CGisListWks.cpp" line="646"/>
+        <location filename="../gis/CGisListWks.cpp" line="1632"/>
+        <location filename="../gis/CGisListWks.cpp" line="1670"/>
         <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
         <translation><b>Aktualizovat zařízení</b><p>Aktualizovat %1<br/>Počkejte, prosím...</p></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1266"/>
+        <location filename="../gis/CGisListWks.cpp" line="1151"/>
+        <source>Delete project...</source>
+        <translation type="unfinished">Smazat projekt...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="1151"/>
+        <source>Do you really want to delete %1?</source>
+        <translation type="unfinished">Opravdu chcete smazat %1?</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="1347"/>
         <source>Copy items...</source>
         <translation>Kopírovat prvky...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="127"/>
+        <location filename="../gis/CGisListWks.cpp" line="133"/>
         <source>Track Profile</source>
         <translation>Profil stopy</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="98"/>
+        <location filename="../gis/CGisListWks.cpp" line="100"/>
         <source>Show on Map</source>
         <translation>Ukázat na mapě</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="99"/>
+        <location filename="../gis/CGisListWks.cpp" line="101"/>
         <source>Hide from Map</source>
         <translation>Skrýt v mapě</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <location filename="../gis/CGisListWks.cpp" line="108"/>
         <source>Send to Devices</source>
         <translation>Poslat do zařízení</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="129"/>
+        <location filename="../gis/CGisListWks.cpp" line="109"/>
+        <source>Sync. with Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="135"/>
         <source>Select Range</source>
         <translation>Vybrat rozsah</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="130"/>
+        <location filename="../gis/CGisListWks.cpp" line="136"/>
         <source>Edit Track Points</source>
         <translation>Upravit body stopy</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="131"/>
+        <location filename="../gis/CGisListWks.cpp" line="137"/>
         <source>Reverse Track</source>
         <translation>Obrátit stopu</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="132"/>
+        <location filename="../gis/CGisListWks.cpp" line="138"/>
         <source>Combine Tracks</source>
         <translation>Spojit stopy</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="164"/>
+        <location filename="../gis/CGisListWks.cpp" line="170"/>
         <source>Edit Area Points</source>
         <translation>Upravit body oblasti</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="113"/>
-        <location filename="../gis/CGisListWks.cpp" line="134"/>
+        <location filename="../gis/CGisListWks.cpp" line="119"/>
+        <location filename="../gis/CGisListWks.cpp" line="140"/>
         <source>Delete</source>
         <translation>Smazat</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="740"/>
-        <source>Saving workspace. Please wait.</source>
-        <translation>Ukládá se pracovní prostor. Počkejte, prosím.</translation>
+        <location filename="../gis/CGisListWks.cpp" line="775"/>
+        <source>Saving workspace. Please wait.</source>
+        <translation>Ukládá se pracovní prostor. Počkejte, prosím.</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="821"/>
+        <source>Loading workspace. Please wait.</source>
+        <translation>Nahrává se pracovní prostor. Počkejte, prosím.</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="1128"/>
+        <source>Close all projects...</source>
+        <translation>Zavřít všechny projekty...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="1128"/>
+        <source>This will remove all projects from the workspace.</source>
+        <translation>Tímto budou všechny projekty odstraněny z pracovního prostoru.</translation>
+    </message>
+</context>
+<context>
+    <name>CGisWidget</name>
+    <message>
+        <location filename="../gis/CGisWidget.cpp" line="131"/>
+        <source>Load project...</source>
+        <translation>Nahrát projekt...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisWidget.cpp" line="131"/>
+        <source>The project "%1" is already in the workspace.</source>
+        <translation>Projekt "%1" je již náhrán do pracovního prostoru.</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisWidget.cpp" line="486"/>
+        <source>Cut Track...</source>
+        <translation>Rozkrojit stopu...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisWidget.cpp" line="486"/>
+        <source>Do you want to delete the original track?</source>
+        <translation>Opravdu chcete smazat původní stopu?</translation>
+    </message>
+</context>
+<context>
+    <name>CGpsProject</name>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="90"/>
+        <source>Failed to load file %1...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="112"/>
+        <source>Failed to open %1</source>
+        <translation type="unfinished">Nepodařilo se otevřít %1</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="787"/>
-        <source>Loading workspace. Please wait.</source>
-        <translation>Nahrává se pracovní prostor. Počkejte, prosím.</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="124"/>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation type="unfinished">Chyba při čtení: %1
+Řádek %2, Sloupec %3:
+%4</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1062"/>
-        <source>Close all projects...</source>
-        <translation>Zavřít všechny projekty...</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="132"/>
+        <source>Not a GPX file: %1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1062"/>
-        <source>This will remove all projects from the workspace.</source>
-        <translation>Tímto budou všechny projekty odstraněny z pracovního prostoru.</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="238"/>
+        <source>File exists ...</source>
+        <translation type="unfinished">Soubor existuje...</translation>
     </message>
-</context>
-<context>
-    <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="114"/>
-        <source>Load project...</source>
-        <translation>Nahrát projekt...</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="239"/>
+        <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
+        <translation type="unfinished">Soubor existuje a nebyl vytvořen programem QMapShack. Pokud stisknete Ano, budou všechna data v tomto souboru ztracena. I když by tento soubor obsahoval data GPX a byl nahrán programem QMapShack, QMapShack nemusí být schopen nahrát a uložit všechny prvky tohoto souboru.  Tyto prvky budou ztraceny. Doporučuje se použít jiný soubor. <b>Opravdu chcete soubor přepsat?</b></translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="114"/>
-        <source>The project "%1" is already in the workspace.</source>
-        <translation>Projekt "%1" je již náhrán do pracovního prostoru.</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="347"/>
+        <source>Failed to create file '%1'</source>
+        <translation type="unfinished">Nepodařilo se vytvořit soubor '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="461"/>
-        <source>Cut Track...</source>
-        <translation>Rozkrajet stopu...</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="357"/>
+        <source>Failed to write file '%1'</source>
+        <translation type="unfinished">Nepodařilo se zapsat soubor '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="461"/>
-        <source>Do you want to delete the original track?</source>
-        <translation>Opravdu chcete smazat původní stopu?</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="362"/>
+        <source>Saving GIS data failed...</source>
+        <translation type="unfinished">Nepodařilo se uložit data GIS...</translation>
     </message>
 </context>
 <context>
@@ -756,6 +1777,11 @@
         <source>Cut history</source>
         <translation>Vyjmout historii</translation>
     </message>
+    <message>
+        <location filename="../widgets/CHistoryListWidget.cpp" line="61"/>
+        <source> by %1</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CImportDatabase</name>
@@ -776,29 +1802,108 @@
     </message>
 </context>
 <context>
+    <name>CKnownExtension</name>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="45"/>
+        <source>Air Temperature</source>
+        <translation type="unfinished">Teplota vzduchu</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="49"/>
+        <source>Water Temperature</source>
+        <translation type="unfinished">Teplota vody</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="53"/>
+        <source>Depth</source>
+        <translation type="unfinished">Hloubka</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="57"/>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="69"/>
+        <source>Heart Rate</source>
+        <translation type="unfinished">Tep srdce</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="61"/>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="73"/>
+        <source>Cadence</source>
+        <translation type="unfinished">Rychlost chůze</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="77"/>
+        <source>Speed</source>
+        <translation type="unfinished">Rychlost</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="81"/>
+        <source>Acceleration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="85"/>
+        <source>Course</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="94"/>
+        <source>Slope*</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="99"/>
+        <source>Speed*</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="104"/>
+        <source>Elevation</source>
+        <translation type="unfinished">Výška</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="109"/>
+        <source>Progress</source>
+        <translation type="unfinished">Postup</translation>
+    </message>
+</context>
+<context>
+    <name>CLostFoundProject</name>
+    <message>
+        <location filename="../gis/db/CLostFoundProject.cpp" line="39"/>
+        <source>Lost & Found</source>
+        <translation type="unfinished">Ztraceno a nalezeno</translation>
+    </message>
+</context>
+<context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="591"/>
+        <location filename="../CMainWindow.cpp" line="617"/>
         <source>Ele: %1%2</source>
         <translation>Výška: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="607"/>
+        <location filename="../CMainWindow.cpp" line="633"/>
         <source>[Grid: %1]</source>
         <translation>[Mřížka: %1]</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="732"/>
+        <location filename="../CMainWindow.cpp" line="758"/>
         <source>Load GIS Data...</source>
         <translation>Nahrát data GIS...</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="766"/>
+        <location filename="../CMainWindow.cpp" line="792"/>
         <source>Select output file</source>
         <translation>Vybrat výstupní soubor</translation>
     </message>
     <message>
         <location filename="../CMainWindow.cpp" line="792"/>
+        <location filename="../CMainWindow.cpp" line="818"/>
+        <source>QMapShack View (*.view)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../CMainWindow.cpp" line="818"/>
         <source>Select file to load</source>
         <translation>Vybrat soubor k nahrání</translation>
     </message>
@@ -1410,26 +2515,26 @@
         <translation>Soubor obsahuje zamknutá/zašifrovaná data. Garmin nechce, aby byl tento soubor použit s jiným programem než dodaným Garminem.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2504"/>
-        <location filename="../map/CMapIMG.cpp" line="2512"/>
-        <location filename="../map/CMapIMG.cpp" line="2516"/>
-        <location filename="../map/CMapIMG.cpp" line="2521"/>
-        <location filename="../map/CMapIMG.cpp" line="2567"/>
-        <location filename="../map/CMapIMG.cpp" line="2575"/>
-        <location filename="../map/CMapIMG.cpp" line="2579"/>
-        <location filename="../map/CMapIMG.cpp" line="2584"/>
+        <location filename="../map/CMapIMG.cpp" line="2502"/>
+        <location filename="../map/CMapIMG.cpp" line="2510"/>
+        <location filename="../map/CMapIMG.cpp" line="2514"/>
+        <location filename="../map/CMapIMG.cpp" line="2519"/>
+        <location filename="../map/CMapIMG.cpp" line="2565"/>
+        <location filename="../map/CMapIMG.cpp" line="2573"/>
+        <location filename="../map/CMapIMG.cpp" line="2577"/>
+        <location filename="../map/CMapIMG.cpp" line="2582"/>
         <source>Point of Interest</source>
         <translation>Podivuhodnost</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2711"/>
+        <location filename="../map/CMapIMG.cpp" line="2709"/>
         <source>Unknown</source>
         <translation>Neznámý</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2757"/>
-        <location filename="../map/CMapIMG.cpp" line="2765"/>
-        <location filename="../map/CMapIMG.cpp" line="2772"/>
+        <location filename="../map/CMapIMG.cpp" line="2755"/>
+        <location filename="../map/CMapIMG.cpp" line="2763"/>
+        <location filename="../map/CMapIMG.cpp" line="2770"/>
         <source>Area</source>
         <translation>Oblast</translation>
     </message>
@@ -1437,17 +2542,17 @@
 <context>
     <name>CMapList</name>
     <message>
-        <location filename="../map/CMapList.cpp" line="155"/>
+        <location filename="../map/CMapList.cpp" line="205"/>
         <source>Deactivate</source>
         <translation>Vypnout</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="155"/>
+        <location filename="../map/CMapList.cpp" line="205"/>
         <source>Activate</source>
         <translation>Zapnout</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="174"/>
+        <location filename="../map/CMapList.cpp" line="228"/>
         <source>Where do you want to store maps?</source>
         <translation>Kde chcete ukládat mapy?</translation>
     </message>
@@ -1572,7 +2677,7 @@ line %2, column %3:
         <translation>Tato mapa vyžaduje podporu pro OpenSSL. Nicméně kvůli právním omezením v některých zemích není OpenSSL k QMapShack přibaleno. Můžete se podívat na <a href='https://www.openssl.org/community/binaries.html'>stránky OpenSSL</a>, kde najdete spustitelné soubory. Musíte zkopírovat libeay32.dll a ssleay32.dll do adresáře s programem QMapShack.</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="306"/>
+        <location filename="../map/CMapTMS.cpp" line="304"/>
         <source><b>%1</b>: %2 tiles pending<br/></source>
         <translation><b>%1</b>: %2 dlaždic čeká<br/></translation>
     </message>
@@ -1581,21 +2686,21 @@ line %2, column %3:
     <name>CMapVRT</name>
     <message>
         <location filename="../map/CMapVRT.cpp" line="45"/>
-        <location filename="../map/CMapVRT.cpp" line="60"/>
-        <location filename="../map/CMapVRT.cpp" line="89"/>
+        <location filename="../map/CMapVRT.cpp" line="59"/>
+        <location filename="../map/CMapVRT.cpp" line="88"/>
         <location filename="../map/CMapVRT.cpp" line="126"/>
         <source>Error...</source>
         <translation>Chyba...</translation>
     </message>
     <message>
         <location filename="../map/CMapVRT.cpp" line="45"/>
-        <location filename="../map/CMapVRT.cpp" line="60"/>
+        <location filename="../map/CMapVRT.cpp" line="59"/>
         <source>Failed to load file: %1</source>
         <translation>Nepodařilo se nahrát soubor %1
 </translation>
     </message>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="89"/>
+        <location filename="../map/CMapVRT.cpp" line="88"/>
         <source>File must be 8 bit palette or gray indexed.</source>
         <translation>Soubor musí mít 8 bitovou barevnou paletu nebo být v odstínech šedi.</translation>
     </message>
@@ -1670,11 +2775,11 @@ Neznámá stavba.</translation>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="72"/>
         <source>Unexpected service. '* WMTS 1.0.0' is expected. '%1 %2' is read.</source>
-        <translation type="unfinished"></translation>
+        <translation>Neočekávaná služba. Očekáváno '* WMTS 1.0.0'. Přečteno '%1 %2'.</translation>
     </message>
     <message>
         <source>Unexpexted service. '* WMTS 1.0.0' is expected. '%1 %2' is read.</source>
-        <translation type="vanished">Neočekávaná služba. Očekáváno '* WMTS 1.0.0'. Přečteno '%1 %2'.</translation>
+        <translation type="obsolete">Neočekávaná služba. Očekáváno '* WMTS 1.0.0'. Přečteno '%1 %2'.</translation>
     </message>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="151"/>
@@ -1713,6 +2818,16 @@ Neznámá stavba.</translation>
         <source><b>Edit Area</b><br/>Select a function and a routing mode via the tool buttons. Next select a point of the line. Only points marked with a large square can be changed. The ones with a black dot are subpoints introduced by routing.<br/></source>
         <translation><b>Upravit oblast</b><br/>Vyberte funkci a režim stanovení směru cesty přes nástrojová tlačítka. Dále vyberte bod na čáře. Lze měnit pouze body označené velkým čtverečkem. Černé body jsou podbody vytvořenými při stanovení směru cesty.<br/></translation>
     </message>
+    <message>
+        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
+        <source>Edit name...</source>
+        <translation type="unfinished">Upravit název...</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
+        <source>Enter new area name.</source>
+        <translation type="unfinished">Zadat název nové oblasti.</translation>
+    </message>
 </context>
 <context>
     <name>CMouseEditRte</name>
@@ -1727,6 +2842,16 @@ Neznámá stavba.</translation>
         <source><b>Edit Route Points</b><br/>Select a function and a routing mode via the tool buttons. Next select a point of the line. Only points marked with a large square can be changed. The ones with a black dot are subpoints introduced by routing.<br/></source>
         <translation><b>Upravit body cesty</b><br/>Vyberte funkci a režim stanovení směru cesty přes nástrojová tlačítka. Dále vyberte bod na čáře. Lze měnit pouze body označené velkým čtverečkem. Černé body jsou podbody vytvořenými při stanovení směru cesty.<br/></translation>
     </message>
+    <message>
+        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
+        <source>Edit name...</source>
+        <translation type="unfinished">Upravit název...</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
+        <source>Enter new route name.</source>
+        <translation type="unfinished">Zadat nový název pro cestu.</translation>
+    </message>
 </context>
 <context>
     <name>CMouseEditTrk</name>
@@ -1753,11 +2878,17 @@ Neznámá stavba.</translation>
     <message>
         <location filename="../mouse/CMouseEditTrk.cpp" line="80"/>
         <source>This will replace all data of the original by a simple line of coordinates. All other data will be lost permanently.</source>
-        <translation type="unfinished"></translation>
+        <translation>Tímto budou všechny původní údaje nahrazeny jednoduchou čárou souřadnic. Všechna ostatní data budou trvale ztracena.</translation>
     </message>
     <message>
-        <source>This will replace all data of the orignal by a simple line of coordinates. All other data will be lost permanently.</source>
-        <translation type="vanished">Tímto budou všechny původní údaje nahrazeny jednoduchou čárou souřadnic. Všechna ostatní data budou trvale ztracena.</translation>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
+        <source>Edit name...</source>
+        <translation type="unfinished">Upravit název...</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
+        <source>Enter new track name.</source>
+        <translation type="unfinished">Zadat název nové stopy.</translation>
     </message>
 </context>
 <context>
@@ -1821,11 +2952,11 @@ Neznámá stavba.</translation>
     <name>CPlotDistance</name>
     <message>
         <source>distance [%1]</source>
-        <translation type="vanished">Vzdálenost [%1]</translation>
+        <translation type="obsolete">Vzdálenost [%1]</translation>
     </message>
     <message>
         <source>time</source>
-        <translation type="vanished">Čas</translation>
+        <translation type="obsolete">Čas</translation>
     </message>
     <message>
         <source>time [h]</source>
@@ -1833,22 +2964,22 @@ Neznámá stavba.</translation>
     </message>
     <message>
         <source>distance. [%1]</source>
-        <translation type="vanished">Vzdálenost [%1]</translation>
+        <translation type="obsolete">Vzdálenost [%1]</translation>
     </message>
 </context>
 <context>
     <name>CPlotProfile</name>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="63"/>
+        <location filename="../plot/CPlotProfile.cpp" line="73"/>
         <source>distance [%1]</source>
         <translation>Vzdálenost [%1]</translation>
     </message>
     <message>
         <source>time [h]</source>
-        <translation type="vanished">Čas [h]</translation>
+        <translation type="obsolete">Čas [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="64"/>
+        <location filename="../plot/CPlotProfile.cpp" line="74"/>
         <source>alt. [%1]</source>
         <translation>Výška [%1]</translation>
     </message>
@@ -1857,15 +2988,15 @@ Neznámá stavba.</translation>
     <name>CPlotSpeed</name>
     <message>
         <source>distance [%1]</source>
-        <translation type="vanished">Vzdálenost [%1]</translation>
+        <translation type="obsolete">Vzdálenost [%1]</translation>
     </message>
     <message>
         <source>time [h]</source>
-        <translation type="vanished">Čas [h]</translation>
+        <translation type="obsolete">Čas [h]</translation>
     </message>
     <message>
         <source>speed. [%1]</source>
-        <translation type="vanished">Rychlost [%1]</translation>
+        <translation type="obsolete">Rychlost [%1]</translation>
     </message>
 </context>
 <context>
@@ -1922,7 +3053,7 @@ y: %4 m/px</translation>
         <translation>Uplynulý čas: %1</translation>
     </message>
     <message>
-        <location filename="../helpers/CProgressDialog.cpp" line="74"/>
+        <location filename="../helpers/CProgressDialog.cpp" line="82"/>
         <source>Elapsed time: %1 seconds.</source>
         <translation>Uplynulý čas: %1 sekund.</translation>
     </message>
@@ -1940,12 +3071,12 @@ y: %4 m/px</translation>
         <translation>Jih</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="221"/>
+        <location filename="../grid/CProjWizard.cpp" line="222"/>
         <source>Error...</source>
         <translation>Chyba...</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="221"/>
+        <location filename="../grid/CProjWizard.cpp" line="222"/>
         <source>The value
 '%1'
 is not a valid coordinate system definition:
@@ -1970,6 +3101,19 @@ není platným vymezením soustavy souřadnic
     </message>
 </context>
 <context>
+    <name>CPropertyTrk</name>
+    <message>
+        <location filename="../gis/trk/CPropertyTrk.cpp" line="65"/>
+        <source>distance [%1]</source>
+        <translation type="unfinished">Vzdálenost [%1]</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CPropertyTrk.cpp" line="77"/>
+        <source>time</source>
+        <translation type="unfinished">Čas</translation>
+    </message>
+</context>
+<context>
     <name>CQlgtDb</name>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="308"/>
@@ -2096,6 +3240,33 @@ není platným vymezením soustavy souřadnic
     </message>
 </context>
 <context>
+    <name>CQlgtTrack</name>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="164"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="218"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="265"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="291"/>
+        <source>Corrupt track ...</source>
+        <translation type="unfinished">Poškozená stopa...</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="164"/>
+        <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
+        <translation type="unfinished">Počet bodů stopy neodpovídá počtu bodů stopy cvičebních dat.</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="218"/>
+        <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
+        <translation type="unfinished">Počet bodů stopy neodpovídá počtu rozšířených bodů stopy.</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="265"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="291"/>
+        <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
+        <translation type="unfinished">Počet bodů stopy neodpovídá počtu stínových bodů stopy.</translation>
+    </message>
+</context>
+<context>
     <name>CQmsDb</name>
     <message>
         <location filename="../qlgt/CQmsDb.cpp" line="47"/>
@@ -2119,6 +3290,21 @@ není platným vymezením soustavy souřadnic
     </message>
 </context>
 <context>
+    <name>CQmsProject</name>
+    <message>
+        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <source>Failed to open...</source>
+        <translation type="unfinished">Nepodařilo se otevřít...</translation>
+    </message>
+    <message>
+        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <source>Failed to open %1</source>
+        <translation type="unfinished">Nepodařilo se otevřít %1</translation>
+    </message>
+</context>
+<context>
     <name>CRouterMapQuest</name>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="37"/>
@@ -2390,9 +3576,8 @@ není platným vymezením soustavy souřadnic
         <translation>Požadovaný jazyk v nahraném souboru XML není.</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="161"/>
         <source>There is no highway near the coordinates to place a waypoint.</source>
-        <translation>V blízkosti souřadnick umístění cestovního bodu není žádná silnice.</translation>
+        <translation type="obsolete">V blízkosti souřadnick umístění cestovního bodu není žádná silnice.</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="164"/>
@@ -2451,18 +3636,23 @@ není platným vymezením soustavy souřadnic
         <translation>Varování...</translation>
     </message>
     <message>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="161"/>
+        <source>In the routing database there is no highway near the coordinates to place a waypoint.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="238"/>
         <source>%1: Due to limitations in the Windows POSIX API Routino can't handle files larger than 4GB.</source>
         <translation>%1: Kvůli omezením Windows POSIX API Routino nedokáže zpracovat soubory větší než 4 GB.</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="342"/>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="429"/>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="344"/>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="431"/>
         <source>Calculate route with %1</source>
         <translation>Spočítat cestu s %1</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="350"/>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="352"/>
         <source><br/>Calculation time: %1s</source>
         <translation><br/>Doba výpočtu: %1 s</translation>
     </message>
@@ -2557,22 +3747,32 @@ není platným vymezením soustavy souřadnic
 <context>
     <name>CSetupDatabase</name>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="70"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="47"/>
+        <source>Missing Requirement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="48"/>
+        <source>MySQL cannot be used at this point, because the corresponding driver (QMYSQL) is not available.<br />Please make sure you have installed the corresponding package.<br />If you don't know what to do now you should have <a href="%1">a look at the wiki</a>.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="102"/>
         <source>Error...</source>
         <translation>Chyba...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="70"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="102"/>
         <source>There is already a database with name '%1'</source>
         <translation>Již je databáze s názvem '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="84"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="115"/>
         <source>New database...</source>
         <translation>Nová databáze...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="109"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="140"/>
         <source>Open database...</source>
         <translation>Otevřít databázi...</translation>
     </message>
@@ -2580,17 +3780,67 @@ není platným vymezením soustavy souřadnic
 <context>
     <name>CSetupWorkspace</name>
     <message>
-        <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="55"/>
         <source>Setup database...</source>
         <translation>Nastavit databázi...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="55"/>
         <source>Changes will become active after an application's restart.</source>
         <translation>Změny budou uvedeny v činnost po opětovném spuštění programu.</translation>
     </message>
 </context>
 <context>
+    <name>CSlfProject</name>
+    <message>
+        <location filename="../gis/slf/CSlfProject.cpp" line="42"/>
+        <source>Failed to load file %1...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CSlfReader</name>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="59"/>
+        <source>%1 does not exist</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="64"/>
+        <source>Failed to open %1</source>
+        <translation type="unfinished">Nepodařilo se otevřít %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="75"/>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation type="unfinished">Chyba při čtení: %1
+Řádek %2, Sloupec %3:
+%4</translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="82"/>
+        <source>Not a SLF file: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="89"/>
+        <source>Unsupported revision %1: %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="164"/>
+        <source>Break %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="168"/>
+        <source>Lap %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CTextEditWidget</name>
     <message>
         <location filename="../widgets/CTextEditWidget.cpp" line="73"/>
@@ -2599,6 +3849,46 @@ není platným vymezením soustavy souřadnic
     </message>
 </context>
 <context>
+    <name>CTwoNavProject</name>
+    <message>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
+        <location filename="../gis/tnv/serialization.cpp" line="560"/>
+        <location filename="../gis/tnv/serialization.cpp" line="588"/>
+        <location filename="../gis/tnv/serialization.cpp" line="599"/>
+        <location filename="../gis/tnv/serialization.cpp" line="617"/>
+        <location filename="../gis/tnv/serialization.cpp" line="645"/>
+        <location filename="../gis/tnv/serialization.cpp" line="719"/>
+        <source>Error...</source>
+        <translation type="unfinished">Chyba...</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
+        <location filename="../gis/tnv/serialization.cpp" line="560"/>
+        <source>Failed to open %1.</source>
+        <translation type="unfinished">Nepodařilo se otevřít %1.</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="159"/>
+        <source>Save GIS data to...</source>
+        <translation type="unfinished">Uložit data GIS do...</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="588"/>
+        <location filename="../gis/tnv/serialization.cpp" line="599"/>
+        <source>Only support lon/lat WGS 84 format.</source>
+        <translation type="unfinished">Jako formát je podporován jen lon/lat WGS 84.</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="617"/>
+        <location filename="../gis/tnv/serialization.cpp" line="645"/>
+        <location filename="../gis/tnv/serialization.cpp" line="719"/>
+        <source>Failed to read data.</source>
+        <translation type="unfinished">Nepodařilo se přečíst data.</translation>
+    </message>
+</context>
+<context>
     <name>IAbout</name>
     <message>
         <location filename="../IAbout.ui" line="14"/>
@@ -2640,115 +3930,148 @@ není platným vymezením soustavy souřadnic
         <translation>Routino</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="166"/>
+        <location filename="../IAbout.ui" line="172"/>
+        <source>Czech:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="195"/>
+        <source>German:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="218"/>
+        <source>Dutch:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="241"/>
+        <source>French:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="251"/>
         <source>Rainer Unseld </source>
         <translation>Rainer Unseld</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="173"/>
+        <location filename="../IAbout.ui" line="381"/>
+        <source>Christian Eichler (qms at christian-eichler.de)
+Ivo Kronenberg</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>French</source>
-        <translation>Francouzština</translation>
+        <translation type="obsolete">Francouzština</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="180"/>
         <source>Czech</source>
-        <translation>Čeština</translation>
+        <translation type="obsolete">Čeština</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="187"/>
+        <location filename="../IAbout.ui" line="182"/>
         <source>Pavel Fric</source>
         <translation>Pavel Fric</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="194"/>
         <source>German</source>
-        <translation>Němčina</translation>
+        <translation type="obsolete">Němčina</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="201"/>
+        <location filename="../IAbout.ui" line="281"/>
         <source><b>Translation:</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Překlad</b></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="229"/>
         <source>Dutch</source>
-        <translation type="unfinished">Holandský</translation>
+        <translation type="obsolete">Nizozemština</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="236"/>
+        <location filename="../IAbout.ui" line="228"/>
         <source>Harrie Klomp</source>
+        <translation>Harrie Klomp</translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="271"/>
+        <source>Spanish:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="295"/>
-        <source><b>Binaries:</b></source>
+        <location filename="../IAbout.ui" line="305"/>
+        <source>Win64:</source>
+        <translation type="unfinished">Win64:</translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="321"/>
+        <source>OS X:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="311"/>
+        <location filename="../IAbout.ui" line="345"/>
+        <source><b>Binaries:</b></source>
+        <translation><b>Spustitelné soubory:</b></translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="374"/>
         <source><b>Contributors:</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Přispěvatelé</b></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="318"/>
         <source>Christian Eichler (qms at christian-eichler.de)</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Christian Eichler (qms at christian-eichler.de)</translation>
     </message>
     <message>
         <source>Translation:</source>
-        <translation type="vanished">Překlad:</translation>
+        <translation type="obsolete">Překlad:</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="208"/>
+        <location filename="../IAbout.ui" line="205"/>
         <source>Josef Latt</source>
         <translation>Josef Latt</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="215"/>
         <source>Spanish</source>
-        <translation>Španělština</translation>
+        <translation type="obsolete">Španělština</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="222"/>
+        <location filename="../IAbout.ui" line="258"/>
         <source>Jose Luis Domingo Lopez</source>
         <translation>Jose Luis Domingo Lopez</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="254"/>
+        <location filename="../IAbout.ui" line="338"/>
         <source>Ivo Kronenberg</source>
         <translation>Ivo Kronenberg</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="261"/>
+        <location filename="../IAbout.ui" line="331"/>
         <source>Helmut Schmidt</source>
         <translation>Helmut Schmidt</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="268"/>
         <source>Win64</source>
-        <translation>Win64</translation>
+        <translation type="obsolete">Win64</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="275"/>
         <source>OS X</source>
-        <translation>OS X</translation>
+        <translation type="obsolete">OS X</translation>
     </message>
-    <message>
-        <location filename="../IAbout.ui" line="282"/>
+    <message utf8="true">
+        <location filename="../IAbout.ui" line="354"/>
         <source>...and thanks to all Linux binary maintainers for doing a great job. Special thanks to Dan Horák and Bas Couwenberg for showing presence on the mailing list to discuss distribution related topics.</source>
         <translation>... a poděkování všem tvůrcům spustitelných souborů pro Linux za jejich dobrou práci. Zvláštní poděkování Danovi Horákovi a Basi Couwenbergovi za účast v diskuzi v poštovním seznamu.</translation>
     </message>
     <message>
         <source>Binaries:</source>
-        <translation type="vanished">Spustitelné soubory:</translation>
+        <translation type="obsolete">Spustitelné soubory:</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="332"/>
+        <location filename="../IAbout.ui" line="399"/>
         <source>This software is licensed under GPL3 or any later version</source>
         <translation>Tento program je licencován pod GPL3 nebo kteroukoli pozdější verzí</translation>
     </message>
-    <message>
-        <location filename="../IAbout.ui" line="339"/>
+    <message utf8="true">
+        <location filename="../IAbout.ui" line="406"/>
         <source>© 2014 Oliver Eichler (oliver.eichler at gmx.de)</source>
         <translation>© 2014 Oliver Eichler (oliver.eichler at gmx.de)</translation>
     </message>
@@ -2791,6 +4114,14 @@ není platným vymezením soustavy souřadnic
     </message>
 </context>
 <context>
+    <name>IColorChooser</name>
+    <message>
+        <location filename="../widgets/IColorChooser.ui" line="14"/>
+        <source>Dialog</source>
+        <translation type="unfinished">Dialog</translation>
+    </message>
+</context>
+<context>
     <name>ICombineTrk</name>
     <message>
         <location filename="../gis/trk/ICombineTrk.ui" line="14"/>
@@ -2813,17 +4144,17 @@ není platným vymezením soustavy souřadnic
         <source>Coordinate Format...</source>
         <translation>Formát souřadnic...</translation>
     </message>
-    <message>
+    <message utf8="true">
         <location filename="../units/ICoordFormatSetup.ui" line="36"/>
         <source>N48° 53.660 E013° 31.113</source>
         <translation>N48° 53.660 E013° 31.113</translation>
     </message>
-    <message>
+    <message utf8="true">
         <location filename="../units/ICoordFormatSetup.ui" line="29"/>
         <source>N48.8943° E013.51855°</source>
         <translation>N48.8943° E013.51855°</translation>
     </message>
-    <message>
+    <message utf8="true">
         <location filename="../units/ICoordFormatSetup.ui" line="22"/>
         <source>N48° 53' 39.6" E13° 31' 6.78"</source>
         <translation>N48° 53' 39.6" E13° 31' 6.78"</translation>
@@ -2848,22 +4179,22 @@ není platným vymezením soustavy souřadnic
     <message>
         <location filename="../gis/trk/ICutTrk.ui" line="14"/>
         <source>Cut Track</source>
-        <translation type="unfinished"></translation>
+        <translation>Rozkrojit stopu</translation>
     </message>
     <message>
         <location filename="../gis/trk/ICutTrk.ui" line="20"/>
         <source>Delete first part of the track and keep second one</source>
-        <translation type="unfinished"></translation>
+        <translation>Smazat první část stopy a zachovat druhou</translation>
     </message>
     <message>
         <location filename="../gis/trk/ICutTrk.ui" line="27"/>
         <source>Keep both parts of the track</source>
-        <translation type="unfinished"></translation>
+        <translation>Zachovat obě části stopy</translation>
     </message>
     <message>
         <location filename="../gis/trk/ICutTrk.ui" line="37"/>
         <source>Keep first part of the track and delete second one</source>
-        <translation type="unfinished"></translation>
+        <translation>Zachovat první část stopy a smazat druhou</translation>
     </message>
     <message>
         <location filename="../gis/trk/ICutTrk.ui" line="60"/>
@@ -2872,12 +4203,16 @@ není platným vymezením soustavy souřadnic
 If you keep both parts of the track you have to create new ones. 
 
 If you want to keep just one half you can simply remove the points, or check this to create a new track.</source>
-        <translation type="unfinished"></translation>
+        <translation>Toto zaškrtněte pro uložení výsledku do nové stopy.
+
+Pokud zachováte obě části stopy, musíte vytvořit nové.
+
+Pokud chcete zachovat pouze jednu polovinu, můžete jednoduše odstranit body, nebo toto zaškrtnout pro vytvoření nové stopy.</translation>
     </message>
     <message>
         <location filename="../gis/trk/ICutTrk.ui" line="67"/>
         <source>Create a new track</source>
-        <translation type="unfinished"></translation>
+        <translation>Vytvořit novou stopu</translation>
     </message>
     <message>
         <source>Create a clone</source>
@@ -2885,15 +4220,67 @@ If you want to keep just one half you can simply remove the points, or check thi
     </message>
 </context>
 <context>
+    <name>IDB</name>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="60"/>
+        <source>The internal database format of '%1'' has changed. QMapShack will migrate your database, now. After the migration the database won't be usable with older versions of QMapShack. It is recommended to backup the database first.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="64"/>
+        <source>Migrate database...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="74"/>
+        <source>Failed to migrate '%1'.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="76"/>
+        <location filename="../gis/db/IDB.cpp" line="100"/>
+        <source>Error...</source>
+        <translation type="unfinished">Chyba...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="85"/>
+        <source>The database version of '%1'' is more advanced as the one understood by your QMapShack installation. This won't work.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="88"/>
+        <source>Wrong database version...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="98"/>
+        <source>Failed to initialize '%1'.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>IDBMysql</name>
+    <message>
+        <location filename="../gis/db/IDBMysql.cpp" line="54"/>
+        <source>Password...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDBMysql.cpp" line="54"/>
+        <source>Password for database '%1':</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>IDemPathSetup</name>
     <message>
         <source>Setup DEM file pathss</source>
-        <translation type="vanished">Stanovit cesty k souborům DEM</translation>
+        <translation type="obsolete">Stanovit cesty k souborům DEM</translation>
     </message>
     <message>
         <location filename="../dem/IDemPathSetup.ui" line="14"/>
         <source>Setup DEM file paths</source>
-        <translation type="unfinished"></translation>
+        <translation>Stanovit cesty k souborům DEM</translation>
     </message>
     <message>
         <location filename="../dem/IDemPathSetup.ui" line="31"/>
@@ -2950,14 +4337,14 @@ If you want to keep just one half you can simply remove the points, or check thi
         <source>Slope </source>
         <translation>Sklon</translation>
     </message>
-    <message>
+    <message utf8="true">
         <location filename="../dem/IDemPropSetup.ui" line="226"/>
         <location filename="../dem/IDemPropSetup.ui" line="326"/>
         <location filename="../dem/IDemPropSetup.ui" line="410"/>
         <location filename="../dem/IDemPropSetup.ui" line="494"/>
         <location filename="../dem/IDemPropSetup.ui" line="578"/>
         <source>°</source>
-        <translation type="unfinished">°</translation>
+        <translation>°</translation>
     </message>
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="229"/>
@@ -2966,7 +4353,7 @@ If you want to keep just one half you can simply remove the points, or check thi
         <location filename="../dem/IDemPropSetup.ui" line="497"/>
         <location filename="../dem/IDemPropSetup.ui" line="581"/>
         <source>> </source>
-        <translation type="unfinished"></translation>
+        <translation>> </translation>
     </message>
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="251"/>
@@ -3000,6 +4387,31 @@ If you want to keep just one half you can simply remove the points, or check thi
         <source>Activate</source>
         <translation>Zapnout</translation>
     </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="165"/>
+        <source>Move Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="168"/>
+        <source>Hide DEM behind previous one</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="177"/>
+        <source>Move down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="180"/>
+        <source>Show DEM on top of next one</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="189"/>
+        <source>Reload DEM</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IDetailsGeoCache</name>
@@ -3074,62 +4486,61 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation>Dialog</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="44"/>
         <source>-</source>
-        <translation>-</translation>
+        <translation type="obsolete">-</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="69"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="132"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation><html><head/><body><p>Cestovní bod byl zaveden do QMapShacku a byl změněn. Už neukazuje původní data. Prohlédněte si, prosím, historii kvůli změnám. </p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="85"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="148"/>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
         <translation>Přepnout režim pouze pro čtení. Musíte otevřít zámek, abyste mohl prvek upravovat.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="88"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="151"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="118"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="181"/>
         <source>Color</source>
         <translation>Barva</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="139"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="202"/>
         <source>Border width</source>
         <translation>Šířka okraje</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="153"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="216"/>
         <source>Style</source>
         <translation>Styl</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="172"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="235"/>
         <source>Opacity</source>
         <translation>Neprůhlednost</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="185"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="248"/>
         <source>Info</source>
         <translation>Informace</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="214"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="277"/>
         <source>Points</source>
         <translation>Body</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="241"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="304"/>
         <source>Position</source>
         <translation>Poloha</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="250"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="313"/>
         <source>Hist.</source>
         <translation>Hist.</translation>
     </message>
@@ -3185,7 +4596,7 @@ If you want to keep just one half you can simply remove the points, or check thi
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="86"/>
         <source>Sort along track (single)</source>
-        <translation>Třídit podle stopy (jednorázový)</translation>
+        <translation>Třídit podle stopy (jednorázově)</translation>
     </message>
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="135"/>
@@ -3206,27 +4617,27 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation>Informace</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="65"/>
+        <location filename="../gis/rte/IDetailsRte.ui" line="205"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="97"/>
+        <location filename="../gis/rte/IDetailsRte.ui" line="154"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation><html><head/><body><p>Cestovní bod byl zaveden do QMapShacku a byl změněn. Už neukazuje původní data. Prohlédněte si, prosím, historii kvůli změnám. </p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="113"/>
+        <location filename="../gis/rte/IDetailsRte.ui" line="170"/>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
         <translation>Přepnout režim pouze pro čtení. Musíte otevřít zámek, abyste mohl prvek upravovat.</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="116"/>
+        <location filename="../gis/rte/IDetailsRte.ui" line="173"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="176"/>
+        <location filename="../gis/rte/IDetailsRte.ui" line="229"/>
         <source>Hist.</source>
         <translation>Hist.</translation>
     </message>
@@ -3249,164 +4660,252 @@ If you want to keep just one half you can simply remove the points, or check thi
     </message>
     <message>
         <source>Graph Control</source>
-        <translation type="vanished">Ovládání grafu</translation>
+        <translation type="obsolete">Ovládání grafu</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="533"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1026"/>
         <source>Profile</source>
         <translation>Profil</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="702"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1467"/>
         <source>Speed</source>
         <translation>Rychlost</translation>
     </message>
     <message>
         <source>Progress</source>
-        <translation type="vanished">Postup</translation>
+        <translation type="obsolete">Postup</translation>
     </message>
     <message>
         <source>Track</source>
-        <translation type="vanished">Stopa</translation>
+        <translation type="obsolete">Stopa</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="163"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="277"/>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
         <translation>Přepnout režim pouze pro čtení. Musíte otevřít zámek, abyste mohl prvek upravovat.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="166"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="280"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="445"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="474"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="549"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="578"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="682"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="708"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="737"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1047"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1076"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1108"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1144"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1173"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1205"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1241"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1270"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1302"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="202"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="255"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation><html><head/><body><p>Cestovní bod byl zaveden do QMapShacku a byl změněn. Už neukazuje původní data. Prohlédněte si, prosím, historii kvůli změnám. </p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="298"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="377"/>
         <source>Style</source>
-        <translation type="unfinished">Styl</translation>
+        <translation>Styl</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="340"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="434"/>
         <source>from Data</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">z dat</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="353"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="801"/>
         <source>Source</source>
-        <translation type="unfinished"></translation>
+        <translation>Zdroj</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="376"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="667"/>
         <source>Maximum</source>
+        <translation>Nejvyšší hodnota</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="442"/>
+        <source>Use/edit user defined visibility of arrows for this track</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="471"/>
+        <source>Use/edit system's visibility of arrows for all tracks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="405"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="527"/>
         <source>Minimum</source>
+        <translation>Nejnižší hodnota</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="546"/>
+        <source>Use/edit user defined scale factor for this track</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="575"/>
+        <source>Use/edit system's default factor for all tracks</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="447"/>
         <source>Solid color</source>
+        <translation type="obsolete">Plná barva </translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="642"/>
+        <source>x </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="495"/>
-        <source>Graphs</source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="534"/>
+        <source>Width</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="540"/>
-        <source>Graph 3</source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="625"/>
+        <source>with arrows</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="547"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="839"/>
+        <source>Graphs</source>
+        <translation>Grafy</translation>
+    </message>
+    <message>
+        <source>Graph 3</source>
+        <translation type="obsolete">Graf 3</translation>
+    </message>
+    <message>
         <source>Graph 2</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Graf 2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="554"/>
         <source>Graph 1</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Graf 1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="562"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1331"/>
         <source>Activity</source>
         <translation>Činnost</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="607"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1372"/>
         <source>To differentiate the track statistics select an activity from the list for the complete track. Or select a part of the track to assign an activity.</source>
         <translation>K rozlišení statistik stop zvolte v seznamu činnost pro celou stopu. Nebo vyberte část stopy a přiřaďte jí činnost.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="634"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1399"/>
         <source>Points</source>
         <translation>Body</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="682"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1447"/>
         <source>Time</source>
         <translation>Čas</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="687"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1452"/>
         <source>Ele.</source>
         <translation>Výška</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="692"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1457"/>
         <source>Delta</source>
         <translation>Rozdíl</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="697"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1462"/>
         <source>Dist.</source>
         <translation>Vzdál.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="707"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1472"/>
         <source>Slope</source>
         <translation>Sklon</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="712"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1477"/>
         <source>Ascend</source>
         <translation>Stoupání</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="717"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1482"/>
         <source>Descend</source>
         <translation>Klesání</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="722"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1487"/>
         <source>Position</source>
         <translation>Poloha</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="266"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="345"/>
         <source>Info</source>
         <translation>Informace</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="227"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="306"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="731"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="852"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="872"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="958"/>
+        <source>max.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="991"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="998"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1012"/>
+        <source>min.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="679"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1044"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1141"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1238"/>
+        <source>User defined limits for this track</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="705"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1073"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1170"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1267"/>
+        <source>Automatic limits</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="734"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1105"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1202"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1299"/>
+        <source>User defined limits for all tracks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="788"/>
+        <source>Color</source>
+        <translation type="unfinished">Barva</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1496"/>
         <source>Filter</source>
         <translation>Filtr</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="768"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1533"/>
         <source>Hist.</source>
         <translation>Historie</translation>
     </message>
@@ -3419,15 +4918,15 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation>Dialog</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="221"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="284"/>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
         <translation>Přepnout režim pouze pro čtení. Musíte otevřít zámek, abyste mohl prvek upravovat.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="224"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="279"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="299"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="331"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="287"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="342"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="362"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="394"/>
         <source>...</source>
         <translation>...</translation>
     </message>
@@ -3445,8 +4944,7 @@ If you want to keep just one half you can simply remove the points, or check thi
         <location filename="../gis/wpt/IDetailsWpt.ui" line="84"/>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="110"/>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="136"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="186"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="265"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="328"/>
         <source>-</source>
         <translation>-</translation>
     </message>
@@ -3461,12 +4959,12 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation>Blízkost:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="205"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="268"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation><html><head/><body><p>Cestovní bod byl zaveden do QMapShacku a byl změněn. Už neukazuje původní data. Prohlédněte si, prosím, historii kvůli změnám. </p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="350"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="413"/>
         <source>Hist.</source>
         <translation>Historie</translation>
     </message>
@@ -3475,19 +4973,27 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation type="obsolete"><html><head/><body><p>Režim pouze pro čtení</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="276"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="339"/>
         <source>Add images.</source>
         <translation>Přidat obrázky.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="296"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="359"/>
         <source>Delete selected image.</source>
         <translation>Smazat vybraný obrázek.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="258"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="321"/>
         <source>Date/Time:</source>
-        <translation>Datum/Čas</translation>
+        <translation>Datum/Čas:</translation>
+    </message>
+</context>
+<context>
+    <name>IDevice</name>
+    <message>
+        <location filename="../device/IDevice.cpp" line="204"/>
+        <source>There is another project with the same name. If you press 'ok' it will be removed and replaced.</source>
+        <translation type="unfinished">Je jiný projekt se stejným názvem. Pokud stisknete OK, bude odstraněn a nahrazen.</translation>
     </message>
 </context>
 <context>
@@ -3542,6 +5048,34 @@ If you want to keep just one half you can simply remove the points, or check thi
     </message>
 </context>
 <context>
+    <name>IFilterDeleteExtension</name>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished">Formulář</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="51"/>
+        <source><b>Remove Extension from all Track Points</b></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="63"/>
+        <source>Remove </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="83"/>
+        <source>from all Track Points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="103"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+</context>
+<context>
     <name>IFilterDouglasPeuker</name>
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="14"/>
@@ -3579,22 +5113,22 @@ If you want to keep just one half you can simply remove the points, or check thi
     <message>
         <location filename="../gis/trk/filter/IFilterInvalid.ui" line="14"/>
         <source>Form</source>
-        <translation type="unfinished">Formulář</translation>
+        <translation>Formulář</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterInvalid.ui" line="41"/>
         <source>Hide Invalid Points</source>
-        <translation type="unfinished"></translation>
+        <translation>Skrýt neplatné body</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterInvalid.ui" line="56"/>
         <source>Hide points with invalid coordinates at the beginning of the track.</source>
-        <translation type="unfinished"></translation>
+        <translation>Skrýt body s neplatnými souřadnicemi na začátku stopy.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterInvalid.ui" line="63"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -3778,19 +5312,192 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation><b>Změnit rychlost</b></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="44"/>
-        <source>Set speed to </source>
-        <translation>Změnit rychlost na </translation>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="44"/>
+        <source>Set speed to </source>
+        <translation>Změnit rychlost na </translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="51"/>
+        <source> km/h</source>
+        <translation> km/h</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="102"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+</context>
+<context>
+    <name>IFilterSplitSegment</name>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished">Formulář</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="51"/>
+        <source><html><head/><body><p><span style=" font-weight:600;">Split Segments into Tracks</span></p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="63"/>
+        <source>Creates a new track for every segment within this track.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="70"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+</context>
+<context>
+    <name>IFitDecoderState</name>
+    <message>
+        <location filename="../gis/fit/decoder/IFitDecoderState.cpp" line="32"/>
+        <source>FIT decoding error: Decoder not in correct state %1 after last data byte in file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>IGisItem</name>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="42"/>
+        <source>[no name]</source>
+        <translation type="unfinished">[žádný název]</translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="301"/>
+        <source>The item is not part of the project in the database.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="307"/>
+        <source>The item is not in the database.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="313"/>
+        <source>The item might need to be saved</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="397"/>
+        <source>Initial version.</source>
+        <translation type="unfinished">Počáteční verze.</translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="505"/>
+        <source><h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press 'Ok'.</source>
+        <translation type="unfinished"><h3>%1</h3> Tento prvek je pravděpodobně pouze pro čtení, protože nebyl vytvořen v programu QMapShack. Obvykle nemáte zájem měnit zavedená data. Ale pokud si myslíte, že je to tentokrát na místě, stiskněte OK.</translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="506"/>
+        <source>Read Only Mode...</source>
+        <translation type="unfinished">Režim pouze pro čtení...</translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="670"/>
+        <location filename="../gis/IGisItem.cpp" line="729"/>
+        <source><h4>Description:</h4></source>
+        <translation type="unfinished"><h4>Popis:</h4></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="673"/>
+        <location filename="../gis/IGisItem.cpp" line="732"/>
+        <source><p>--- no description ---</p></source>
+        <translation type="unfinished"><p>--- žádný popis ---</p></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="684"/>
+        <source><h4>Comment:</h4></source>
+        <translation type="unfinished"><h4>Poznámka:</h4></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="687"/>
+        <source><p>--- no comment ---</p></source>
+        <translation type="unfinished"><p>--- žádná poznámka ---</p></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="698"/>
+        <location filename="../gis/IGisItem.cpp" line="743"/>
+        <source><h4>Links:</h4></source>
+        <translation type="unfinished"><h4>Odkazy:</h4></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="701"/>
+        <location filename="../gis/IGisItem.cpp" line="746"/>
+        <source><p>--- no links ---</p></source>
+        <translation type="unfinished"><p>--- žádné odkazy ---</p></translation>
+    </message>
+</context>
+<context>
+    <name>IGisProject</name>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="109"/>
+        <source>Save project?</source>
+        <translation type="unfinished">Uložit projekt?</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="109"/>
+        <source><h3>%1</h3>The project was changed. Save before closing it?</source>
+        <translation type="unfinished"><h3>%1</h3>Projekt byl změněn. Uložit jej před zavřením?</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="261"/>
+        <source>%1: Correlate tracks and waypoints.</source>
+        <translation type="unfinished">%1: Svázat stopy a cestovní body.</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="271"/>
+        <source><h3>%1</h3>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project in the future?</source>
+        <translation type="unfinished"><h3>%1</h3>Trvalo to moc dlouho? Chcete svázání stop a cestovních bodů pro tento projekt přeskočit i v budoucnu?</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="272"/>
+        <source>Canceled correlation...</source>
+        <translation type="unfinished">Svázání zrušeno...</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="312"/>
+        <source>Save "%1" to...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="423"/>
+        <source><br/>
+Filename: %1</source>
+        <translation type="unfinished"><br/>
+Název souboru: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="428"/>
+        <source>Waypoints: %1</source>
+        <translation type="unfinished">Cestovní body: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="432"/>
+        <source>Tracks: %1</source>
+        <translation type="unfinished">Stopy: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="436"/>
+        <source>Routes: %1</source>
+        <translation type="unfinished">Cesty: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="440"/>
+        <source>Areas: %1</source>
+        <translation type="unfinished">Oblasti: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="51"/>
-        <source> km/h</source>
-        <translation> km/h</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="520"/>
+        <source>Are you sure you want to delete '%1' from project '%2'?</source>
+        <translation type="unfinished">Jste si jistý, že chcete smazat '%1' z projektu '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="102"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="521"/>
+        <source>Delete...</source>
+        <translation type="unfinished">Smazat...</translation>
     </message>
 </context>
 <context>
@@ -3811,7 +5518,12 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation>Název</translation>
     </message>
     <message>
-        <location filename="../gis/IGisWidget.ui" line="133"/>
+        <location filename="../gis/IGisWidget.ui" line="104"/>
+        <source>Age</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisWidget.ui" line="138"/>
         <source>To add a database do a right click on the database list above.</source>
         <translation>Pro přidání databáze klepněte pravým tlačítkem myši na seznam s databázemi výše.</translation>
     </message>
@@ -4092,178 +5804,183 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation>Ctrl+I</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="436"/>
+        <location filename="../IMainWindow.ui" line="430"/>
+        <source>F1</source>
+        <translation type="unfinished">F1</translation>
+    </message>
+    <message>
         <location filename="../IMainWindow.ui" line="439"/>
+        <location filename="../IMainWindow.ui" line="442"/>
         <source>Setup Map View</source>
         <translation>Nastavit pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="448"/>
+        <location filename="../IMainWindow.ui" line="451"/>
         <source>Load GIS Data</source>
         <translation>Nahrát data GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="451"/>
+        <location filename="../IMainWindow.ui" line="454"/>
         <source>Load projects from file</source>
         <translation>Nahrát projekty ze souboru</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="454"/>
+        <location filename="../IMainWindow.ui" line="457"/>
         <source>Ctrl+L</source>
         <translation>Ctrl+L</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="463"/>
+        <location filename="../IMainWindow.ui" line="466"/>
         <source>Save All GIS Data</source>
         <translation>Uložit všechna data GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="466"/>
+        <location filename="../IMainWindow.ui" line="469"/>
         <source>Save all projects in the workspace</source>
         <translation>Uložit všechny projekty nacházející se v pracovním prostoru</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="469"/>
+        <location filename="../IMainWindow.ui" line="472"/>
         <source>Ctrl+S</source>
         <translation>Ctrl+S</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="478"/>
+        <location filename="../IMainWindow.ui" line="481"/>
         <source>Setup Time Zone</source>
         <translation>Nastavit časové pásmo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="487"/>
+        <location filename="../IMainWindow.ui" line="490"/>
         <source>Add empty project</source>
         <translation>Přidat prázdný projekt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="499"/>
+        <location filename="../IMainWindow.ui" line="502"/>
         <source>Search Google</source>
         <translation>Hledat pomocí Google</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="508"/>
+        <location filename="../IMainWindow.ui" line="511"/>
         <source>Close all projects</source>
         <translation>Zavřít všechny projekty</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="511"/>
+        <location filename="../IMainWindow.ui" line="514"/>
         <source>F8</source>
         <translation>F8</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="520"/>
+        <location filename="../IMainWindow.ui" line="523"/>
         <source>Setup Units</source>
         <translation>Nastavit jednotky</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="529"/>
+        <location filename="../IMainWindow.ui" line="532"/>
         <source>Setup Workspace</source>
         <translation>Nastavit pracovní prostor</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="532"/>
+        <location filename="../IMainWindow.ui" line="535"/>
         <source>Setup save on exit.</source>
         <translation>Nastavit uložení při ukončení.</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="541"/>
+        <location filename="../IMainWindow.ui" line="544"/>
         <source>Import Database from QLandkarte</source>
         <translation>Zavést databázi z QLandkarte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="544"/>
+        <location filename="../IMainWindow.ui" line="547"/>
         <source>Import QLandkarte GT database</source>
         <translation>Zavést databázi GT QLandkarte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="553"/>
+        <location filename="../IMainWindow.ui" line="556"/>
         <source>VRT Builder</source>
         <translation>Sestavovač VRT</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="556"/>
+        <location filename="../IMainWindow.ui" line="559"/>
         <source>GUI front end to gdalbuildvrt</source>
         <translation>Rozhraní pro gdalbuildvrt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="565"/>
+        <location filename="../IMainWindow.ui" line="568"/>
         <source>Store Map View</source>
         <translation>Uložit pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="568"/>
+        <location filename="../IMainWindow.ui" line="571"/>
         <source>Write current active map and DEM list including the properties to a file</source>
         <translation>Zapsat nynější činnou mapu a seznam DEM včetně vlastností do souboru</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="577"/>
+        <location filename="../IMainWindow.ui" line="580"/>
         <source>Load Map View</source>
         <translation>Nahrát pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="580"/>
+        <location filename="../IMainWindow.ui" line="583"/>
         <source>Restore view with active map and DEM list including the properties from a file</source>
         <translation>Obnovit pohled s činnou mapou a seznam DEM včetně vlastností ze souboru</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="592"/>
+        <location filename="../IMainWindow.ui" line="595"/>
         <source>Ext. Profile</source>
         <translation>Ext. Profil</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="595"/>
+        <location filename="../IMainWindow.ui" line="598"/>
         <source>Ctrl+E</source>
         <translation>Ctrl+E</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="604"/>
+        <location filename="../IMainWindow.ui" line="607"/>
         <source>Close</source>
         <translation>Zavřít</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="607"/>
+        <location filename="../IMainWindow.ui" line="610"/>
         <source>Ctrl+Q</source>
         <translation>Ctrl+Q</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="616"/>
+        <location filename="../IMainWindow.ui" line="619"/>
         <source>Clone Map View</source>
         <translation>Klonovat pohled na mapu</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="619"/>
+        <location filename="../IMainWindow.ui" line="622"/>
         <source>Ctrl+Shift+T</source>
         <translation>Ctrl+Shift+T</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="628"/>
+        <location filename="../IMainWindow.ui" line="631"/>
         <source>Create Routino Database</source>
         <translation>Vytvořit databázi Routino</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="637"/>
+        <location filename="../IMainWindow.ui" line="640"/>
         <source>Save(Print) Map Screenshot</source>
         <translation>Uložit (vytisknout) snímek obrazovky s mapou</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="640"/>
+        <location filename="../IMainWindow.ui" line="643"/>
         <source>Print a selected area of the map</source>
         <translation>Vytisknout vybranou oblast mapy</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="643"/>
+        <location filename="../IMainWindow.ui" line="646"/>
         <source>Ctrl+P</source>
         <translation>Ctrl+P</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="652"/>
+        <location filename="../IMainWindow.ui" line="655"/>
         <source>Setup Coord. Format</source>
         <translation>Nastavit formát souřadnic</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="655"/>
+        <location filename="../IMainWindow.ui" line="658"/>
         <source>Change the format coordinates are displayed</source>
         <translation>Změnit formát, v němž jsou souřadnice zobrazeny</translation>
     </message>
@@ -4305,6 +6022,31 @@ Nechce se mi číst dokumentaci!</translation>
         <source>Activate</source>
         <translation>Zapnout</translation>
     </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="158"/>
+        <source>Move Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="161"/>
+        <source>Hide map behind previous map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="170"/>
+        <source>Move down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="173"/>
+        <source>Show map on top of next map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="182"/>
+        <source>Reload Maps</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IMapPathSetup</name>
@@ -4457,66 +6199,66 @@ Nechce se mi číst dokumentaci!</translation>
         <translation type="obsolete">Varování!</translation>
     </message>
     <message>
-        <source>This will replace all data of the orignal by a simple line of coordinates. All other data will be lost permanently.</source>
+        <source>This will replace all data of the original by a simple line of coordinates. All other data will be lost permanently.</source>
         <translation type="obsolete">Tímto budou všechny původní údaje nahrazeny jednoduchou čárou souřadnic. Všechna ostatní data budou trvale ztracena.</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="255"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="269"/>
         <source><b>New Line</b><br/>Move the mouse and use the left mouse button to drop points. When done use the right mouse button to stop.<br/></source>
         <translation><b>Nová čára</b><br/>Posuňte ukazovátko myši a použijte levé tlačítko myši k upuštění bodů. Až to bude uděláno, použijte pravé tlačítko myši k zastavení.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="302"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="316"/>
         <source><b>Delete Point</b><br/>Move the mouse close to a point and press the left button to delete it.<br/></source>
         <translation><b>Smazat bod</b><br/>Přesuňte ukazovátko myši blízko k bodu a stiskněte levé tlačítko myši pro jeho smazání.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="311"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="325"/>
         <source><b>Select Range of Points</b><br/>Left click on first point to start selection. Left click second point to complete selection and choose from options. Use the right mouse button to cancel.<br/></source>
         <translation><b>Upravit rozsah bodů</b><br/>Klepněte levým tlačítkem myši na první bod pro započetí výběru. Klepněte levým tlačítkem myši na druhý bod pro dokončení výběru a vyberte z voleb. Použijte pravé tlačítko myši pro zrušení.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="320"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="334"/>
         <source><b>Move Point</b><br/>Move the mouse close to a point and press the left button to make it stick to the cursor. Move the mouse to move the point. Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
         <translation><b>Přesunout bod</b><br/>Přesuňte ukazovátko myši blízko k bodu a stiskněte levé tlačítko myši pro jeho držení v blízkosti ukazovátka. Posuňte myší pro přesunutí bodu. Upustěte bod klepnutím levým tlačítkem myši. Použijte pravé tlačítko myši pro zrušení.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="329"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="343"/>
         <source><b>Add Point</b><br/>Move the mouse close to a line segment and press the left button to add a point. The point will stick to the cursor and you can move it.  Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
         <translation><b>Přidat bod</b><br/>Přesuňte ukazovátko myši blízko k čáře a stiskněte levé tlačítko myši pro přidání bodu. Bod přilne k ukazovátku a vy jím budete moci pohnout. Bod upustěte klepnutím levým tlačítkem myši. Použijte pravé tlačítko myši pro zrušení.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="338"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="352"/>
         <source><b>No Routing</b><br/>All points will be connected with a straight line.<br/></source>
         <translation><b>Žádné stanovení cesty</b><br/>Všechny body budou spojeny přímou čarou.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="343"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="357"/>
         <source><b>Auto Routing</b><br/>The current router setup is used to derive a route between points. <b>Note:</b> The selected router must be able to route on-the-fly. Offline routers usually can do, online routers can't.<br/></source>
         <translation><b>Automatické stanovení cesty</b><br/>Nynější nastavení směrování je používáno k vytváření cesty mezi body. <b>Poznámka:</b> Vybraný směrovač musí být schopen rychle směrovat (za běhu). Směrovače nepřipojené k internetu toto obvykle dokáží, směrovače připojené k internetu to běžně neumí.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="348"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="362"/>
         <source><b>Vector Routing</b><br/>Connect points with a line from a loaded vector map if possible.<br/></source>
         <translation><b>Vektorové stanovení cesty</b><br/>Spojuje body čárou z nahrané vektorové mapy, je-li to možné.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="517"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="542"/>
         <source><b>%1 Metrics</b></source>
         <translation><b>%1 metrika</b></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="520"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="545"/>
         <source>Distance:</source>
         <translation>Vzdálenost:</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="522"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="547"/>
         <source>Ascend:</source>
         <translation>Stoupání:</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="524"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="549"/>
         <source>Descend:</source>
         <translation>Klesání:</translation>
     </message>
@@ -4538,27 +6280,27 @@ Nechce se mi číst dokumentaci!</translation>
 <context>
     <name>IPlot</name>
     <message>
-        <location filename="../plot/IPlot.cpp" line="91"/>
+        <location filename="../plot/IPlot.cpp" line="93"/>
         <source>Reset Zoom</source>
         <translation>Nastavit znovu zvětšení</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="92"/>
+        <location filename="../plot/IPlot.cpp" line="94"/>
         <source>Stop Range</source>
         <translation>Ukončit výběr oblasti</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="93"/>
+        <location filename="../plot/IPlot.cpp" line="95"/>
         <source>Save...</source>
         <translation>Uložit...</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="613"/>
+        <location filename="../plot/IPlot.cpp" line="638"/>
         <source>No or bad data.</source>
         <translation>Žádné nebo špatné údaje.</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="1200"/>
+        <location filename="../plot/IPlot.cpp" line="1230"/>
         <source>Select output file</source>
         <translation>Vybrat výstupní soubor</translation>
     </message>
@@ -4595,19 +6337,29 @@ nebo
         <translation>Tisk mapy...</translation>
     </message>
     <message>
-        <location filename="../print/IPrintDialog.ui" line="50"/>
+        <location filename="../print/IPrintDialog.ui" line="79"/>
+        <source>When printing online maps make sure that the map has been loaded into the cache for the extent to be printed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../print/IPrintDialog.ui" line="60"/>
         <source>Save</source>
         <translation>Uložit</translation>
     </message>
     <message>
-        <location filename="../print/IPrintDialog.ui" line="69"/>
-        <location filename="../print/IPrintDialog.ui" line="82"/>
-        <location filename="../print/IPrintDialog.ui" line="131"/>
+        <location filename="../print/IPrintDialog.ui" line="37"/>
+        <source>When saving online maps make sure that the map has been loaded into the cache for the extent to be saved.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../print/IPrintDialog.ui" line="89"/>
+        <location filename="../print/IPrintDialog.ui" line="102"/>
+        <location filename="../print/IPrintDialog.ui" line="151"/>
         <source>TextLabel</source>
         <translation>Textový štítek</translation>
     </message>
     <message>
-        <location filename="../print/IPrintDialog.ui" line="98"/>
+        <location filename="../print/IPrintDialog.ui" line="118"/>
         <source>Print</source>
         <translation>Tisk</translation>
     </message>
@@ -4711,7 +6463,7 @@ nebo
         <source>m</source>
         <translation>m</translation>
     </message>
-    <message>
+    <message utf8="true">
         <location filename="../gis/wpt/IProjWpt.ui" line="76"/>
         <source>°</source>
         <translation>°</translation>
@@ -4896,82 +6648,82 @@ nebo
         <translation>Formulář</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="53"/>
-        <source>Save to orignal</source>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="40"/>
+        <source>Save to original</source>
         <translation>Uložit do předlohy</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="60"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="47"/>
         <source>Save as new</source>
         <translation>Uložit jako nový</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="67"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="54"/>
         <source>Abort</source>
         <translation>Přerušit</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="102"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="89"/>
         <source>Move points. (Ctrl+M)</source>
         <translation>Přesunout body. (Ctrl+M)</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="112"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="99"/>
         <source>Ctrl+M</source>
         <translation>Ctrl+M</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="128"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="115"/>
         <source>Add new points. (Ctrl++)</source>
         <translation>Přidat nové body. (Ctrl++)</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="138"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="125"/>
         <source>Ctrl++</source>
         <translation>Ctrl++</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="151"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="138"/>
         <source>Select a range of points. (Ctrl+R)</source>
         <translation>Vybrat rozsah bodů. (Ctrl+R)</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="161"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="148"/>
         <source>Ctrl+R</source>
         <translation>Ctrl+R</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="174"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="161"/>
         <source>Delete a point. (Ctrl+D)</source>
         <translation>Smazat bod. (Ctrl+D)</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="184"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="171"/>
         <source>Ctrl+D</source>
         <translation>Ctrl+D</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="228"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="215"/>
         <source>No auto-routing or line snapping (Ctrl+O)</source>
         <translation>Žádné automatické stanovení cesty nebo přichycení k čáře (Ctrl+O)</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="238"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="225"/>
         <source>Ctrl+O</source>
         <translation>Ctrl+O</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="251"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="238"/>
         <source>Use auto-routing to between points. (Ctrl+A)</source>
         <translation>Použít automatické stanovení cesty mezi body. (Ctrl+A)</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="261"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="248"/>
         <source>Ctrl+A</source>
         <translation>Ctrl+A</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="274"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="261"/>
         <source>Snap line along lines of a vector map. (Ctrl+V)</source>
         <translation>Přichytit čáru podél čáry vektorové mapy. (Ctrl+V)</translation>
     </message>
@@ -4980,12 +6732,12 @@ nebo
         <translation type="obsolete">Přesunout body.</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="105"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="131"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="154"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="177"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="313"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="330"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="92"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="118"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="141"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="164"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="300"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="317"/>
         <source>...</source>
         <translation>...</translation>
     </message>
@@ -5006,7 +6758,7 @@ nebo
         <translation type="obsolete">Žádné automatické stanovení cesty nebo přichycení k čáře</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="231"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="218"/>
         <source>0</source>
         <translation>0</translation>
     </message>
@@ -5015,7 +6767,7 @@ nebo
         <translation type="obsolete">Použít automatické stanovení cesty mezi body.</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="254"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="241"/>
         <source>A</source>
         <translation>A</translation>
     </message>
@@ -5024,22 +6776,22 @@ nebo
         <translation type="obsolete">Přichytit čáru podél čáry vektorové mapy.</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="277"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="264"/>
         <source>V</source>
         <translation>V</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="284"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="271"/>
         <source>Ctrl+V</source>
         <translation>Ctrl+V</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="310"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="297"/>
         <source>Undo last change</source>
         <translation>Vrátit poslední změnu zpět</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="327"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="314"/>
         <source>Redo last change</source>
         <translation>Obnovit poslední změnu</translation>
     </message>
@@ -5152,11 +6904,11 @@ nebo
     <message>
         <location filename="../mouse/line/IScrOptRangeLine.ui" line="34"/>
         <source><html><head/><body><p>Calculate a route between the first and last selected point.</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Spočítat cestu mezi prvním a posledním vybraným bodem.</p></body></html></translation>
     </message>
     <message>
         <source>Caclculate a route between the first and last selected point.</source>
-        <translation type="vanished">Vypočítat cestu mezi prvním a posledním vybraným bodem.</translation>
+        <translation type="obsolete">Vypočítat cestu mezi prvním a posledním vybraným bodem.</translation>
     </message>
 </context>
 <context>
@@ -5289,7 +7041,7 @@ nebo
     </message>
     <message>
         <source>Cut track at selected point into two tracks.</source>
-        <translation type="vanished">Vyjmout stopu na vybraném bodu do dvou stop.</translation>
+        <translation type="obsolete">Rozkrojit stopu na vybraném bodu do dvou stop.</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="120"/>
@@ -5329,7 +7081,11 @@ nebo
 * use the track parts to plan a new tour
 * cut a long track into stages
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Rozkrojit stopu na vybraném bodu. Můžete to použít na:
+
+* odstranění špatných bodů na začátku nebo na konci stopy
+* použití částí stopy k plánování nového výletu
+* vyjmutí dlouhé stopy do úseků</translation>
     </message>
     <message>
         <source><html><head/><body><p>View details &amp; Edit</p></body></html></source>
@@ -5449,6 +7205,14 @@ nebo
     </message>
 </context>
 <context>
+    <name>ISelectActivityColor</name>
+    <message>
+        <location filename="../gis/trk/ISelectActivityColor.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished">Formulář</translation>
+    </message>
+</context>
+<context>
     <name>ISelectCopyAction</name>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="14"/>
@@ -5456,45 +7220,45 @@ nebo
         <translation>Kopírovat prvek...</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="23"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="29"/>
         <source>Replace existing item</source>
         <translation>Nahradit stávající prvek</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="30"/>
-        <location filename="../helpers/ISelectCopyAction.ui" line="40"/>
-        <location filename="../helpers/ISelectCopyAction.ui" line="67"/>
-        <location filename="../helpers/ISelectCopyAction.ui" line="77"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="36"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="46"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="79"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="89"/>
         <source>TextLabel</source>
         <translation>Textový štítek</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="60"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="72"/>
         <source>Do not copy item</source>
         <translation>Nekopírovat prvek</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="97"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="115"/>
         <source>Create a clone</source>
         <translation>Vytvořit klon</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="104"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="122"/>
         <source>Replace with:</source>
         <translation>Nahradit:</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="111"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="129"/>
         <source>Keep item:</source>
         <translation>Zachovat prvek:</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="118"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="136"/>
         <source>The clone's name will be appended with '_Clone'</source>
         <translation>Název klonu bude rozšířen o '_Klon'</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="135"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="153"/>
         <source>And for all other items, too.</source>
         <translation>A také pro všechny další prvky.</translation>
     </message>
@@ -5557,40 +7321,50 @@ nebo
 <context>
     <name>ISelectSaveAction</name>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="14"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="20"/>
         <source>Copy item...</source>
         <translation>Kopírovat prvek...</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="23"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="35"/>
         <source>Replace existing item</source>
         <translation>Nahradit stávající prvek</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="30"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="87"/>
+        <source>Add a clone</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="100"/>
+        <source>The clone's name will be appended with '_Clone'</source>
+        <translation type="unfinished">Název klonu bude rozšířen o '_Klon'</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="171"/>
         <source>Replace with:</source>
         <translation>Nahradit:</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="37"/>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="47"/>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="81"/>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="91"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="42"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="68"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="130"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="140"/>
         <source>TextLabel</source>
         <translation>Textový štítek</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="67"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="61"/>
         <source>Do not replace item</source>
         <translation>Nenahrazovat prvek</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="74"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="123"/>
         <source>Use item:</source>
         <translation>Použít prvek:</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="111"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="116"/>
         <source>And for all other items, too.</source>
         <translation>A také pro všechny další prvky.</translation>
     </message>
@@ -5630,33 +7404,87 @@ nebo
         <translation>Přidat databázi...</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="25"/>
         <source>File</source>
-        <translation>Soubor</translation>
+        <translation type="obsolete">Soubor</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="32"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="68"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="39"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="25"/>
         <source>Name</source>
         <translation>Název</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="46"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="252"/>
+        <source><p align="justify"><span style=" font-weight:600;">Caution!</span> It is recommended to leave the password blank, as QMapShack will store it as plain text. If you don't give a password you will be asked for it on each startup.</p></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="239"/>
+        <source>Do not use a password.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="153"/>
+        <source>SQLite</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="115"/>
+        <source>MySQL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="181"/>
+        <source>Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="193"/>
+        <source>Port</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="206"/>
+        <source>00000</source>
+        <translation type="unfinished">00000</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="215"/>
+        <source>User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="225"/>
+        <source>Password</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="275"/>
+        <source><b>Port:</b> Leave the port field empty to use the default port.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="61"/>
+        <source>File:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="75"/>
         <source>Add new database.</source>
         <translation>Přidat novou databázi.</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="49"/>
-        <location filename="../gis/db/ISetupDatabase.ui" line="63"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="78"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="92"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="60"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="89"/>
         <source>Open existing database.</source>
         <translation>Otevřít stávající databázi.</translation>
     </message>
@@ -5757,6 +7585,16 @@ nebo
         <source>minutes</source>
         <translation>minut</translation>
     </message>
+    <message>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="56"/>
+        <source>listen for database changes from other instances of QMapShack. On port</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="63"/>
+        <source>00000</source>
+        <translation type="unfinished">00000</translation>
+    </message>
 </context>
 <context>
     <name>ITextEditWidget</name>
@@ -5948,42 +7786,61 @@ nebo
 <context>
     <name>IToolShell</name>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="44"/>
+        <location filename="../tool/IToolShell.cpp" line="45"/>
         <source>Execution of external program `%1` failed: </source>
-        <translation type="unfinished"></translation>
+        <translation>Nepodařilo se spustit vnější program `%1`: </translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="48"/>
+        <location filename="../tool/IToolShell.cpp" line="49"/>
         <source>Process cannot be started.
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Proces nelze spustit.</translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="49"/>
+        <location filename="../tool/IToolShell.cpp" line="50"/>
         <source>Make sure the required packages are installed, `%1` exists and is executable.
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Ujistěte se, že jsou nainstalovány požadované balíčky, že `%1` existuje a je spustitelný.</translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="53"/>
+        <location filename="../tool/IToolShell.cpp" line="54"/>
         <source>External process crashed.
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Vnější proces spadl.</translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="57"/>
+        <location filename="../tool/IToolShell.cpp" line="58"/>
         <source>An unknown error occurred.
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Vyskytla se neznámá chyba.</translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="148"/>
+        <location filename="../tool/IToolShell.cpp" line="149"/>
         <source>!!! failed !!!
 </source>
         <translation>Nepodařilo se!</translation>
     </message>
 </context>
 <context>
+    <name>IUnit</name>
+    <message>
+        <location filename="../units/IUnit.cpp" line="735"/>
+        <location filename="../units/IUnit.cpp" line="741"/>
+        <source>Error</source>
+        <translation type="unfinished">Chyba</translation>
+    </message>
+    <message>
+        <location filename="../units/IUnit.cpp" line="735"/>
+        <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
+        <translation type="unfinished">Špatný polohový formát. Musí být: "[N|S] ddd mm.sss [W|E] ddd mm.sss" nebo "[N|S] ddd.ddd [W|E] ddd.ddd"</translation>
+    </message>
+    <message>
+        <location filename="../units/IUnit.cpp" line="741"/>
+        <source>Position values out of bounds. </source>
+        <translation type="unfinished">Polohy mimo platné hodnoty. </translation>
+    </message>
+</context>
+<context>
     <name>IUnitsSetup</name>
     <message>
         <location filename="../units/IUnitsSetup.ui" line="14"/>
@@ -5998,7 +7855,7 @@ nebo
     <message>
         <location filename="../units/IUnitsSetup.ui" line="47"/>
         <source><b>Note:</b> For some GUI elements changing the units will not take effect until you restart QMapShack.</source>
-        <translation type="unfinished"></translation>
+        <translation><b>Poznámka:</b> Některé prvky uživatelského rozhraní změna jednotek neovlivní, dokud QMapShack nespustíte znovu.</translation>
     </message>
     <message>
         <location filename="../units/IUnitsSetup.ui" line="31"/>
@@ -6022,49 +7879,40 @@ nebo
 <context>
     <name>QObject</name>
     <message>
-        <location filename="../units/IUnit.cpp" line="745"/>
-        <location filename="../units/IUnit.cpp" line="751"/>
         <source>Error</source>
-        <translation>Chyba</translation>
+        <translation type="obsolete">Chyba</translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="745"/>
         <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
-        <translation>Špatný polohový formát. Musí být: "[N|S] ddd mm.sss [W|E] ddd mm.sss" nebo "[N|S] ddd.ddd [W|E] ddd.ddd"</translation>
+        <translation type="obsolete">Špatný polohový formát. Musí být: "[N|S] ddd mm.sss [W|E] ddd mm.sss" nebo "[N|S] ddd.ddd [W|E] ddd.ddd"</translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="751"/>
         <source>Position values out of bounds. </source>
-        <translation>Polohy mimo platné hodnoty. </translation>
+        <translation type="obsolete">Polohy mimo platné hodnoty. </translation>
     </message>
     <message>
         <source>Bad position format. Must be: [N|S] ddd mm.sss [W|E] ddd mm.sss</source>
         <translation type="obsolete">Špatný polohový formát. Musí být: "[N|S] ddd mm.sss [W|E] ddd mm.sss"</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="111"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="120"/>
         <source>Failed to read...</source>
-        <translation>Nepodařilo se přečíst...</translation>
+        <translation type="obsolete">Nepodařilo se přečíst...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="111"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
-        <translation>Chyba při čtení: %1
+        <translation type="obsolete">Chyba při čtení: %1
 Řádek %2, Sloupec %3:
 %4</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="120"/>
         <source>Not a GPX file: </source>
-        <translation>Není souborem GPX: </translation>
+        <translation type="obsolete">Není souborem GPX: </translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="410"/>
         <source>Saving GIS data failed...</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Nepodařilo se uložit data GIS...</translation>
     </message>
     <message>
         <source>
@@ -6097,18 +7945,16 @@ Areas: %1</source>
 Oblasti: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="97"/>
         <source>Save project?</source>
-        <translation>Uložit projekt?</translation>
+        <translation type="obsolete">Uložit projekt?</translation>
     </message>
     <message>
         <source>The project "%1" was changed. Save before closing it?</source>
         <translation type="obsolete">Projekt "%1" byl změněn. Uložit jej před zavřením?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="237"/>
         <source>%1: Correlate tracks and waypoints.</source>
-        <translation>%1: Svázat stopy a cestovní body.</translation>
+        <translation type="obsolete">%1: Svázat stopy a cestovní body.</translation>
     </message>
     <message>
         <source>Abort</source>
@@ -6119,933 +7965,686 @@ Oblasti: %1</translation>
         <translation type="obsolete">Trvalo to moc dlouho? Chcete svázání stop a cestovních bodů pro tento projekt (%1) přeskočit i v budoucnu?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="97"/>
         <source><h3>%1</h3>The project was changed. Save before closing it?</source>
-        <translation><h3>%1</h3>Projekt byl změněn. Uložit jej před zavřením?</translation>
+        <translation type="obsolete"><h3>%1</h3>Projekt byl změněn. Uložit jej před zavřením?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="247"/>
         <source><h3>%1</h3>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project in the future?</source>
-        <translation><h3>%1</h3>Trvalo to moc dlouho? Chcete svázání stop a cestovních bodů pro tento projekt přeskočit i v budoucnu?</translation>
+        <translation type="obsolete"><h3>%1</h3>Trvalo to moc dlouho? Chcete svázání stop a cestovních bodů pro tento projekt přeskočit i v budoucnu?</translation>
     </message>
     <message>
         <source>Cancelled correlation...</source>
-        <translation type="vanished">Svázání zrušeno...</translation>
+        <translation type="obsolete">Svázání zrušeno...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="248"/>
         <source>Canceled correlation...</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Svázání zrušeno...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="326"/>
         <source><br/>
 Filename: %1</source>
-        <translation><br/>
+        <translation type="obsolete"><br/>
 Název souboru: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="331"/>
         <source>Waypoints: %1</source>
-        <translation>Cestovní body: %1</translation>
+        <translation type="obsolete">Cestovní body: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="335"/>
         <source>Tracks: %1</source>
-        <translation>Stopy: %1</translation>
+        <translation type="obsolete">Stopy: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="339"/>
         <source>Routes: %1</source>
-        <translation>Cesty: %1</translation>
+        <translation type="obsolete">Cesty: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="343"/>
         <source>Areas: %1</source>
-        <translation>Oblasti: %1</translation>
+        <translation type="obsolete">Oblasti: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="423"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
-        <translation>Jste si jistý, že chcete smazat '%1' z projektu '%2'?</translation>
+        <translation type="obsolete">Jste si jistý, že chcete smazat '%1' z projektu '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="436"/>
         <source>Are you sure you want to delete '%1' from folder '%2'?</source>
-        <translation>Jste si jistý, že chcete smazat '%1' ze složky '%2'?</translation>
+        <translation type="obsolete">Jste si jistý, že chcete smazat '%1' ze složky '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="437"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="424"/>
         <source>Delete...</source>
-        <translation>Smazat...</translation>
+        <translation type="obsolete">Smazat...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="98"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="144"/>
         <source>Failed to open...</source>
-        <translation>Nepodařilo se otevřít...</translation>
+        <translation type="obsolete">Nepodařilo se otevřít...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="98"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="144"/>
         <source>Failed to open %1</source>
-        <translation>Nepodařilo se otevřít %1</translation>
+        <translation type="obsolete">Nepodařilo se otevřít %1</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="158"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="222"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="95"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="159"/>
         <source>Save GIS data to...</source>
-        <translation>Uložit data GIS do...</translation>
+        <translation type="obsolete">Uložit data GIS do...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="262"/>
         <source>Save ...</source>
-        <translation>Uložit...</translation>
+        <translation type="obsolete">Uložit...</translation>
     </message>
     <message>
         <source>Abort save</source>
         <translation type="obsolete">Zrušit ukládání</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="286"/>
         <source>File exists ...</source>
-        <translation>Soubor existuje...</translation>
+        <translation type="obsolete">Soubor existuje...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="287"/>
         <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
-        <translation>Soubor existuje a nebyl vytvořen programem QMapShack. Pokud stisknete Ano, budou všechna data v tomto souboru ztracena. I když by tento soubor obsahoval data GPX a byl nahrán programem QMapShack, QMapShack nemusí být schopen nahrát a uložit všechny prvky tohoto souboru.  Tyto prvky budou ztraceny. Doporučuje se použít jiný soubor. <b>Opravdu chcete soubor přepsat?</b></translation>
+        <translation type="obsolete">Soubor existuje a nebyl vytvořen programem QMapShack. Pokud stisknete Ano, budou všechna data v tomto souboru ztracena. I když by tento soubor obsahoval data GPX a byl nahrán programem QMapShack, QMapShack nemusí být schopen nahrát a uložit všechny prvky tohoto souboru.  Tyto prvky budou ztraceny. Doporučuje se použít jiný soubor. <b>Opravdu chcete soubor přepsat?</b></translation>
     </message>
     <message>
         <source>Saveing GIS data failed...</source>
-        <translation type="vanished">Nepodařilo se uložit data GIS...</translation>
+        <translation type="obsolete">Nepodařilo se uložit data GIS...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="395"/>
         <source>Failed to create file '%1'</source>
-        <translation>Nepodařilo se vytvořit soubor '%1'</translation>
+        <translation type="obsolete">Nepodařilo se vytvořit soubor '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="405"/>
         <source>Failed to write file '%1'</source>
-        <translation>Nepodařilo se zapsat soubor '%1'</translation>
+        <translation type="obsolete">Nepodařilo se zapsat soubor '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="345"/>
         <source>Initial version.</source>
-        <translation>Počáteční verze.</translation>
+        <translation type="obsolete">Počáteční verze.</translation>
     </message>
     <message>
         <source>This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press'Ok'.</source>
         <translation type="obsolete">Tento prvek je pravděpodobně pouze pro čtení, protože nebyl vytvořen v programu QMapShack. Obvykle nemáte zájem měnit zavedená data. Ale pokud si myslíte, že je to tentokrát na místě, stiskněte OK.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="453"/>
         <source><h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press 'Ok'.</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete"><h3>%1</h3> Tento prvek je pravděpodobně pouze pro čtení, protože nebyl vytvořen v programu QMapShack. Obvykle nemáte zájem měnit zavedená data. Ale pokud si myslíte, že je to tentokrát na místě, stiskněte OK.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="454"/>
         <source>Read Only Mode...</source>
-        <translation>Režim pouze pro čtení...</translation>
+        <translation type="obsolete">Režim pouze pro čtení...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="615"/>
         <source><h4>Comment:</h4></source>
-        <translation><h4>Poznámka:</h4></translation>
+        <translation type="obsolete"><h4>Poznámka:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="618"/>
         <source><p>--- no comment ---</p></source>
-        <translation><p>--- žádná poznámka ---</p></translation>
+        <translation type="obsolete"><p>--- žádná poznámka ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="601"/>
-        <location filename="../gis/IGisItem.cpp" line="660"/>
         <source><h4>Description:</h4></source>
-        <translation><h4>Popis:</h4></translation>
+        <translation type="obsolete"><h4>Popis:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="42"/>
         <source>[no name]</source>
-        <translation>[žádný název]</translation>
+        <translation type="obsolete">[žádný název]</translation>
     </message>
     <message>
         <source><h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press'Ok'.</source>
-        <translation type="vanished"><h3>%1</h3> Tento prvek je pravděpodobně pouze pro čtení, protože nebyl vytvořen v programu QMapShack. Obvykle nemáte zájem měnit zavedená data. Ale pokud si myslíte, že je to tentokrát na místě, stiskněte OK.</translation>
+        <translation type="obsolete"><h3>%1</h3> Tento prvek je pravděpodobně pouze pro čtení, protože nebyl vytvořen v programu QMapShack. Obvykle nemáte zájem měnit zavedená data. Ale pokud si myslíte, že je to tentokrát na místě, stiskněte OK.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="604"/>
-        <location filename="../gis/IGisItem.cpp" line="663"/>
         <source><p>--- no description ---</p></source>
-        <translation><p>--- žádný popis ---</p></translation>
+        <translation type="obsolete"><p>--- žádný popis ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="629"/>
-        <location filename="../gis/IGisItem.cpp" line="674"/>
         <source><h4>Links:</h4></source>
-        <translation><h4>Odkazy:</h4></translation>
+        <translation type="obsolete"><h4>Odkazy:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="632"/>
-        <location filename="../gis/IGisItem.cpp" line="677"/>
         <source><p>--- no links ---</p></source>
-        <translation><p>--- žádné odkazy ---</p></translation>
+        <translation type="obsolete"><p>--- žádné odkazy ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="262"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="371"/>
         <source>Length: %1 %2</source>
-        <translation>Délka: %1 %2</translation>
+        <translation type="obsolete">Délka: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="378"/>
         <source>, %1%2 %3, %4%5 %6</source>
-        <translation>, %1%2 %3, %4%5 %6</translation>
+        <translation type="obsolete">, %1%2 %3, %4%5 %6</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="386"/>
         <source>Time: %1</source>
-        <translation>Čas: %1</translation>
+        <translation type="obsolete">Čas: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="389"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="399"/>
         <source>, Speed: %1 %2</source>
-        <translation>, Rychlost: %1 %2</translation>
+        <translation type="obsolete">, Rychlost: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="396"/>
         <source>Moving: %1</source>
-        <translation>Pohyb: %1</translation>
+        <translation type="obsolete">Pohyb: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="405"/>
         <source>Start: %1</source>
-        <translation>Začátek: %1</translation>
+        <translation type="obsolete">Začátek: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="410"/>
         <source>End: %1</source>
-        <translation>Konec: %1</translation>
+        <translation type="obsolete">Konec: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="414"/>
         <source>Points: %1 (%2)</source>
-        <translation>Body: %1 (%2)</translation>
+        <translation type="obsolete">Body: %1 (%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="523"/>
         <source>Ele.: %1 %2</source>
-        <translation>Výška: %1 %2</translation>
+        <translation type="obsolete">Výška: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="526"/>
         <source> slope: %1%3 (%2%)</source>
-        <translation> sklon: %1%3 (%2%)</translation>
+        <translation type="obsolete"> sklon: %1%3 (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="559"/>
         <source>... and %1 tags not displayed</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">... a %1 značek nezobrazeno</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="625"/>
         <source>Ascend: %1%2</source>
-        <translation>Stoupání: %1%2</translation>
+        <translation type="obsolete">Stoupání: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="630"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="647"/>
         <source>, %1%2</source>
-        <translation>, %1%2</translation>
+        <translation type="obsolete">, %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="635"/>
         <source>Ascend: -</source>
-        <translation>Stoupání: -</translation>
+        <translation type="obsolete">Stoupání: -</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="642"/>
         <source> Descend: %1%2</source>
-        <translation> Klesání: %1%2</translation>
+        <translation type="obsolete"> Klesání: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="652"/>
         <source>Descend: -</source>
-        <translation>Klesání: -</translation>
+        <translation type="obsolete">Klesání: -</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="658"/>
         <source>Dist.: %1%2</source>
-        <translation>Vzdál.: %1%2</translation>
+        <translation type="obsolete">Vzdál.: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="663"/>
         <source> Time: %1%2</source>
-        <translation> Čas: %1%2</translation>
+        <translation type="obsolete"> Čas: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1307"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1331"/>
         <source>Permanently removed points %1..%2</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Trvale odstraněné body %1 ... %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1513"/>
         <source>Hide points.</source>
-        <translation>Skrýt body.</translation>
+        <translation type="obsolete">Skrýt body.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1553"/>
         <source>Show points.</source>
-        <translation>Ukázat body.</translation>
+        <translation type="obsolete">Ukázat body.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2088"/>
         <source>Changed activity to '%1' for complete track.</source>
-        <translation>Činnost byla pro celou stopu změněna na '%1'.</translation>
+        <translation type="obsolete">Činnost byla pro celou stopu změněna na '%1'.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2163"/>
         <source>Changed activity to '%1' for range(%2..%3).</source>
-        <translation>Činnost byla změněna pro oblast (%2..%3) na '%1'.</translation>
+        <translation type="obsolete">Činnost byla změněna pro oblast (%2..%3) na '%1'.</translation>
     </message>
     <message>
         <source> slope: %1°(%2%)</source>
         <translation type="obsolete"> sklon: %1°(%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="531"/>
         <source> speed: %1%2</source>
-        <translation> rychlost: %1%2</translation>
+        <translation type="obsolete"> rychlost: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="571"/>
         <source>Ascend: %1%2 (%3%)</source>
-        <translation>Stoupání: %1%2 (%3%)</translation>
+        <translation type="obsolete">Stoupání: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="575"/>
         <source>Ascend: - (-)</source>
-        <translation>Stoupání: - (-)</translation>
+        <translation type="obsolete">Stoupání: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="585"/>
         <source> Descend: - (-) </source>
-        <translation> Klesání: - (-) </translation>
+        <translation type="obsolete"> Klesání: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="606"/>
         <source> Moving: - (-) </source>
-        <translation> Pohyb: - (-) </translation>
+        <translation type="obsolete"> Pohyb: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="581"/>
         <source> Descend: %1%2 (%3%)</source>
-        <translation> Klesání: %1%2 (%3%) </translation>
+        <translation type="obsolete"> Klesání: %1%2 (%3%) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="249"/>
         <source>Changed trackpoints, sacrificed all previous data.</source>
-        <translation>Změněny body stop. Obětována veškerá předchozí data.</translation>
+        <translation type="obsolete">Změněny body stop. Obětována veškerá předchozí data.</translation>
     </message>
     <message>
         <source> slope: %1° (%2%)</source>
         <translation type="obsolete"> sklon: %1° (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="592"/>
         <source>Dist.: %1%2 (%3%)</source>
-        <translation>Vzdálenost: %1%2 (%3%)</translation>
+        <translation type="obsolete">Vzdálenost: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="596"/>
         <source>Dist.: - (-)</source>
-        <translation>Vzdálenost: - (-)</translation>
+        <translation type="obsolete">Vzdálenost: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="602"/>
         <source> Moving: %1%2 (%3%)</source>
-        <translation> Pohyb: %1%2 (%3%) </translation>
+        <translation type="obsolete"> Pohyb: %1%2 (%3%) </translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="96"/>
         <source>thin</source>
-        <translation>Tenký</translation>
+        <translation type="obsolete">Tenký</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="97"/>
         <source>normal</source>
-        <translation>Obvyklý</translation>
+        <translation type="obsolete">Obvyklý</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="98"/>
         <source>wide</source>
-        <translation>Široký</translation>
+        <translation type="obsolete">Široký</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="99"/>
         <source>strong</source>
-        <translation>Silný</translation>
+        <translation type="obsolete">Silný</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="138"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="63"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="124"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="92"/>
         <source>_Clone</source>
-        <translation>_Klon</translation>
+        <translation type="obsolete">_Klon</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="431"/>
         <source>Area: %1%2</source>
-        <translation>Oblast: %1%2</translation>
+        <translation type="obsolete">Oblast: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="493"/>
         <source>Changed area shape.</source>
-        <translation>Změněn tvar oblasti.</translation>
+        <translation type="obsolete">Změněn tvar oblasti.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="501"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="221"/>
         <source>Changed name.</source>
-        <translation>Změněn název.</translation>
+        <translation type="obsolete">Změněn název.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="507"/>
         <source>Changed border width.</source>
-        <translation>Změněna šířka okraje.</translation>
+        <translation type="obsolete">Změněna šířka okraje.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="513"/>
         <source>Changed fill pattern.</source>
-        <translation>Změněn vzor výplně.</translation>
+        <translation type="obsolete">Změněn vzor výplně.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="519"/>
         <source>Changed opacity.</source>
-        <translation>Změněna neprůhlednost.</translation>
+        <translation type="obsolete">Změněna neprůhlednost.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="525"/>
         <source>Changed comment.</source>
-        <translation>Změněna poznámka.</translation>
+        <translation type="obsolete">Změněna poznámka.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="531"/>
         <source>Changed description.</source>
-        <translation>Změněn popis.</translation>
+        <translation type="obsolete">Změněn popis.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="537"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="239"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2059"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="366"/>
         <source>Changed links</source>
-        <translation>Změněné odkazy</translation>
+        <translation type="obsolete">Změněné odkazy</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="549"/>
         <source>Changed color</source>
-        <translation>Změněná barva</translation>
+        <translation type="obsolete">Změněná barva</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="227"/>
         <source>Elevation: %1 %2</source>
-        <translation>Výška: %1 %2</translation>
+        <translation type="obsolete">Výška: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="238"/>
         <source>Proximity: %1 %2</source>
-        <translation>Blízkost: %1 %2</translation>
+        <translation type="obsolete">Blízkost: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2041"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="312"/>
         <source>Changed name</source>
-        <translation>Změněný název</translation>
+        <translation type="obsolete">Změněný název</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1245"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1264"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1340"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1399"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1578"/>
-        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
-        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
         <source>Edit name...</source>
-        <translation>Upravit název...</translation>
+        <translation type="obsolete">Upravit název...</translation>
     </message>
     <message>
         <source>Enter new waypoint name.</source>
         <translation type="obsolete">Zadat nový název pro cestovní bod.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="322"/>
         <source>Changed position</source>
-        <translation>Změněná poloha</translation>
+        <translation type="obsolete">Změněná poloha</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="328"/>
         <source>Changed elevation</source>
-        <translation>Změněná výška</translation>
+        <translation type="obsolete">Změněná výška</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="334"/>
         <source>Changed proximity</source>
-        <translation>Změněná blízkost</translation>
+        <translation type="obsolete">Změněná blízkost</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="348"/>
         <source>Changed icon</source>
-        <translation>Změněná ikona</translation>
+        <translation type="obsolete">Změněná ikona</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="372"/>
         <source>Changed images</source>
-        <translation>Změněné obrázky</translation>
+        <translation type="obsolete">Změněné obrázky</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="378"/>
         <source>Add image</source>
-        <translation>Přidat obrázek</translation>
+        <translation type="obsolete">Přidat obrázek</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="227"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2047"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="354"/>
         <source>Changed comment</source>
-        <translation>Změněná poznámka</translation>
+        <translation type="obsolete">Změněná poznámka</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="233"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2053"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="360"/>
         <source>Changed description</source>
-        <translation>Změněný popis</translation>
+        <translation type="obsolete">Změněný popis</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="266"/>
         <source>Length: -</source>
-        <translation>Délka: -</translation>
+        <translation type="obsolete">Délka: -</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="273"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="456"/>
         <source>Time: %1 %2</source>
-        <translation>Čas: %1 %2</translation>
+        <translation type="obsolete">Čas: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="458"/>
         <source>Distance: %1 %2</source>
-        <translation>Vzdálenost: %1 %2</translation>
+        <translation type="obsolete">Vzdálenost: %1 %2</translation>
     </message>
     <message>
         <source>Time: %2 days %1</source>
         <translation type="obsolete">Výsledný čas: %2 dnů %1</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="277"/>
         <source>Time: -</source>
-        <translation>Výsledný čas: -</translation>
+        <translation type="obsolete">Výsledný čas: -</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="283"/>
         <source>Last time routed:<br/>%1</source>
-        <translation>Poslední spočítání cesty:<br/>%1</translation>
+        <translation type="obsolete">Poslední spočítání cesty:<br/>%1</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="285"/>
         <source>with %1</source>
-        <translation>s %1</translation>
+        <translation type="obsolete">s %1</translation>
     </message>
     <message>
         <source>Calculation took %1 sec.</source>
         <translation type="obsolete">Výpočet trval %1 s.</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="572"/>
         <source>Changed route points.</source>
-        <translation>Změněné body cesty.</translation>
+        <translation type="obsolete">Změněné body cesty.</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="582"/>
         <source>Archived</source>
-        <translation>Archivováno</translation>
+        <translation type="obsolete">Archivováno</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="586"/>
         <source>Available</source>
-        <translation>Dostupné</translation>
+        <translation type="obsolete">Dostupné</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="590"/>
         <source>Not Available</source>
-        <translation>Nedostupné</translation>
+        <translation type="obsolete">Nedostupné</translation>
+    </message>
+    <message>
+        <source>Unknown</source>
+        <translation type="obsolete">Neznámý</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
         <source>Warning...</source>
-        <translation>Varování...</translation>
+        <translation type="obsolete">Varování...</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
         <source>This is a typ file with unknown polygon encoding. Please report!</source>
-        <translation>Toto je souborový typ s neznámým druhem mnohoúhelníku. Nahlašte to, prosím!</translation>
+        <translation type="obsolete">Toto je souborový typ s neznámým druhem mnohoúhelníku. Nahlašte to, prosím!</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
         <source>This is a typ file with unknown polyline encoding. Please report!</source>
-        <translation>Toto je souborový typ s neznámým druhem čáry. Nahlašte to, prosím!</translation>
+        <translation type="obsolete">Toto je souborový typ s neznámým druhem čáry. Nahlašte to, prosím!</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1245"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1264"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1340"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1399"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1578"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
         <source>Enter new track name.</source>
-        <translation>Zadat název nové stopy.</translation>
+        <translation type="obsolete">Zadat název nové stopy.</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
         <source>Enter new area name.</source>
-        <translation>Zadat název nové oblasti.</translation>
+        <translation type="obsolete">Zadat název nové oblasti.</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderDatabase.cpp" line="28"/>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="30"/>
         <source>All your data grouped by folders.</source>
-        <translation>Všechna data seskupená podle složek.</translation>
+        <translation type="obsolete">Všechna data seskupená podle složek.</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="66"/>
-        <location filename="../gis/db/CLostFoundProject.cpp" line="39"/>
         <source>Lost & Found</source>
-        <translation>Ztraceno a nalezeno</translation>
+        <translation type="obsolete">Ztraceno a nalezeno</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="61"/>
         <source>Lost & Found (%1)</source>
-        <translation>Ztraceno a nalezeno (%1)</translation>
+        <translation type="obsolete">Ztraceno a nalezeno (%1)</translation>
     </message>
     <message>
-        <location filename="../qlgt/converter.cpp" line="198"/>
         <source>Copy flag information from QLandkarte GT track</source>
-        <translation>Kopírovat informační příznak ze stopy QLandkarte GT</translation>
+        <translation type="obsolete">Kopírovat informační příznak ze stopy QLandkarte GT</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="163"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="217"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="264"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="290"/>
         <source>Corrupt track ...</source>
-        <translation>Poškozená stopa...</translation>
+        <translation type="obsolete">Poškozená stopa...</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="163"/>
         <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
-        <translation>Počet bodů stopy neodpovídá počtu bodů stopy cvičebních dat.</translation>
+        <translation type="obsolete">Počet bodů stopy neodpovídá počtu bodů stopy cvičebních dat.</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="217"/>
         <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
-        <translation>Počet bodů stopy neodpovídá počtu rozšířených bodů stopy.</translation>
+        <translation type="obsolete">Počet bodů stopy neodpovídá počtu rozšířených bodů stopy.</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="264"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="290"/>
         <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
-        <translation>Počet bodů stopy neodpovídá počtu stínových bodů stopy.</translation>
+        <translation type="obsolete">Počet bodů stopy neodpovídá počtu stínových bodů stopy.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="106"/>
         <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
-        <translation>Skrýt body pomocí algoritmu Douglas Peuker (%1%2)</translation>
+        <translation type="obsolete">Skrýt body pomocí algoritmu Douglas Peuker (%1%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="141"/>
         <source>Hide points with invalid coordinates at the beginning of the track</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Skrýt body s neplatnými souřadnicemi na začátku stopy</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="157"/>
         <source>Reset all hidden track points to visible</source>
-        <translation>Nastavit znovu všechny skryté body stopy na viditelné</translation>
+        <translation type="obsolete">Nastavit znovu všechny skryté body stopy na viditelné</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="191"/>
         <source>Permanently removed all hidden track points</source>
-        <translation>Všechny skryté body stopy odstraněny trvale</translation>
+        <translation type="obsolete">Všechny skryté body stopy odstraněny trvale</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="241"/>
         <source>Smoothed profile with a Median filter of size %1</source>
-        <translation>Profil vyhlazen středovým filtrem o velikosti %1</translation>
+        <translation type="obsolete">Profil vyhlazen středovým filtrem o velikosti %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="277"/>
         <source>Replaced elevation data with data from DEM files.</source>
-        <translation>Výšková data nahrazena daty ze souborů s digitálním výškovým modelem.</translation>
+        <translation type="obsolete">Výšková data nahrazena daty ze souborů s digitálním výškovým modelem.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="300"/>
         <source>Offset elevation data by %1%2.</source>
-        <translation>Výšková data posunuta o %1%2.</translation>
+        <translation type="obsolete">Výšková data posunuta o %1%2.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="319"/>
         <source>Changed start of track to %1.</source>
-        <translation>Začátek stopy změněn na %1.</translation>
+        <translation type="obsolete">Začátek stopy změněn na %1.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="338"/>
         <source>Remove timestamps.</source>
-        <translation>Odstranit časová razítka.</translation>
+        <translation type="obsolete">Odstranit časová razítka.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="361"/>
         <source>Set artificial timestamps with delta of %1 sec.</source>
-        <translation>Uměle utvořená časová razítka nastavena s odstupem %1 s.</translation>
+        <translation type="obsolete">Uměle utvořená časová razítka nastavena s odstupem %1 s.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="394"/>
         <source>Changed speed to %1%2.</source>
-        <translation>Rychlost změněna na %1%2.</translation>
+        <translation type="obsolete">Rychlost změněna na %1%2.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1098"/>
         <source>Delete project...</source>
-        <translation>Smazat projekt...</translation>
+        <translation type="obsolete">Smazat projekt...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1098"/>
         <source>Do you really want to delete %1?</source>
-        <translation>Opravdu chcete smazat %1?</translation>
+        <translation type="obsolete">Opravdu chcete smazat %1?</translation>
     </message>
     <message>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
-        <location filename="../gis/tnv/serialization.cpp" line="211"/>
-        <location filename="../gis/tnv/serialization.cpp" line="347"/>
-        <location filename="../gis/tnv/serialization.cpp" line="376"/>
-        <location filename="../gis/tnv/serialization.cpp" line="387"/>
-        <location filename="../gis/tnv/serialization.cpp" line="420"/>
-        <location filename="../gis/tnv/serialization.cpp" line="560"/>
-        <location filename="../gis/tnv/serialization.cpp" line="588"/>
-        <location filename="../gis/tnv/serialization.cpp" line="599"/>
-        <location filename="../gis/tnv/serialization.cpp" line="617"/>
-        <location filename="../gis/tnv/serialization.cpp" line="645"/>
-        <location filename="../gis/tnv/serialization.cpp" line="719"/>
         <source>Error...</source>
-        <translation>Chyba...</translation>
+        <translation type="obsolete">Chyba...</translation>
     </message>
     <message>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
-        <location filename="../gis/tnv/serialization.cpp" line="211"/>
-        <location filename="../gis/tnv/serialization.cpp" line="347"/>
-        <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <source>Failed to open %1.</source>
-        <translation>Nepodařilo se otevřít %1.</translation>
+        <translation type="obsolete">Nepodařilo se otevřít %1.</translation>
     </message>
     <message>
-        <location filename="../gis/tnv/serialization.cpp" line="376"/>
-        <location filename="../gis/tnv/serialization.cpp" line="387"/>
-        <location filename="../gis/tnv/serialization.cpp" line="588"/>
-        <location filename="../gis/tnv/serialization.cpp" line="599"/>
         <source>Only support lon/lat WGS 84 format.</source>
-        <translation>Jako formát je podporován jen lon/lat WGS 84.</translation>
+        <translation type="obsolete">Jako formát je podporován jen lon/lat WGS 84.</translation>
     </message>
     <message>
-        <location filename="../gis/tnv/serialization.cpp" line="420"/>
-        <location filename="../gis/tnv/serialization.cpp" line="617"/>
-        <location filename="../gis/tnv/serialization.cpp" line="645"/>
-        <location filename="../gis/tnv/serialization.cpp" line="719"/>
         <source>Failed to read data.</source>
-        <translation>Nepodařilo se přečíst data.</translation>
+        <translation type="obsolete">Nepodařilo se přečíst data.</translation>
     </message>
     <message>
-        <location filename="../device/CDeviceGarmin.cpp" line="204"/>
         <source>Picture%1</source>
-        <translation>Obrázek %1</translation>
+        <translation type="obsolete">Obrázek %1</translation>
     </message>
     <message>
-        <location filename="../device/IDevice.cpp" line="204"/>
         <source>There is another project with the same name. If you press 'ok' it will be removed and replaced.</source>
-        <translation>Je jiný projekt se stejným názvem. Pokud stisknete OK, bude odstraněn a nahrazen.</translation>
+        <translation type="obsolete">Je jiný projekt se stejným názvem. Pokud stisknete OK, bude odstraněn a nahrazen.</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
-        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
         <source>Enter new route name.</source>
-        <translation>Zadat nový název pro cestu.</translation>
+        <translation type="obsolete">Zadat nový název pro cestu.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="28"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="94"/>
         <source>Foot</source>
-        <translation>Chodec</translation>
+        <translation type="obsolete">Chodec</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="35"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="95"/>
         <source>Bicycle</source>
-        <translation>Jízdní kolo</translation>
+        <translation type="obsolete">Jízdní kolo</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="42"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="96"/>
         <source>Motor Bike</source>
-        <translation>Motocykl</translation>
+        <translation type="obsolete">Motocykl</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="49"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="97"/>
         <source>Car</source>
-        <translation>Auto</translation>
+        <translation type="obsolete">Auto</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="56"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="98"/>
         <source>Cable Car</source>
-        <translation>Lanovka</translation>
+        <translation type="obsolete">Lanovka</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="63"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="99"/>
         <source>Swim</source>
-        <translation>Plavání</translation>
+        <translation type="obsolete">Plavání</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="70"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="100"/>
         <source>Ship</source>
-        <translation>Loď</translation>
+        <translation type="obsolete">Loď</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="77"/>
         <source>Aeronautik</source>
-        <translation>Vzduchoplavba</translation>
+        <translation type="obsolete">Vzduchoplavba</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="101"/>
         <source>Aeronautics</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Letectví</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="210"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="254"/>
         <source>Distance:</source>
-        <translation>Vzdálenost:</translation>
+        <translation type="obsolete">Vzdálenost:</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="212"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="276"/>
         <source>Ascend:</source>
-        <translation>Stoupání:</translation>
+        <translation type="obsolete">Stoupání:</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="214"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="298"/>
         <source>Descend:</source>
-        <translation>Klesání:</translation>
+        <translation type="obsolete">Klesání:</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="216"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="320"/>
         <source>Speed Moving:</source>
-        <translation>Rychlost při pohybu:</translation>
+        <translation type="obsolete">Rychlost při pohybu:</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="218"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="342"/>
         <source>Speed Total:</source>
-        <translation>Celková rychlost:</translation>
+        <translation type="obsolete">Celková rychlost:</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="220"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="364"/>
         <source>Time Moving:</source>
-        <translation>Čas při pohybu:</translation>
+        <translation type="obsolete">Čas při pohybu:</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="222"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="386"/>
         <source>Time Total:</source>
-        <translation>Celkový čas:</translation>
+        <translation type="obsolete">Celkový čas:</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="53"/>
         <source>Progress</source>
-        <translation type="unfinished">Postup</translation>
+        <translation type="obsolete">Postup</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="56"/>
         <source>time</source>
-        <translation type="unfinished">Čas</translation>
+        <translation type="obsolete">Čas</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="57"/>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="82"/>
         <source>distance [%1]</source>
-        <translation type="unfinished">Vzdálenost [%1]</translation>
+        <translation type="obsolete">Vzdálenost [%1]</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="57"/>
         <source>Slope (directed)</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Sklon (doporučený)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="62"/>
         <source>Speed</source>
-        <translation type="unfinished">Rychlost</translation>
+        <translation type="obsolete">Rychlost</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="67"/>
         <source>Elevation</source>
-        <translation type="unfinished">Výška</translation>
+        <translation type="obsolete">Výška</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="74"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="100"/>
         <source>Heart Rate</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Tep srdce</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="79"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="105"/>
         <source>Cadence</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Rychlost chůze</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="84"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="110"/>
         <source>Air Temperature</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Teplota vzduchu</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="89"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="115"/>
         <source>Water Temperature</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Teplota vody</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="94"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="120"/>
         <source>Depth</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Hloubka</translation>
     </message>
 </context>
 </TS>
diff --git a/src/locale/qmapshack_de.desktop b/src/locale/qmapshack_de.desktop
new file mode 100644
index 0000000..0d838cf
--- /dev/null
+++ b/src/locale/qmapshack_de.desktop
@@ -0,0 +1,3 @@
+#Translations
+Name[de]=QMapShack
+GenericName[de]=GPS Daten- und Kartenverwaltung
diff --git a/src/locale/qmapshack_de.ts b/src/locale/qmapshack_de.ts
index 7f625d0..c3352bd 100644
--- a/src/locale/qmapshack_de.ts
+++ b/src/locale/qmapshack_de.ts
@@ -4,10 +4,6 @@
 <context>
     <name>CAbout</name>
     <message>
-        <source>API Version %1 (expected %2)</source>
-        <translation type="vanished">API Version %1 (erwartet wird %2)</translation>
-    </message>
-    <message>
         <location filename="../CAbout.cpp" line="38"/>
         <source>%1 (API V%2, expected V%3)</source>
         <translation>%1 (API V%2, erwartet wird V%3)</translation>
@@ -19,11 +15,110 @@
     </message>
 </context>
 <context>
-    <name>CCanvas</name>
+    <name>CActivityTrk</name>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="29"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="117"/>
+        <source>Foot</source>
+        <translation>Fußgänger</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="37"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="118"/>
+        <source>Bicycle</source>
+        <translation>Fahrrad</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="45"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="119"/>
+        <source>Motor Bike</source>
+        <translation>Motorrad</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="53"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="120"/>
+        <source>Car</source>
+        <translation>Auto</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="61"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="121"/>
+        <source>Cable Car</source>
+        <translation>Seilbahn</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="69"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="122"/>
+        <source>Swim</source>
+        <translation>Schwimmen</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="77"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="123"/>
+        <source>Ship</source>
+        <translation>Schiff</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="85"/>
+        <source>Aeronautik</source>
+        <translation>Luftfahrt</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="93"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="125"/>
+        <source>Ski/Winter</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="124"/>
+        <source>Aeronautics</source>
+        <translation>Aeronautik</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="261"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="305"/>
+        <source>Distance:</source>
+        <translation>Entfernung:</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="263"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="327"/>
+        <source>Ascend:</source>
+        <translation>Anstieg:</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="265"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="349"/>
+        <source>Descend:</source>
+        <translation>Abstieg:</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="267"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="371"/>
+        <source>Speed Moving:</source>
+        <translation>Geschwindigkeit in Bewegung:</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="269"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="393"/>
+        <source>Speed Total:</source>
+        <translation>Geschwindigkeit insgesamt:</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="271"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="415"/>
+        <source>Time Moving:</source>
+        <translation>Zeit in Bewegung:</translation>
+    </message>
     <message>
-        <source>Workspace %1</source>
-        <translation type="obsolete">Ansicht %1</translation>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="273"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="437"/>
+        <source>Time Total:</source>
+        <translation>Zeit insgesamt:</translation>
     </message>
+</context>
+<context>
+    <name>CCanvas</name>
     <message>
         <location filename="../canvas/CCanvas.cpp" line="59"/>
         <source>View %1</source>
@@ -31,6 +126,14 @@
     </message>
 </context>
 <context>
+    <name>CColorChooser</name>
+    <message>
+        <location filename="../widgets/CColorChooser.cpp" line="51"/>
+        <source>Esc.</source>
+        <translation>Esc</translation>
+    </message>
+</context>
+<context>
     <name>CCommandProcessor</name>
     <message>
         <location filename="../helpers/CCommandProcessor.cpp" line="31"/>
@@ -53,11 +156,6 @@
         <translation>Datei mit QMapShack Einstellungen.</translation>
     </message>
     <message>
-        <source>File with qmapshark configuration.</source>
-        <translatorcomment>??? qmapshack statt qmapshark im Ursprungstext, IMO</translatorcomment>
-        <translation type="vanished">Datei mit QMapShak Einstellungen.</translation>
-    </message>
-    <message>
         <location filename="../helpers/CCommandProcessor.cpp" line="40"/>
         <source>file</source>
         <translation>Datei</translation>
@@ -69,14 +167,181 @@
     </message>
 </context>
 <context>
+    <name>CCreateRouteFromWpt</name>
+    <message>
+        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
+        <source>Edit name...</source>
+        <translation>Name bearbeiten...</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
+        <source>Enter new route name.</source>
+        <translation>Geben Sie einen neuen Namen für die Route ein.</translation>
+    </message>
+</context>
+<context>
+    <name>CDBFolderLostFound</name>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="30"/>
+        <source>All your data grouped by folders.</source>
+        <translation>Alle Daten nach Ordnern gruppiert.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="59"/>
+        <source>Lost & Found (%1)</source>
+        <translation>Verloren & Gefunden (%1)</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="64"/>
+        <source>Lost & Found</source>
+        <translation>Verloren & Gefunden</translation>
+    </message>
+</context>
+<context>
+    <name>CDBFolderMysql</name>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="32"/>
+        <source>All your data grouped by folders.</source>
+        <translation>Alle Daten nach Ordnern gruppiert.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="52"/>
+        <source>MySQL Database</source>
+        <translation>MySQL Datenbank</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="55"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="59"/>
+        <source>Server: </source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="64"/>
+        <source> (No PW)</source>
+        <translation> (Kein Passwort)</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="72"/>
+        <source>Error: </source>
+        <translation>Fehler:</translation>
+    </message>
+</context>
+<context>
+    <name>CDBFolderSqlite</name>
+    <message>
+        <location filename="../gis/db/CDBFolderSqlite.cpp" line="28"/>
+        <source>All your data grouped by folders.</source>
+        <translation>Alle Daten nach Ordnern gruppiert.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderSqlite.cpp" line="46"/>
+        <source>SQLite Database</source>
+        <translation>SQLite Databank</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderSqlite.cpp" line="56"/>
+        <source>File: </source>
+        <translation>Datei: </translation>
+    </message>
+</context>
+<context>
+    <name>CDBItem</name>
+    <message>
+        <location filename="../gis/db/CDBItem.cpp" line="87"/>
+        <source>%1 min.</source>
+        <translation>%1 min</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBItem.cpp" line="91"/>
+        <source>%1 h</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBItem.cpp" line="95"/>
+        <source>%1 days</source>
+        <translation>%1 Tage</translation>
+    </message>
+</context>
+<context>
+    <name>CDBProject</name>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="195"/>
+        <source>The item %1 has been changed by %2 (%3). 
+
+To solve this conflict you can create and save a clone, force your version or drop your version and take the one from the database</source>
+        <translation>Das Element %1 wurde durch %2 (%3) geändert. 
+
+Um den Konflikt zu lösen, erstellen und speichern Sie einen Klon, erzwingen Ihre Version oder verwerfen diese und nehmen die Version in der Datenbank</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="201"/>
+        <source>Conflict with database...</source>
+        <translation>Konflikt mit der Datenbank...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="202"/>
+        <source>Clone && Save</source>
+        <translation>Klonen && Speichern</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="203"/>
+        <source>Force Save</source>
+        <translation>Speichern erzwingen</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="204"/>
+        <source>Take remote</source>
+        <translation>Entfernte Version nehmen</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="507"/>
+        <source>Missing folder...</source>
+        <translation>Fehlender Ordner...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="508"/>
+        <source>Failed to save project. The folder has been deleted in the database.</source>
+        <translation>Speichern des Projektes fehlgeschlagen. Der Ordner wurde in der Datenbank gelöscht.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="517"/>
+        <source>Save ...</source>
+        <translation>Speichern ...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <source>Error</source>
+        <translation>Fehler</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <source>There was an unexpected database error:
+
+%1</source>
+        <translation>Da war ein unerwarterter Datenbankfehler:
+
+%1</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="704"/>
+        <source>The project '%1' is about to update itself from the database. However there are changes not saved.</source>
+        <translation>Das Projekt '%1' will sich gerade aus der Datenbank aktualisieren. Es gibt allerdings nicht gespeicherte Änderungen.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="705"/>
+        <source>Save changes?</source>
+        <translation>Änderungen speichern?</translation>
+    </message>
+</context>
+<context>
     <name>CDemList</name>
     <message>
-        <location filename="../dem/CDemList.cpp" line="145"/>
+        <location filename="../dem/CDemList.cpp" line="198"/>
         <source>Deactivate</source>
         <translation>Deaktivieren</translation>
     </message>
     <message>
-        <location filename="../dem/CDemList.cpp" line="145"/>
+        <location filename="../dem/CDemList.cpp" line="198"/>
         <source>Activate</source>
         <translation>Aktivieren</translation>
     </message>
@@ -95,19 +360,12 @@
     </message>
 </context>
 <context>
-    <name>CDemPropSetup</name>
-    <message>
-        <source><b>Grade %1</b></source>
-        <translation type="vanished"><b>Stufe %1</b></translation>
-    </message>
-</context>
-<context>
     <name>CDemVRT</name>
     <message>
         <location filename="../dem/CDemVRT.cpp" line="44"/>
         <location filename="../dem/CDemVRT.cpp" line="52"/>
-        <location filename="../dem/CDemVRT.cpp" line="62"/>
-        <location filename="../dem/CDemVRT.cpp" line="91"/>
+        <location filename="../dem/CDemVRT.cpp" line="61"/>
+        <location filename="../dem/CDemVRT.cpp" line="90"/>
         <source>Error...</source>
         <translation>Fehler...</translation>
     </message>
@@ -118,16 +376,12 @@
     </message>
     <message>
         <location filename="../dem/CDemVRT.cpp" line="52"/>
-        <location filename="../dem/CDemVRT.cpp" line="62"/>
+        <location filename="../dem/CDemVRT.cpp" line="61"/>
         <source>DEM must have one band with 16bit or 32bit data.</source>
         <translation>DEM muss aus einem Satz mit 16 bit oder 32 bit Daten bestehen.</translation>
     </message>
     <message>
-        <source>DEM must have one band with 16 bit or 32 bit data.</source>
-        <translation type="obsolete">Das DEM muss aus einem Satz mit 16 bit oder 32 bit Daten bestehen.</translation>
-    </message>
-    <message>
-        <location filename="../dem/CDemVRT.cpp" line="91"/>
+        <location filename="../dem/CDemVRT.cpp" line="90"/>
         <source>No georeference information found.</source>
         <translation>Keine Georeferenzierung gefunden.</translation>
     </message>
@@ -157,5764 +411,5540 @@
     </message>
 </context>
 <context>
-    <name>CDetailsOvlArea</name>
-    <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="134"/>
-        <source>Edit name...</source>
-        <translation>Name bearbeiten...</translation>
-    </message>
-    <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="134"/>
-        <source>Enter new area name.</source>
-        <translation>Geben Sie einen neuen Namen für das Gebiet ein.</translation>
-    </message>
-    <message>
-        <source>Enter new waypoint name.</source>
-        <translation type="obsolete">Geben Sie einen neuen Namen für den Wegpunkt ein.</translation>
-    </message>
-    <message>
-        <source><h4>Comment:</h4></source>
-        <translation type="obsolete"><h4>Kommentar:</h4></translation>
-    </message>
-    <message>
-        <source><p>--- no comment ---</p></source>
-        <translation type="obsolete"><p>--- kein Kommentar ---</p></translation>
-    </message>
-    <message>
-        <source><h4>Description:</h4></source>
-        <translation type="obsolete"><h4>Beschreibung:</h4></translation>
-    </message>
-    <message>
-        <source><p>--- no description ---</p></source>
-        <translation type="obsolete"><p>--- keine Beschreibung ---</p></translation>
-    </message>
-</context>
-<context>
     <name>CDetailsPrj</name>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="247"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="687"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="270"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="738"/>
         <source>none</source>
         <translation>keine</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="320"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="343"/>
         <source>Build diary...</source>
         <translation>Tagebuch erstellen...</translation>
     </message>
     <message>
-        <source>Abort</source>
-        <translation type="obsolete">Abbrechen</translation>
-    </message>
-    <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="375"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="398"/>
         <source><b>Summary over all tracks in project</b><br/></source>
         <translation><b>Auswertung aller Tracks im Projekt</b><br/></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="395"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="446"/>
         <source><h2>Waypoints</h2></source>
         <translation><h2>Wegpunkte</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="402"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="428"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="532"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="622"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="652"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="453"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="479"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="583"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="673"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="703"/>
         <source>Info</source>
         <translation>Information</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="403"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="429"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="533"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="623"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="653"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="454"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="480"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="584"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="674"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="704"/>
         <source>Comment</source>
         <translation>Kommentar</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="421"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="472"/>
         <source><h2>Tracks</h2></source>
         <translation><h2>Tracks</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="615"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="666"/>
         <source><h2>Areas</h2></source>
         <translation><h2>Gebiete</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="101"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="126"/>
         <source>You want to sort waypoints along a track, but you switched off track and waypoint correlation. Do you want to switch it on again?</source>
-        <translation>Sie wollen Wegpunkte entlang eines Tracks sortieren, aber Sie haben die Verknüpfung von Wegpunkten und Tracks ausgeschaltet. Wollen Sie sie wieder anschalten?</translation>
+        <translation>Sie wollen Wegpunkte entlang eines Tracks sortieren, aber Sie haben die Verknüpfung von Wegpunkten und Tracks ausgeschaltet. Wollen Sie sie wieder einschalten?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="102"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="127"/>
         <source>Correlation...</source>
         <translation>Verknüpfungen...</translation>
     </message>
     <message>
-        <source>Total Distance:</source>
-        <translation type="vanished">Summe Entfernung:</translation>
-    </message>
-    <message>
-        <source>Total Ascend:</source>
-        <translation type="vanished">Summe Anstieg:</translation>
-    </message>
-    <message>
-        <source>Total Descend:</source>
-        <translation type="vanished">Summe Abstieg:</translation>
-    </message>
-    <message>
-        <source>Total Time:</source>
-        <translation type="vanished">Summe Zeit:</translation>
-    </message>
-    <message>
-        <source>Total Time Moving:</source>
-        <translation type="vanished">Summe Zeit in Bewegung:</translation>
-    </message>
-    <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="551"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="602"/>
         <source>distance: %1%2</source>
         <translation>Entfernung: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="553"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="604"/>
         <source>ascent: %1%2</source>
         <translation>Anstieg: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="555"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="606"/>
         <source>descend: %1%2</source>
         <translation>Abstieg: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="645"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="696"/>
         <source><h2>Routes</h2></source>
         <translation><h2>Routen</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="673"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="700"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="724"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="751"/>
         <source>Edit name...</source>
         <translation>Name bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="673"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="700"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="724"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="751"/>
         <source>Enter new project name.</source>
         <translation>Geben Sie einen neuen Namen für das Projekt ein.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="816"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="882"/>
         <source>Print Diary</source>
         <translation>Tagebuch drucken</translation>
     </message>
     <message>
-        <source>Enter new waypoint name.</source>
-        <translation type="obsolete">Name eingeben.</translation>
-    </message>
-    <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="682"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="733"/>
         <source>Edit keywords...</source>
         <translation>Stichwörter bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="682"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="733"/>
         <source>Enter keywords.</source>
         <translation>Stichwörter eingeben.</translation>
     </message>
 </context>
 <context>
-    <name>CDetailsRte</name>
-    <message>
-        <location filename="../gis/rte/CDetailsRte.cpp" line="119"/>
-        <source>Edit name...</source>
-        <translation>Name bearbeiten...</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/CDetailsRte.cpp" line="119"/>
-        <source>Enter new route name.</source>
-        <translation>Geben Sie einen neuen Namen für die Route ein.</translation>
-    </message>
-</context>
-<context>
     <name>CDetailsTrk</name>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="409"/>
-        <source>Solid color</source>
-        <translation>Feste Farbe</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="112"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="181"/>
         <source>Reduce visible track points</source>
         <translation>Sichtbare Trackpunkte reduzieren</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="128"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="184"/>
         <source>Change elevation of track points</source>
         <translation>Höhe von Trackpunkten ändern</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="141"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="187"/>
         <source>Change timestamp of track points</source>
         <translation>Zeitstempel von Trackpunkten ändern</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="154"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="190"/>
+        <source>Modify track points' extensions</source>
+        <translation>Erweiterung von Trackpunkten ändern</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="193"/>
         <source>Cut track into pieces</source>
         <translation>Track in Stücke teilen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="309"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="318"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="321"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="327"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="346"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="348"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="410"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="418"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="421"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="426"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="440"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="442"/>
         <source>%1 %2</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="603"/>
-        <source>Edit name...</source>
-        <translation>Name bearbeiten...</translation>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="507"/>
+        <source>Color</source>
+        <translation>Farbe</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="603"/>
-        <source>Enter new track name.</source>
-        <translation>Geben Sie einen neuen Namen für den Track ein.</translation>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="508"/>
+        <source>Activity</source>
+        <translation>Aktivität</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="655"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="741"/>
         <source>Reset activities...</source>
         <translation>Aktivitäten zurücksetzen...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="655"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="741"/>
         <source>This will remove all activities from the track. Proceed?</source>
         <translation>Dies wird alle Aktivitäten vom Track entfernen. Fortfahren?</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="661"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="747"/>
         <source>None</source>
         <translation>Keine</translation>
     </message>
+</context>
+<context>
+    <name>CDetailsWpt</name>
     <message>
-        <source><h4>Comment:</h4></source>
-        <translation type="obsolete"><h4>Kommentar:</h4></translation>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="166"/>
+        <source>Enter new proximity range.</source>
+        <translation>Geben Sie einen neuen Abstandsalarm ein.</translation>
     </message>
+</context>
+<context>
+    <name>CDeviceGarmin</name>
     <message>
-        <source><p>--- no comment ---</p></source>
-        <translation type="obsolete"><p>--- kein Kommentar ---</p></translation>
-    </message>
-    <message>
-        <source><h4>Description:</h4></source>
-        <translation type="obsolete"><h4>Beschreibung:</h4></translation>
+        <location filename="../device/CDeviceGarmin.cpp" line="255"/>
+        <source>Picture%1</source>
+        <translation>Bild %1</translation>
     </message>
     <message>
-        <source><p>--- no description ---</p></source>
-        <translation type="obsolete"><p>--- keine Beschreibung ---</p></translation>
+        <location filename="../gis/gpx/serialization.cpp" line="1039"/>
+        <source>Unknown</source>
+        <translation>Unbekannt</translation>
     </message>
 </context>
 <context>
-    <name>CDetailsWpt</name>
+    <name>CDeviceGarminArchive</name>
     <message>
-        <source>no comment</source>
-        <translation type="obsolete">kein Kommentar vorhanden</translation>
+        <location filename="../device/CDeviceGarminArchive.cpp" line="30"/>
+        <source>Archive - expand to load</source>
+        <translation>Archiv - zum Laden aufklappen</translation>
     </message>
     <message>
-        <source>no description</source>
-        <translation type="obsolete">keine Beschreibung vorhanden</translation>
+        <location filename="../device/CDeviceGarminArchive.cpp" line="43"/>
+        <source>Archive - loaded</source>
+        <translation>Archiv - geladen</translation>
     </message>
+</context>
+<context>
+    <name>CElevationDialog</name>
     <message>
-        <source><h4>Comment:</h4></source>
-        <translation type="obsolete"><h4>Kommentar:</h4></translation>
+        <location filename="../helpers/CElevationDialog.cpp" line="83"/>
+        <source>No DEM data found for that point.</source>
+        <translation>Keine DEM Daten für diesen Punkt gefunden.</translation>
     </message>
+</context>
+<context>
+    <name>CFilterDeleteExtension</name>
     <message>
-        <source><p>--- no comment ---</p></source>
-        <translation type="obsolete"><p>--- kein Kommentar ---</p></translation>
+        <location filename="../gis/trk/filter/CFilterDeleteExtension.cpp" line="61"/>
+        <source>No extension available</source>
+        <translation>Keine Erweiterung vorhanden</translation>
     </message>
+</context>
+<context>
+    <name>CFitCrcState</name>
     <message>
-        <source><h4>Description:</h4></source>
-        <translation type="obsolete"><h4>Beschreibung:</h4></translation>
+        <location filename="../gis/fit/decoder/CFitCrcState.cpp" line="32"/>
+        <source>FIT decoding error : invalid CRC.</source>
+        <translation>FIT Dekodierfehler: CRC ungültig.</translation>
     </message>
+</context>
+<context>
+    <name>CFitDecoder</name>
     <message>
-        <source><p>--- no description ---</p></source>
-        <translation type="obsolete"><p>--- keine Beschreibung ---</p></translation>
+        <location filename="../gis/fit/decoder/CFitDecoder.cpp" line="116"/>
+        <source>FIT decoding error: unexpected end of file %1.</source>
+        <translation>FIT Dekodierfehler: unerwartetes Ende der Datei %1.</translation>
     </message>
+</context>
+<context>
+    <name>CFitFieldBuilder</name>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="134"/>
-        <source>Edit name...</source>
-        <translation>Name bearbeiten...</translation>
+        <location filename="../gis/fit/decoder/CFitFieldBuilder.cpp" line="70"/>
+        <source>FIT decoding error: unknown base type %1.</source>
+        <translation>FIT Dekodierfehler: unbekannter Datentyp %1.</translation>
     </message>
+</context>
+<context>
+    <name>CFitHeaderState</name>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="134"/>
-        <source>Enter new waypoint name.</source>
-        <translation>Geben Sie einen neuen Namen für den Wegpunkt ein.</translation>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="70"/>
+        <source>FIT decoding error: protocol %1 version not supported.</source>
+        <translation>FIT Dekodierfehler: Protokollversion %1 wird nicht unterstützt.</translation>
     </message>
     <message>
-        <source>Enter new elevation.</source>
-        <translation type="obsolete">Geben Sie eine neue Höhe ein.</translation>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="121"/>
+        <source>FIT decoding error: file header signature mismatch. File is not FIT.</source>
+        <translation>FIT Dekodierfehler: Nicht übereinstimmende Dateikopfsignatur. Keine FIT Datei.</translation>
     </message>
+</context>
+<context>
+    <name>CFitProject</name>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="153"/>
-        <source>Enter new proximity range.</source>
-        <translation>Geben Sie einen neuen Abstandsalarm ein.</translation>
+        <location filename="../gis/fit/CFitProject.cpp" line="44"/>
+        <location filename="../gis/fit/CFitProject.cpp" line="62"/>
+        <source>Failed to load file %1...</source>
+        <translation>Datei %1 konnte nicht geladen werden...</translation>
+    </message>
+    <message>
+        <location filename="../gis/fit/CFitProject.cpp" line="86"/>
+        <source>Failed to open FIT file %1.</source>
+        <translation>Öffnen der FIT Datei %1 fehlgeschlagen.</translation>
     </message>
 </context>
 <context>
-    <name>CElevationDialog</name>
+    <name>CFitRecordContentState</name>
     <message>
-        <location filename="../helpers/CElevationDialog.cpp" line="83"/>
-        <source>No DEM data found for that point.</source>
-        <translation>Keine Höhendaten für diesen Punkt gefunden.</translation>
+        <location filename="../gis/fit/decoder/CFitRecordContentState.cpp" line="66"/>
+        <source>FIT decoding error: architecture %1 not supported.</source>
+        <translation>FIT Dekodierfehler: Architektur %1 wird nicht unterstützt.</translation>
+    </message>
+    <message>
+        <location filename="../gis/fit/decoder/CFitRecordContentState.cpp" line="87"/>
+        <source>FIT decoding error: invalid offset %1 for state 'record content'</source>
+        <translation>FIT Dekodierfehler: Ungültiger Offset %1 für Status 'aufgezeichneter Inhalt'</translation>
     </message>
 </context>
 <context>
-    <name>CGisListDB</name>
+    <name>CGarminTyp</name>
     <message>
-        <source>Lost & Found</source>
-        <translation type="obsolete">Verloren & Gefunden</translation>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
+        <source>Warning...</source>
+        <translation>Warnung...</translation>
     </message>
     <message>
-        <source>Database</source>
-        <translation type="obsolete">Datenbank</translation>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
+        <source>This is a typ file with unknown polygon encoding. Please report!</source>
+        <translation>Dieser Dateityp hat eine unbekannte Polygon Kodierung. Bitte mitteilen!</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="78"/>
-        <source>Add Folder</source>
-        <translation>Ordner hinzufügen</translation>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
+        <source>This is a typ file with unknown polyline encoding. Please report!</source>
+        <translation>Dieser Dateityp hat eine unbekannte Polyline Kodierung. Bitte mitteilen!</translation>
     </message>
+</context>
+<context>
+    <name>CGisItemOvlArea</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="79"/>
-        <source>Delete Folder</source>
-        <translation>Ordner löschen</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="36"/>
+        <source>thin</source>
+        <translation>dünn</translation>
     </message>
     <message>
-        <source>Delete</source>
-        <translation type="obsolete">Löschen</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="37"/>
+        <source>normal</source>
+        <translation>normal</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="75"/>
-        <source>Add Database</source>
-        <translation>Datenbank hinzufügen</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="38"/>
+        <source>wide</source>
+        <translation>breit</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="82"/>
-        <location filename="../gis/CGisListDB.cpp" line="92"/>
-        <source>Delete Item</source>
-        <translation>Element löschen</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="39"/>
+        <source>strong</source>
+        <translation>stark</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="86"/>
-        <source>Remove Database</source>
-        <translation>Datenbank entfernen</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="78"/>
+        <source>_Clone</source>
+        <translation>_Klon</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="89"/>
-        <source>Empty</source>
-        <translation>Leer</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="380"/>
+        <source>Area: %1%2</source>
+        <translation>Gebiet: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="281"/>
-        <source>Remove database...</source>
-        <translation>Datenbank entfernen...</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="442"/>
+        <source>Changed area shape.</source>
+        <translation>Gebietsform geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="281"/>
-        <source>Do you really want to remove '%1' from the list?</source>
-        <translation>Wollen Sie '%1' wirklich aus der Liste entfernen?</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="450"/>
+        <source>Changed name.</source>
+        <translation>Name geändert.</translation>
     </message>
     <message>
-        <source>Do you realy want to remove '%1' from the list?</source>
-        <translation type="vanished">Wollen Sie '%1' wirklich aus der Liste entfernen?</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="456"/>
+        <source>Changed border width.</source>
+        <translation>Umrandungsbreite geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="322"/>
-        <source>Delete database folder...</source>
-        <translation>Datenbankordner löschen...</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="462"/>
+        <source>Changed fill pattern.</source>
+        <translation>Füllung geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="322"/>
-        <source>Are you sure you want to delete "%1" from the database?</source>
-        <translation>Sind Sie sicher, dass Sie "%1" aus der Datenbank löschen wollen? </translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="468"/>
+        <source>Changed opacity.</source>
+        <translation>Durchsichtigkeit geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="348"/>
-        <location filename="../gis/CGisListDB.cpp" line="363"/>
-        <source>Remove items...</source>
-        <translation>Element entfernen...</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="474"/>
+        <source>Changed comment.</source>
+        <translation>Kommentar geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="348"/>
-        <source>Are you sure you want to delete all items from Lost&Found? This will remove them permanently.</source>
-        <translation>Sind Sie sicher, dass Sie alle Elemente in Verloren & Gefunden löschen wollen? Sie werden dauerhaft entfernt.</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="480"/>
+        <source>Changed description.</source>
+        <translation>Beschreibung geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="363"/>
-        <source>Are you sure you want to delete all selected items from Lost&Found? This will remove them permanently.</source>
-        <translation>Sind Sie sicher, dass Sie alle ausgewählten Elemente in Verloren & Gefunden löschen wollen? Sie werden dauerhaft entfernt.</translation>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="486"/>
+        <source>Changed links</source>
+        <translation>Geänderte Verknüpfungen</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="497"/>
+        <source>Changed color</source>
+        <translation>Farbe geändert</translation>
     </message>
 </context>
 <context>
-    <name>CGisListWks</name>
+    <name>CGisItemRte</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="101"/>
-        <source>Save</source>
-        <translation>Speichern</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="63"/>
+        <source>_Clone</source>
+        <translation>_Klon</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="102"/>
-        <source>Save As...</source>
-        <translation>Speichern unter...</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="249"/>
+        <source>Changed name.</source>
+        <translation>Name geändert.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="97"/>
-        <source>Edit..</source>
-        <translation>Bearbeiten..</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="255"/>
+        <source>Changed comment</source>
+        <translation>Kommentar geändert</translation>
     </message>
     <message>
-        <source>Update Project on Devices</source>
-        <translation type="obsolete">Aktualisiere das Projekt auf allen Geräten </translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="261"/>
+        <source>Changed description</source>
+        <translation>Beschreibung geändert</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="106"/>
-        <source>Close</source>
-        <translation>Schließen</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="267"/>
+        <source>Changed links</source>
+        <translation>Geänderte Verknüpfungen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="112"/>
-        <source>Update Project on Device</source>
-        <translation>Aktualisiere das Projekt auf dem Gerät</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="285"/>
+        <source>Length: %1 %2</source>
+        <translation>Länge: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="124"/>
-        <source>Edit...</source>
-        <translation>Bearbeiten...</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="289"/>
+        <source>Length: -</source>
+        <translation>Länge: -</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="125"/>
-        <source>Copy to...</source>
-        <translation>Kopieren nach...</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="296"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="479"/>
+        <source>Time: %1 %2</source>
+        <translation>Gesamtzeit: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="140"/>
-        <source>Show Bubble</source>
-        <translation>Infoblase anzeigen</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="300"/>
+        <source>Time: -</source>
+        <translation>Gesamtzeit: -</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="142"/>
-        <source>Move Waypoint</source>
-        <translation>Wegpunkt verschieben</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="306"/>
+        <source>Last time routed:<br/>%1</source>
+        <translation>Letzte Routenberechnung: <br/>%1</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="151"/>
-        <source>Route Instructions</source>
-        <translation>Navigationsanweisungen</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="308"/>
+        <source>with %1</source>
+        <translation>mit %1</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="153"/>
-        <source>Calculate Route</source>
-        <translation>Route berechnen</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="481"/>
+        <source>Distance: %1 %2</source>
+        <translation>Entfernung: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="154"/>
-        <source>Reset Route</source>
-        <translation>Route zurücksetzen</translation>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="595"/>
+        <source>Changed route points.</source>
+        <translation>Geänderte Routenpukte.</translation>
     </message>
+</context>
+<context>
+    <name>CGisItemTrk</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="155"/>
-        <source>Edit Route</source>
-        <translation>Route bearbeiten</translation>
+        <location filename="../gis/fit/serialization.cpp" line="188"/>
+        <source>FIT file %1 contains no GPS data.</source>
+        <translation>FIT Dekodierfehler: Datei enthält keine GPS Daten.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="171"/>
-        <source>Create Route</source>
-        <translation>Route erstellen</translation>
+        <location filename="../gis/tnv/serialization.cpp" line="211"/>
+        <location filename="../gis/tnv/serialization.cpp" line="347"/>
+        <location filename="../gis/tnv/serialization.cpp" line="376"/>
+        <location filename="../gis/tnv/serialization.cpp" line="387"/>
+        <location filename="../gis/tnv/serialization.cpp" line="420"/>
+        <source>Error...</source>
+        <translation>Fehler...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="613"/>
-        <source>Drop items...</source>
-        <translation>Elemente verwerfen...</translation>
+        <location filename="../gis/tnv/serialization.cpp" line="211"/>
+        <location filename="../gis/tnv/serialization.cpp" line="347"/>
+        <source>Failed to open %1.</source>
+        <translation>%1 konnte nicht geöffnet werden.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="638"/>
-        <location filename="../gis/CGisListWks.cpp" line="1544"/>
-        <location filename="../gis/CGisListWks.cpp" line="1582"/>
-        <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
-        <translation><b>Aktualisieren der Geräte</b><p>Aktualisiere %1<br/>Bitte warten...</p></translation>
+        <location filename="../gis/tnv/serialization.cpp" line="376"/>
+        <location filename="../gis/tnv/serialization.cpp" line="387"/>
+        <source>Only support lon/lat WGS 84 format.</source>
+        <translation>Es wird nur lon/lat WGS 84 als Format unterstützt.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1266"/>
-        <source>Copy items...</source>
-        <translation>Elemente kopieren...</translation>
+        <location filename="../gis/tnv/serialization.cpp" line="420"/>
+        <source>Failed to read data.</source>
+        <translation>Lesen der Daten fehlgeschlagen.</translation>
     </message>
     <message>
-        <source>Move Waypoint...</source>
-        <translation type="obsolete">Wegpunkt verschieben...</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="124"/>
+        <source>_Clone</source>
+        <translation>_Klon</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="143"/>
-        <source>Proj. Waypoint...</source>
-        <translation>Wegpunkt Projektion...</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="291"/>
+        <source>Changed trackpoints, sacrificed all previous data.</source>
+        <translation>Wegpunkte geändert, alle vorherigen Daten sind verloren.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="127"/>
-        <source>Track Profile</source>
-        <translation>Trackprofil</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="394"/>
+        <source>Length: %1 %2</source>
+        <translation>Länge: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
-        <source>Send to Devices</source>
-        <translation>Ans Gerät senden</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="401"/>
+        <source>, %1%2 %3, %4%5 %6</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Lock/Unlock</source>
-        <translation type="obsolete">Sperren/Entsperren</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="409"/>
+        <source>Time: %1</source>
+        <translation>Gesamtzeit: %1</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="129"/>
-        <source>Select Range</source>
-        <translation>Bereich wählen</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="412"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="422"/>
+        <source>, Speed: %1 %2</source>
+        <translation>, Geschw.: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="130"/>
-        <source>Edit Track Points</source>
-        <translation>Trackpunkte bearbeiten</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="419"/>
+        <source>Moving: %1</source>
+        <translation>Zeit in Bew.: %1</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="131"/>
-        <source>Reverse Track</source>
-        <translation>Track umkehren</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="428"/>
+        <source>Start: %1</source>
+        <translation>Beginn: %1</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="132"/>
-        <source>Combine Tracks</source>
-        <translation>Tracks verbinden</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="433"/>
+        <source>End: %1</source>
+        <translation>Ende: %1</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="164"/>
-        <source>Edit Area Points</source>
-        <translation>Gebietspunkte bearbeiten</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="437"/>
+        <source>Points: %1 (%2)</source>
+        <translation>Punkte: %1 von %2</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="113"/>
-        <location filename="../gis/CGisListWks.cpp" line="134"/>
-        <source>Delete</source>
-        <translation>Löschen</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="546"/>
+        <source>Ele.: %1 %2</source>
+        <translation>Höhe: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="98"/>
-        <source>Show on Map</source>
-        <translation>Auf der Karte anzeigen.</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="549"/>
+        <source> slope: %1%3 (%2%)</source>
+        <translation>, Neigung: %1%3 (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="99"/>
-        <source>Hide from Map</source>
-        <translation>Auf der Karte ausblenden.</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="554"/>
+        <source> speed: %1%2</source>
+        <translation>, Geschw.: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="740"/>
-        <source>Saving workspace. Please wait.</source>
-        <translation>Arbeitsplatz speichern. Bitte warten.</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="582"/>
+        <source>... and %1 tags not displayed</source>
+        <translation>... und %1 Tags werden nicht angezeigt</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="787"/>
-        <source>Loading workspace. Please wait.</source>
-        <translation>Arbeitsplatz laden. Bitte warten.</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="594"/>
+        <source>Ascend: %1%2 (%3%)</source>
+        <translation>Anstieg: %1 %2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1062"/>
-        <source>Close all projects...</source>
-        <translation>Alle Projekte schließen...</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="598"/>
+        <source>Ascend: - (-)</source>
+        <translation>Anstieg: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1062"/>
-        <source>This will remove all projects from the workspace.</source>
-        <translation>Dies wird alle Projekte aus dem Arbeitsplatz entfernen.</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="604"/>
+        <source> Descend: %1%2 (%3%)</source>
+        <translation>, Abstieg: %1 %2 (%3%)</translation>
     </message>
     <message>
-        <source>Add Empty Project</source>
-        <translation type="obsolete">Leeres Projekt hinzufügen</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="608"/>
+        <source> Descend: - (-) </source>
+        <translation>, Abstieg: - (-) </translation>
     </message>
     <message>
-        <source>New Project</source>
-        <translation type="obsolete">Neues Projekt</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="615"/>
+        <source>Dist.: %1%2 (%3%)</source>
+        <translation>Entf.: %1 %2 (%3%)</translation>
     </message>
-</context>
-<context>
-    <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="114"/>
-        <source>Load project...</source>
-        <translation>Lade Projekt...</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="619"/>
+        <source>Dist.: - (-)</source>
+        <translation>Entf.: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="114"/>
-        <source>The project "%1" is already in the workspace.</source>
-        <translation>Das Projekt "%1" ist schon im Arbeitsplatz geladen.</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="625"/>
+        <source> Moving: %1%2 (%3%)</source>
+        <translation>, Zeit in Bew.: %1 %2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="461"/>
-        <source>Cut Track...</source>
-        <translation>Track teilen...</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="629"/>
+        <source> Moving: - (-) </source>
+        <translation>, Zeit in Bew.: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="461"/>
-        <source>Do you want to delete the original track?</source>
-        <translation>Wollen Sie den ursprünglichen Track löschen?</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="648"/>
+        <source>Ascend: %1%2</source>
+        <translation>Anstieg: %1 %2</translation>
     </message>
-</context>
-<context>
-    <name>CGrid</name>
     <message>
-        <source>[Grid: %1] </source>
-        <translation type="obsolete">[Gitter: %1]</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="653"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="670"/>
+        <source>, %1%2</source>
+        <translation>, %1 %2</translation>
     </message>
     <message>
-        <source>[Grid: %1%2%5 %3%4%5] </source>
-        <translation type="obsolete">[Gitter: %1%2%5 %3%4%5] </translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="658"/>
+        <source>Ascend: -</source>
+        <translation>Anstieg: -</translation>
     </message>
     <message>
-        <source>[Grid: N %1m, E %2m] </source>
-        <translation type="obsolete">[Gitter: N %1m, E %2m]</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="665"/>
+        <source> Descend: %1%2</source>
+        <translation> Abstieg: %1 %2</translation>
     </message>
     <message>
-        <location filename="../grid/CGrid.cpp" line="61"/>
-        <source>%1 %2 </source>
-        <translation></translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="675"/>
+        <source>Descend: -</source>
+        <translation>Abstieg: -</translation>
     </message>
     <message>
-        <location filename="../grid/CGrid.cpp" line="65"/>
-        <source>%1%2%5 %3%4%5 </source>
-        <translation></translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="681"/>
+        <source>Dist.: %1%2</source>
+        <translation>Entf.: %1 %2</translation>
     </message>
     <message>
-        <location filename="../grid/CGrid.cpp" line="72"/>
-        <source>%1m, %2m </source>
-        <translation>%1 m, %2 m</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="686"/>
+        <source> Time: %1%2</source>
+        <translation> Zeit: %1 %2</translation>
     </message>
     <message>
-        <location filename="../grid/CGrid.cpp" line="76"/>
-        <source>N %1m, E %2m </source>
-        <translation>N %1 m, E %2 m</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <source>Edit name...</source>
+        <translation>Name bearbeiten...</translation>
     </message>
-</context>
-<context>
-    <name>CHistoryListWidget</name>
     <message>
-        <location filename="../widgets/CHistoryListWidget.cpp" line="34"/>
-        <source>Cut history</source>
-        <translation>Historie kürzen</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <source>Enter new track name.</source>
+        <translation>Geben Sie einen neuen Namen für den Track ein.</translation>
     </message>
-</context>
-<context>
-    <name>CImportDatabase</name>
     <message>
-        <location filename="../tool/CImportDatabase.cpp" line="29"/>
-        <source>Import QLandkarte Database</source>
-        <translation>QLandkarte Datenbank importieren</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1331"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1355"/>
+        <source>Permanently removed points %1..%2</source>
+        <translation>Punkte %1..%2 dauerhaft entfernt</translation>
     </message>
     <message>
-        <location filename="../tool/CImportDatabase.cpp" line="75"/>
-        <source>Select source database...</source>
-        <translation>Quelldatenbank wählen...</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1537"/>
+        <source>Hide points.</source>
+        <translation>Punkte verbergen.</translation>
     </message>
     <message>
-        <location filename="../tool/CImportDatabase.cpp" line="97"/>
-        <source>Select target database...</source>
-        <translation>Zieldatenbank wählen...</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1577"/>
+        <source>Show points.</source>
+        <translation>Punkte anzeigen.</translation>
     </message>
     <message>
-        <source>Select source databse...</source>
-        <translation type="obsolete">Quelldatenbank wählen...</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2143"/>
+        <source>Changed name</source>
+        <translation>Name geändert</translation>
     </message>
     <message>
-        <source>Select target databse...</source>
-        <translation type="obsolete">Zieldatenbank wählen...</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2149"/>
+        <source>Changed comment</source>
+        <translation>Kommentar geändert</translation>
     </message>
-</context>
-<context>
-    <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="591"/>
-        <source>Ele: %1%2</source>
-        <translation>Höhe: %1%2</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2155"/>
+        <source>Changed description</source>
+        <translation>Beschreibung geändert</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="607"/>
-        <source>[Grid: %1]</source>
-        <translation>[Gitter: %1]</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2161"/>
+        <source>Changed links</source>
+        <translation>Geänderte Verknüpfungen</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="732"/>
-        <source>Load GIS Data...</source>
-        <translation>GIS Daten laden...</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2188"/>
+        <source>Changed activity to '%1' for complete track.</source>
+        <translation>Die Aktivität wurde für den gesamten Track auf '%1' geändert.</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="766"/>
-        <source>Select output file</source>
-        <translation>Ausgabedatei auswählen</translation>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2262"/>
+        <source>Changed activity to '%1' for range(%2..%3).</source>
+        <translation>Die Aktivität wurde für den Bereich (%2..%3) auf '%1' geändert.</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="792"/>
-        <source>Select file to load</source>
-        <translation>Zu ladende Datei auswählen</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="108"/>
+        <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
+        <translation>Punkte ausblenden mit dem Douglas-Peuker Algorithmus (%1 %2)</translation>
     </message>
-</context>
-<context>
-    <name>CMapIMG</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="154"/>
-        <source>Failed ...</source>
-        <translation>Fehlgeschlagen...</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="143"/>
+        <source>Hide points with invalid coordinates at the beginning of the track</source>
+        <translation>Punkte mit ungültigen Koordinaten wurden ausgeblendet.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="169"/>
-        <source>Unspecified</source>
-        <translation>Nicht angegeben</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="159"/>
+        <source>Reset all hidden track points to visible</source>
+        <translation>Alle verborgenen Trackpunkte zurücksetzen</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="170"/>
-        <source>French</source>
-        <translation>Französisch</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="193"/>
+        <source>Permanently removed all hidden track points</source>
+        <translation>Alle verborgenen Trackpunkte wurden dauerhaft entfernt</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="171"/>
-        <source>German</source>
-        <translation>Deutsch</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="243"/>
+        <source>Smoothed profile with a Median filter of size %1</source>
+        <translation>Mit einem Median-Filter der Größe %1 geglättetes Profil</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="172"/>
-        <source>Dutch</source>
-        <translation>Niederländisch</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="279"/>
+        <source>Replaced elevation data with data from DEM files.</source>
+        <translation>Höhendaten durch Daten von DEM Dateien ersetzt.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="173"/>
-        <source>English</source>
-        <translation>Englisch</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="302"/>
+        <source>Offset elevation data by %1%2.</source>
+        <translation>Versatz der Höhendaten um %1 %2.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="174"/>
-        <source>Italian</source>
-        <translation>Italienisch</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="321"/>
+        <source>Changed start of track to %1.</source>
+        <translation>Trackanfang auf %1 verschoben.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="175"/>
-        <source>Finnish</source>
-        <translation>Finnisch</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="340"/>
+        <source>Remove timestamps.</source>
+        <translation>Zeitstempel entfernt.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="176"/>
-        <source>Swedish</source>
-        <translation>Schwedisch</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="363"/>
+        <source>Set artificial timestamps with delta of %1 sec.</source>
+        <translation>Künstliche Zeitstempel mit einem Abstand von %1 Sek. gesetzt.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="177"/>
-        <source>Spanish</source>
-        <translation>Spanisch</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="396"/>
+        <source>Changed speed to %1%2.</source>
+        <translation>Geschwindigkeit auf %1 %2 geändert.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="178"/>
-        <source>Basque</source>
-        <translation>Baskisch</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="415"/>
+        <source>%1 (Segment %2)</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="179"/>
-        <source>Catalan</source>
-        <translation>Catalanisch</translation>
+        <location filename="../gis/trk/filter/filter.cpp" line="438"/>
+        <source>Removed extension %1 from all Track Points</source>
+        <translation>Erweiterung %1 wurde von allen Trackpunkten entfernt</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="180"/>
-        <source>Galician</source>
-        <translation>Galizisch</translation>
+        <location filename="../qlgt/converter.cpp" line="198"/>
+        <source>Copy flag information from QLandkarte GT track</source>
+        <translation>Kopiert das Informationsflag aus dem QLandkarte GT Track</translation>
     </message>
+</context>
+<context>
+    <name>CGisItemWpt</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="181"/>
-        <source>Welsh</source>
-        <translation>Walisisch</translation>
+        <location filename="../gis/gpx/serialization.cpp" line="588"/>
+        <source>Archived</source>
+        <translation>Archiviert</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="182"/>
-        <source>Gaelic</source>
-        <translation>Gälisch</translation>
+        <location filename="../gis/gpx/serialization.cpp" line="592"/>
+        <source>Available</source>
+        <translation>Verfügbar</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="183"/>
-        <source>Danish</source>
-        <translation>Dänisch</translation>
+        <location filename="../gis/gpx/serialization.cpp" line="596"/>
+        <source>Not Available</source>
+        <translation>Nicht verfügbar</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="184"/>
-        <source>Norwegian</source>
-        <translation>Norwegisch</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="102"/>
+        <source>_Clone</source>
+        <translation>_Klon</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="185"/>
-        <source>Portuguese</source>
-        <translation>Portugiesisch</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="267"/>
+        <source>Elevation: %1 %2</source>
+        <translation>Höhe: %1 %2</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="186"/>
-        <source>Slovak</source>
-        <translation>Slovakisch</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="278"/>
+        <source>Proximity: %1 %2</source>
+        <translation>Abstand: %1 %2</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="187"/>
-        <source>Czech</source>
-        <translation>Tschechisch</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="352"/>
+        <source>Changed name</source>
+        <translation>Name geändert</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="188"/>
-        <source>Croatian</source>
-        <translation>Kroatisch</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="362"/>
+        <source>Changed position</source>
+        <translation>Position geändert</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="189"/>
-        <source>Hungarian</source>
-        <translation>Ungarisch</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="368"/>
+        <source>Changed elevation</source>
+        <translation>Höhe geändert</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="190"/>
-        <source>Polish</source>
-        <translation>Polnisch</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="374"/>
+        <source>Changed proximity</source>
+        <translation>Abstandsalarm geändert</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="191"/>
-        <source>Turkish</source>
-        <translation>Türkisch</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="388"/>
+        <source>Changed icon</source>
+        <translation>Symbol geändert</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="192"/>
-        <source>Greek</source>
-        <translation>Griechisch</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="394"/>
+        <source>Changed comment</source>
+        <translation>Kommentar geändert</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="193"/>
-        <source>Slovenian</source>
-        <translation>Slowenisch</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="400"/>
+        <source>Changed description</source>
+        <translation>Beschreibung geändert</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="194"/>
-        <source>Russian</source>
-        <translation>Russisch</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="406"/>
+        <source>Changed links</source>
+        <translation>Geänderte Verknüpfungen</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="195"/>
-        <source>Estonian</source>
-        <translation>Estnisch</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="412"/>
+        <source>Changed images</source>
+        <translation>Bilder geändert</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="196"/>
-        <source>Latvian</source>
-        <translation>Lettisch</translation>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="418"/>
+        <source>Add image</source>
+        <translation>Bild hinzufügen</translation>
     </message>
+</context>
+<context>
+    <name>CGisListDB</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="197"/>
-        <source>Romanian</source>
-        <translation>Rumänisch</translation>
+        <location filename="../gis/CGisListDB.cpp" line="118"/>
+        <source>Add Folder</source>
+        <translation>Ordner hinzufügen</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="198"/>
-        <source>Albanian</source>
-        <translatorcomment>Albanisch</translatorcomment>
-        <translation>Albanisch</translation>
+        <location filename="../gis/CGisListDB.cpp" line="119"/>
+        <source>Delete Folder</source>
+        <translation>Ordner löschen</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="199"/>
-        <source>Bosnian</source>
-        <translation>Bosnisch</translation>
+        <location filename="../gis/CGisListDB.cpp" line="81"/>
+        <source>Due to changes in the database system QMapShack forgot about the filename of your database '%1'. You have to select it again in the next step.</source>
+        <translation>Aufgrund der Änderungen im Datenbanksystem kennt QMapShack den Dateinamen Ihrer Datenbank nicht mehr. Sie müssen diesen im nächsten Schritt erneut wählen.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="200"/>
-        <source>Lithuanian</source>
-        <translation>Litauisch</translation>
+        <location filename="../gis/CGisListDB.cpp" line="82"/>
+        <source>Select database file.</source>
+        <translation>Datenbankdatei wählen.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="201"/>
-        <source>Serbian</source>
-        <translation>Serbisch</translation>
+        <location filename="../gis/CGisListDB.cpp" line="115"/>
+        <source>Add Database</source>
+        <translation>Datenbank hinzufügen</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="202"/>
-        <source>Macedonian</source>
-        <translation>Makedonisch</translation>
+        <location filename="../gis/CGisListDB.cpp" line="122"/>
+        <location filename="../gis/CGisListDB.cpp" line="133"/>
+        <source>Delete Item</source>
+        <translation>Element löschen</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="203"/>
-        <source>Bulgarian</source>
-        <translation>Bulgarisch</translation>
+        <location filename="../gis/CGisListDB.cpp" line="126"/>
+        <source>Sync. with Database</source>
+        <translation>Mit der Datenbank synchronisieren</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="260"/>
-        <source>Major highway</source>
-        <translation>Autobahn</translation>
+        <location filename="../gis/CGisListDB.cpp" line="127"/>
+        <source>Remove Database</source>
+        <translation>Datenbank entfernen</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="261"/>
-        <source>Principal highway</source>
-        <translation>Bundesstraße</translation>
+        <location filename="../gis/CGisListDB.cpp" line="130"/>
+        <source>Empty</source>
+        <translation>Leeren</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="262"/>
-        <source>Other highway</source>
-        <translation>Schnellstraße</translation>
+        <location filename="../gis/CGisListDB.cpp" line="418"/>
+        <source>Remove database...</source>
+        <translation>Datenbank entfernen...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="263"/>
-        <source>Arterial road</source>
-        <translation>Fernstraße</translation>
+        <location filename="../gis/CGisListDB.cpp" line="418"/>
+        <source>Do you really want to remove '%1' from the list?</source>
+        <translation>Wollen Sie '%1' wirklich aus der Liste entfernen?</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="264"/>
-        <source>Collector road</source>
-        <translation>Sammelstraße</translation>
+        <location filename="../gis/CGisListDB.cpp" line="611"/>
+        <source>Are you sure you want to delete '%1' from folder '%2'?</source>
+        <translation>Sind Sie sicher, dass Sie '%1' aus dem Ordner '%2' löschen wollen? </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="265"/>
-        <source>Residential street</source>
-        <translation>Wohnstraße</translation>
+        <location filename="../gis/CGisListDB.cpp" line="612"/>
+        <source>Delete...</source>
+        <translation>Löschen...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="266"/>
-        <source>Alley/Private road</source>
-        <translation>Allee/Privatstraße</translation>
+        <location filename="../gis/CGisListDB.cpp" line="476"/>
+        <source>Delete database folder...</source>
+        <translation>Datenbankordner löschen...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="267"/>
-        <source>Highway ramp, low speed</source>
-        <translation>Auffahrt (langsam)</translation>
+        <location filename="../gis/CGisListDB.cpp" line="476"/>
+        <source>Are you sure you want to delete "%1" from the database?</source>
+        <translation>Sind Sie sicher, dass Sie "%1" aus der Datenbank löschen wollen? </translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="268"/>
-        <source>Highway ramp, high speed</source>
-        <translation>Auffahrt (schnell)</translation>
+        <location filename="../gis/CGisListDB.cpp" line="503"/>
+        <location filename="../gis/CGisListDB.cpp" line="524"/>
+        <source>Remove items...</source>
+        <translation>Element entfernen...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="269"/>
-        <source>Unpaved road</source>
-        <translation>Unbefestigte Straße</translation>
+        <location filename="../gis/CGisListDB.cpp" line="503"/>
+        <source>Are you sure you want to delete all items from Lost&Found? This will remove them permanently.</source>
+        <translation>Sind Sie sicher, dass Sie alle Elemente in Verloren & Gefunden löschen wollen? Sie werden dauerhaft entfernt.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="270"/>
-        <source>Major highway connector</source>
-        <translation>Autobahnzubringer</translation>
+        <location filename="../gis/CGisListDB.cpp" line="524"/>
+        <source>Are you sure you want to delete all selected items from Lost&Found? This will remove them permanently.</source>
+        <translation>Sind Sie sicher, dass Sie alle ausgewählten Elemente in Verloren & Gefunden löschen wollen? Sie werden dauerhaft entfernt.</translation>
     </message>
+</context>
+<context>
+    <name>CGisListWks</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="271"/>
-        <source>Roundabout</source>
-        <translation>Kreisverkehr</translation>
+        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <source>Save</source>
+        <translation>Speichern</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="272"/>
-        <source>Railroad</source>
-        <translation>Eisenbahn</translation>
+        <location filename="../gis/CGisListWks.cpp" line="105"/>
+        <source>Save As...</source>
+        <translation>Speichern unter...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="273"/>
-        <source>Shoreline</source>
-        <translation>Küstenlinie</translation>
+        <location filename="../gis/CGisListWks.cpp" line="99"/>
+        <source>Edit..</source>
+        <translation>Bearbeiten..</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="274"/>
-        <source>Trail</source>
-        <translation></translation>
+        <location filename="../gis/CGisListWks.cpp" line="112"/>
+        <source>Close</source>
+        <translation>Schließen</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="275"/>
-        <source>Stream</source>
-        <translation>Bach</translation>
+        <location filename="../gis/CGisListWks.cpp" line="122"/>
+        <source>Update Project on Device</source>
+        <translation>Aktualisiere das Projekt auf dem Gerät</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="276"/>
-        <source>Time zone</source>
-        <translation>Zeitzone</translation>
+        <location filename="../gis/CGisListWks.cpp" line="135"/>
+        <source>Edit...</source>
+        <translation>Bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="277"/>
-        <location filename="../map/CMapIMG.cpp" line="278"/>
-        <source>Ferry</source>
-        <translation>Fähre</translation>
+        <location filename="../gis/CGisListWks.cpp" line="136"/>
+        <source>Copy to...</source>
+        <translation>Kopieren nach...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="279"/>
-        <source>State/province border</source>
-        <translation>Staats-/Landesgrenze</translation>
+        <location filename="../gis/CGisListWks.cpp" line="151"/>
+        <source>Show Bubble</source>
+        <translation>Infoblase anzeigen</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="280"/>
-        <source>County/parish border</source>
-        <translation>Kreis-/Gemeindegrenze</translation>
+        <location filename="../gis/CGisListWks.cpp" line="153"/>
+        <source>Move Waypoint</source>
+        <translation>Wegpunkt verschieben</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="281"/>
-        <source>International border</source>
-        <translation>Internationale Grenze</translation>
+        <location filename="../gis/CGisListWks.cpp" line="162"/>
+        <source>Route Instructions</source>
+        <translation>Navigationsanweisungen</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="282"/>
-        <source>River</source>
-        <translation>Fluss</translation>
+        <location filename="../gis/CGisListWks.cpp" line="164"/>
+        <source>Calculate Route</source>
+        <translation>Route berechnen</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="283"/>
-        <source>Minor land contour</source>
-        <translation>Höhenlinie klein</translation>
+        <location filename="../gis/CGisListWks.cpp" line="165"/>
+        <source>Reset Route</source>
+        <translation>Route zurücksetzen</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="284"/>
-        <source>Intermediate land contour</source>
-        <translation>Höhenlinie mittel</translation>
+        <location filename="../gis/CGisListWks.cpp" line="166"/>
+        <source>Edit Route</source>
+        <translation>Route bearbeiten</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="285"/>
-        <source>Major land contour</source>
-        <translation>Höhenlinie groß</translation>
+        <location filename="../gis/CGisListWks.cpp" line="182"/>
+        <source>Create Route</source>
+        <translation>Route erstellen</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="286"/>
-        <source>Minor depth contour</source>
-        <translation>Tiefenlinie klein</translation>
+        <location filename="../gis/CGisListWks.cpp" line="626"/>
+        <source>Drop items...</source>
+        <translation>Elemente verwerfen...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="287"/>
-        <source>Intermediate depth contour</source>
-        <translation>Tiefenlinie mittel</translation>
+        <location filename="../gis/CGisListWks.cpp" line="651"/>
+        <location filename="../gis/CGisListWks.cpp" line="1637"/>
+        <location filename="../gis/CGisListWks.cpp" line="1675"/>
+        <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
+        <translation><b>Aktualisieren der Geräte</b><p>Aktualisiere %1<br/>Bitte warten...</p></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="288"/>
-        <source>Major depth contour</source>
-        <translation>Tiefenlinie groß</translation>
+        <location filename="../gis/CGisListWks.cpp" line="1156"/>
+        <source>Delete project...</source>
+        <translation>Projekt löschen...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="289"/>
-        <source>Intermittent stream</source>
-        <translation>Intermittierender Bach</translation>
+        <location filename="../gis/CGisListWks.cpp" line="1156"/>
+        <source>Do you really want to delete %1?</source>
+        <translation>Sind Sie sicher, dass sie %1 löschen wollen?</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="290"/>
-        <location filename="../map/CMapIMG.cpp" line="372"/>
-        <source>Airport runway</source>
-        <translation>Landebahn</translation>
+        <location filename="../gis/CGisListWks.cpp" line="1352"/>
+        <source>Copy items...</source>
+        <translation>Elemente kopieren...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="291"/>
-        <source>Pipeline</source>
-        <translation>Pipeline</translation>
+        <location filename="../gis/CGisListWks.cpp" line="154"/>
+        <source>Proj. Waypoint...</source>
+        <translation>Wegpunkt Projektion...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="292"/>
-        <source>Powerline</source>
-        <translation>Stromleitung</translation>
+        <location filename="../gis/CGisListWks.cpp" line="138"/>
+        <source>Track Profile</source>
+        <translation>Trackprofil</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="293"/>
-        <source>Marine boundary</source>
-        <translation>Meeresgrenze</translation>
+        <location filename="../gis/CGisListWks.cpp" line="108"/>
+        <source>Send to Devices</source>
+        <translation>Ans Gerät senden</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="294"/>
-        <source>Hazard boundary</source>
-        <translation>Gefahrbereichgrenze</translation>
+        <location filename="../gis/CGisListWks.cpp" line="140"/>
+        <source>Select Range</source>
+        <translation>Bereich wählen</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="359"/>
-        <source>Large urban area (&gt;200K)</source>
-        <translation>Großes Wohngebiet (&gt;200K)</translation>
+        <location filename="../gis/CGisListWks.cpp" line="141"/>
+        <source>Edit Track Points</source>
+        <translation>Trackpunkte bearbeiten</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="360"/>
-        <source>Small urban area (&lt;200K)</source>
-        <translation>Kleines Wohngebiet (&lt;200K)</translation>
+        <location filename="../gis/CGisListWks.cpp" line="142"/>
+        <source>Reverse Track</source>
+        <translation>Track umkehren</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="361"/>
-        <source>Rural housing area</source>
-        <translation>Ländliches Wohngebiet</translation>
+        <location filename="../gis/CGisListWks.cpp" line="143"/>
+        <source>Combine Tracks</source>
+        <translation>Tracks verbinden</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="362"/>
-        <source>Military base</source>
-        <translation>Militärbasis</translation>
+        <location filename="../gis/CGisListWks.cpp" line="175"/>
+        <source>Edit Area Points</source>
+        <translation>Gebietspunkte bearbeiten</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="363"/>
-        <source>Parking lot</source>
-        <translation>Parkplatz</translation>
+        <location filename="../gis/CGisListWks.cpp" line="124"/>
+        <location filename="../gis/CGisListWks.cpp" line="145"/>
+        <source>Delete</source>
+        <translation>Löschen</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="364"/>
-        <source>Parking garage</source>
-        <translation>Parkhaus</translation>
+        <location filename="../gis/CGisListWks.cpp" line="100"/>
+        <source>Show on Map</source>
+        <translation>Auf der Karte anzeigen.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="365"/>
-        <source>Airport</source>
-        <translation>Flugplatz</translation>
+        <location filename="../gis/CGisListWks.cpp" line="101"/>
+        <source>Hide from Map</source>
+        <translation>Auf der Karte ausblenden.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="366"/>
-        <source>Shopping center</source>
-        <translation>Einkaufszentrum</translation>
+        <location filename="../gis/CGisListWks.cpp" line="109"/>
+        <source>Sync. with Database</source>
+        <translation>Mit der Datenbank synchronisieren</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="367"/>
-        <source>Marina</source>
-        <translation>Jachthafen</translation>
+        <location filename="../gis/CGisListWks.cpp" line="780"/>
+        <source>Saving workspace. Please wait.</source>
+        <translation>Arbeitsplatz speichern. Bitte warten.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="368"/>
-        <source>University/College</source>
-        <translation>Universität/Hochschule</translation>
+        <location filename="../gis/CGisListWks.cpp" line="826"/>
+        <source>Loading workspace. Please wait.</source>
+        <translation>Arbeitsplatz laden. Bitte warten.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="369"/>
-        <source>Hospital</source>
-        <translation>Krankenhaus</translation>
+        <location filename="../gis/CGisListWks.cpp" line="1133"/>
+        <source>Close all projects...</source>
+        <translation>Alle Projekte schließen...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="370"/>
-        <source>Industrial complex</source>
-        <translation>Industrie</translation>
+        <location filename="../gis/CGisListWks.cpp" line="1133"/>
+        <source>This will remove all projects from the workspace.</source>
+        <translation>Dies wird alle Projekte aus dem Arbeitsplatz entfernen.</translation>
     </message>
+</context>
+<context>
+    <name>CGisWidget</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="371"/>
-        <source>Reservation</source>
-        <translation>Schutzgebiet</translation>
+        <location filename="../gis/CGisWidget.cpp" line="131"/>
+        <source>Load project...</source>
+        <translation>Lade Projekt...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="373"/>
-        <source>Man-made area</source>
-        <translation>Fabrikgelände</translation>
+        <location filename="../gis/CGisWidget.cpp" line="131"/>
+        <source>The project "%1" is already in the workspace.</source>
+        <translation>Das Projekt "%1" ist schon im Arbeitsplatz geladen.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="374"/>
-        <source>Sports complex</source>
-        <translation>Sportanlage</translation>
+        <location filename="../gis/CGisWidget.cpp" line="486"/>
+        <source>Cut Track...</source>
+        <translation>Track teilen...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="375"/>
-        <source>Golf course</source>
-        <translation>Golfplatz</translation>
+        <location filename="../gis/CGisWidget.cpp" line="486"/>
+        <source>Do you want to delete the original track?</source>
+        <translation>Wollen Sie den ursprünglichen Track löschen?</translation>
     </message>
+</context>
+<context>
+    <name>CGpsProject</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="376"/>
-        <source>Cemetery</source>
-        <translation>Friedhof</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="90"/>
+        <source>Failed to load file %1...</source>
+        <translation>Datei %1 konnte nicht geladen werden...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="377"/>
-        <location filename="../map/CMapIMG.cpp" line="378"/>
-        <location filename="../map/CMapIMG.cpp" line="379"/>
-        <source>National park</source>
-        <translation>Nationalpark</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="112"/>
+        <source>Failed to open %1</source>
+        <translation>Öffnen von %1 fehlgeschlagen</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="380"/>
-        <source>City park</source>
-        <translation>Stadtpark</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="124"/>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation>Lesen von %1 fehlgeschlagen:
+Zeile %2, Spalte %3:
+%4</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="381"/>
-        <location filename="../map/CMapIMG.cpp" line="382"/>
-        <location filename="../map/CMapIMG.cpp" line="383"/>
-        <source>State park</source>
-        <translation></translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="132"/>
+        <source>Not a GPX file: %1</source>
+        <translation>Keine GPX Datei: %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="384"/>
-        <source>Forest</source>
-        <translation>Wald</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="238"/>
+        <source>File exists ...</source>
+        <translation>Datei existiert...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="385"/>
-        <source>Ocean</source>
-        <translation>Ozean</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="239"/>
+        <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
+        <translation>Diese Datei wurde nicht mit QMapShack erstellt. Wenn Sie 'Ja' drücken werden alle Daten dieser Datei gelöscht. Selbst wenn diese Datei GPX Daten enthält und mit QMapShack geladen wurde, können nicht alle Elemente dieser Datei durch QMapShack geladen und gespeichert werden. Diese Elemente sind verloren. Ich empfehle die Nutzung einer anderen Datei. <b>Wollen Sie die Datei wirklich überschreiben?</b></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="386"/>
-        <location filename="../map/CMapIMG.cpp" line="388"/>
-        <location filename="../map/CMapIMG.cpp" line="398"/>
-        <source>Blue (unknown)</source>
-        <translation></translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="347"/>
+        <source>Failed to create file '%1'</source>
+        <translation>Datei %1' konnte nicht erstellt werden</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="387"/>
-        <source>Sea</source>
-        <translation>Meer</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="357"/>
+        <source>Failed to write file '%1'</source>
+        <translation>Datei %1' konnte nicht gespeichert werden</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="389"/>
-        <location filename="../map/CMapIMG.cpp" line="390"/>
-        <location filename="../map/CMapIMG.cpp" line="397"/>
-        <source>Large lake</source>
-        <translation>See</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="362"/>
+        <source>Saving GIS data failed...</source>
+        <translation>Das Speichern der GIS Daten ist fehlgeschlagen...</translation>
     </message>
+</context>
+<context>
+    <name>CGrid</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="391"/>
-        <location filename="../map/CMapIMG.cpp" line="392"/>
-        <source>Medium lake</source>
-        <translation>See</translation>
+        <location filename="../grid/CGrid.cpp" line="61"/>
+        <source>%1 %2 </source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="393"/>
-        <location filename="../map/CMapIMG.cpp" line="394"/>
-        <source>Small lake</source>
-        <translation>See</translation>
+        <location filename="../grid/CGrid.cpp" line="65"/>
+        <source>%1%2%5 %3%4%5 </source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="395"/>
-        <location filename="../map/CMapIMG.cpp" line="396"/>
-        <source>Major lake</source>
-        <translation>See</translation>
+        <location filename="../grid/CGrid.cpp" line="72"/>
+        <source>%1m, %2m </source>
+        <translation>%1 m, %2 m</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="399"/>
-        <source>Major River</source>
-        <translation>Strom</translation>
+        <location filename="../grid/CGrid.cpp" line="76"/>
+        <source>N %1m, E %2m </source>
+        <translation>N %1 m, E %2 m</translation>
     </message>
+</context>
+<context>
+    <name>CHistoryListWidget</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="400"/>
-        <source>Large River</source>
-        <translation>Fluss</translation>
+        <location filename="../widgets/CHistoryListWidget.cpp" line="34"/>
+        <source>Cut history</source>
+        <translation>Historie kürzen</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="401"/>
-        <source>Medium River</source>
-        <translation>Fluss</translation>
+        <location filename="../widgets/CHistoryListWidget.cpp" line="61"/>
+        <source> by %1</source>
+        <translation> von %1</translation>
     </message>
+</context>
+<context>
+    <name>CImportDatabase</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="402"/>
-        <source>Small River</source>
-        <translation>Fluss</translation>
+        <location filename="../tool/CImportDatabase.cpp" line="29"/>
+        <source>Import QLandkarte Database</source>
+        <translation>QLandkarte Datenbank importieren</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="405"/>
-        <source>Intermittent water</source>
-        <translation>Gewässer</translation>
+        <location filename="../tool/CImportDatabase.cpp" line="75"/>
+        <source>Select source database...</source>
+        <translation>Quelldatenbank wählen...</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="406"/>
-        <source>Wetland/Swamp</source>
-        <translation>Feuchtgebiet/Sumpf</translation>
+        <location filename="../tool/CImportDatabase.cpp" line="97"/>
+        <source>Select target database...</source>
+        <translation>Zieldatenbank wählen...</translation>
     </message>
+</context>
+<context>
+    <name>CKnownExtension</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="407"/>
-        <source>Glacier</source>
-        <translation>Gletscher</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="45"/>
+        <source>Air Temperature</source>
+        <translation>Lufttemperatur</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="408"/>
-        <source>Orchard/Plantation</source>
-        <translation>Obstgarten/Plantage</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="49"/>
+        <source>Water Temperature</source>
+        <translation>Wassertemperatur</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="409"/>
-        <source>Scrub</source>
-        <translation>Buschwerk</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="53"/>
+        <source>Depth</source>
+        <translation>Tiefe</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="410"/>
-        <source>Tundra</source>
-        <translation>Tundra</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="57"/>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="69"/>
+        <source>Heart Rate</source>
+        <translation>Pulsrate</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="411"/>
-        <source>Flat</source>
-        <translation>Ebene</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="61"/>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="73"/>
+        <source>Cadence</source>
+        <translation>Trittfrequenz</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="412"/>
-        <source>???</source>
-        <translation></translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="77"/>
+        <source>Speed</source>
+        <translation>Geschwindigkeit</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="448"/>
-        <source>Failed to read: </source>
-        <translation>Lesen fehlgeschlagen:</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="81"/>
+        <source>Acceleration</source>
+        <translation>Beschleunigung</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="491"/>
-        <source>Failed to open: </source>
-        <translation>Öffnen fehlgeschlagen:</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="85"/>
+        <source>Course</source>
+        <translation>Kurs</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="515"/>
-        <location filename="../map/CMapIMG.cpp" line="519"/>
-        <source>Bad file format: </source>
-        <translation>Falsches Format:</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="94"/>
+        <source>Slope*</source>
+        <translation>Neigung*</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="608"/>
-        <source>Failed to read file structure: </source>
-        <translation>Lesen der Dateistruktur fehlgeschlagen:</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="99"/>
+        <source>Speed*</source>
+        <translation>Geschwindigkeit*</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="643"/>
-        <source>Loading %1</source>
-        <translation>Lädt %1</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="104"/>
+        <source>Elevation</source>
+        <translation>Höhe</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="649"/>
-        <source>User abort: </source>
-        <translation>Benutzerabbruch:</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="109"/>
+        <source>Progress</source>
+        <translation>Verlauf</translation>
     </message>
+</context>
+<context>
+    <name>CLostFoundProject</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="652"/>
-        <source>File is NT format. QMapShack is unable to read map files with NT format: </source>
-        <translation>Die Datei hat das NT Format. QMapShack kann dieses Format nicht lesen:</translation>
+        <location filename="../gis/db/CLostFoundProject.cpp" line="39"/>
+        <source>Lost & Found</source>
+        <translation>Verloren & Gefunden</translation>
     </message>
+</context>
+<context>
+    <name>CMainWindow</name>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="744"/>
-        <source>File contains locked / encypted data. Garmin does not want you to use this file with any other software than the one supplied by Garmin.</source>
-        <translation>Die Datei enthält verschlüsselte Daten. Garmin möchte nicht dass diese Datei mit einer anderen Software, als der von Garmin bereitgestellten, benutzt wird.</translation>
+        <location filename="../CMainWindow.cpp" line="617"/>
+        <source>Ele: %1%2</source>
+        <translation>Höhe: %1%2</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2504"/>
-        <location filename="../map/CMapIMG.cpp" line="2512"/>
-        <location filename="../map/CMapIMG.cpp" line="2516"/>
-        <location filename="../map/CMapIMG.cpp" line="2521"/>
-        <location filename="../map/CMapIMG.cpp" line="2567"/>
-        <location filename="../map/CMapIMG.cpp" line="2575"/>
-        <location filename="../map/CMapIMG.cpp" line="2579"/>
-        <location filename="../map/CMapIMG.cpp" line="2584"/>
-        <source>Point of Interest</source>
-        <translation>Ort von Interesse</translation>
+        <location filename="../CMainWindow.cpp" line="633"/>
+        <source>[Grid: %1]</source>
+        <translation>[Gitter: %1]</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2711"/>
-        <source>Unknown</source>
-        <translation>Unbekannt</translation>
-    </message>
-    <message>
-        <location filename="../map/CMapIMG.cpp" line="2757"/>
-        <location filename="../map/CMapIMG.cpp" line="2765"/>
-        <location filename="../map/CMapIMG.cpp" line="2772"/>
-        <source>Area</source>
-        <translation>Gebiet</translation>
+        <location filename="../CMainWindow.cpp" line="758"/>
+        <source>Load GIS Data...</source>
+        <translation>GIS Daten laden...</translation>
     </message>
-</context>
-<context>
-    <name>CMapList</name>
     <message>
-        <location filename="../map/CMapList.cpp" line="155"/>
-        <source>Deactivate</source>
-        <translation>Deaktivieren</translation>
+        <location filename="../CMainWindow.cpp" line="792"/>
+        <source>Select output file</source>
+        <translation>Ausgabedatei auswählen</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="155"/>
-        <source>Activate</source>
-        <translation>Aktivieren</translation>
+        <location filename="../CMainWindow.cpp" line="792"/>
+        <location filename="../CMainWindow.cpp" line="818"/>
+        <source>QMapShack View (*.view)</source>
+        <translation>QMapShack Ansicht (*.view)</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="174"/>
-        <source>Where do you want to store maps?</source>
-        <translation>Wo wollen Sie die Karten speichern?</translation>
+        <location filename="../CMainWindow.cpp" line="818"/>
+        <source>Select file to load</source>
+        <translation>Zu ladende Datei auswählen</translation>
     </message>
 </context>
 <context>
-    <name>CMapMAP</name>
+    <name>CMapIMG</name>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="46"/>
+        <location filename="../map/CMapIMG.cpp" line="154"/>
         <source>Failed ...</source>
         <translation>Fehlgeschlagen...</translation>
     </message>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="63"/>
-        <source>Failed to open: </source>
-        <translation>Öffnen fehlgeschlagen: </translation>
+        <location filename="../map/CMapIMG.cpp" line="169"/>
+        <source>Unspecified</source>
+        <translation>Nicht angegeben</translation>
     </message>
     <message>
-        <location filename="../map/CMapMAP.cpp" line="73"/>
-        <source>Bad file format: </source>
-        <translation>Falsches Dateiformat: </translation>
+        <location filename="../map/CMapIMG.cpp" line="170"/>
+        <source>French</source>
+        <translation>Französisch</translation>
     </message>
-</context>
-<context>
-    <name>CMapPathSetup</name>
     <message>
-        <location filename="../map/CMapPathSetup.cpp" line="47"/>
-        <source>Add or remove paths containing maps. There can be multiple maps in a path but no sub-path is parsed. Supported formats are: %1</source>
-        <translation>Hinzufügen oder Entfernen von Karten. In einem Verzeichnis können mehrere Karten liegen. Unterverzeichnisse werden jedoch nicht durchsucht. Unterstützte Formate sind: %1 </translation>
+        <location filename="../map/CMapIMG.cpp" line="171"/>
+        <source>German</source>
+        <translation>Deutsch</translation>
     </message>
     <message>
-        <location filename="../map/CMapPathSetup.cpp" line="62"/>
-        <source>Select map path...</source>
-        <translation>Kartenpfad wählen...</translation>
+        <location filename="../map/CMapIMG.cpp" line="172"/>
+        <source>Dutch</source>
+        <translation>Niederländisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapPathSetup.cpp" line="81"/>
-        <source>Select root path...</source>
-        <translation>Hauptverzeichnis auswählen...</translation>
+        <location filename="../map/CMapIMG.cpp" line="173"/>
+        <source>English</source>
+        <translation>Englisch</translation>
     </message>
-</context>
-<context>
-    <name>CMapPropSetup</name>
     <message>
-        <source>Cache path...</source>
-        <translation type="obsolete">Cache Pfad...</translation>
+        <location filename="../map/CMapIMG.cpp" line="174"/>
+        <source>Italian</source>
+        <translation>Italienisch</translation>
     </message>
-</context>
-<context>
-    <name>CMapRMAP</name>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="48"/>
-        <location filename="../map/CMapRMAP.cpp" line="57"/>
-        <location filename="../map/CMapRMAP.cpp" line="127"/>
-        <location filename="../map/CMapRMAP.cpp" line="144"/>
-        <location filename="../map/CMapRMAP.cpp" line="165"/>
-        <location filename="../map/CMapRMAP.cpp" line="187"/>
-        <location filename="../map/CMapRMAP.cpp" line="209"/>
-        <location filename="../map/CMapRMAP.cpp" line="237"/>
-        <source>Error...</source>
-        <translation>Fehler...</translation>
+        <location filename="../map/CMapIMG.cpp" line="175"/>
+        <source>Finnish</source>
+        <translation>Finnisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="48"/>
-        <source>This is not a TwoNav RMAP file.</source>
-        <translation>Das ist keine bekannte TwoNav RMAP Datei.</translation>
+        <location filename="../map/CMapIMG.cpp" line="176"/>
+        <source>Swedish</source>
+        <translation>Schwedisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="57"/>
-        <source>Unknown sub-format.</source>
-        <translation>Unbekanntes Unterformat.</translation>
+        <location filename="../map/CMapIMG.cpp" line="177"/>
+        <source>Spanish</source>
+        <translation>Spanisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="127"/>
-        <source>Unknown version.</source>
-        <translation>Unbekannte Version.</translation>
+        <location filename="../map/CMapIMG.cpp" line="178"/>
+        <source>Basque</source>
+        <translation>Baskisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="144"/>
-        <location filename="../map/CMapRMAP.cpp" line="165"/>
-        <location filename="../map/CMapRMAP.cpp" line="187"/>
-        <location filename="../map/CMapRMAP.cpp" line="209"/>
-        <source>Failed to read reference point.</source>
-        <translation>Referenzpunkte konnten nicht gelesen werden.</translation>
+        <location filename="../map/CMapIMG.cpp" line="179"/>
+        <source>Catalan</source>
+        <translation>Catalanisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapRMAP.cpp" line="237"/>
-        <source>Unknown projection and datum (%1%2).</source>
-        <translation>Unbekannte Projektion und Datum (%1 %2).</translation>
+        <location filename="../map/CMapIMG.cpp" line="180"/>
+        <source>Galician</source>
+        <translation>Galizisch</translation>
     </message>
-</context>
-<context>
-    <name>CMapTMS</name>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="67"/>
-        <location filename="../map/CMapTMS.cpp" line="77"/>
-        <location filename="../map/CMapTMS.cpp" line="136"/>
-        <source>Error...</source>
-        <translation>Fehler...</translation>
+        <location filename="../map/CMapIMG.cpp" line="181"/>
+        <source>Welsh</source>
+        <translation>Walisisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="67"/>
-        <source>Failed to open %1</source>
-        <translation>Öffnen fehlgeschlagen: %1</translation>
+        <location filename="../map/CMapIMG.cpp" line="182"/>
+        <source>Gaelic</source>
+        <translation>Gälisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="77"/>
-        <source>Failed to read: %1
-line %2, column %3:
- %4</source>
-        <translation>Lesen fehlgeschlagen: %1
-Zeile %2, Spalte %3:
-%4</translation>
+        <location filename="../map/CMapIMG.cpp" line="183"/>
+        <source>Danish</source>
+        <translation>Dänisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="115"/>
-        <source>Layer %1</source>
-        <translation></translation>
+        <location filename="../map/CMapIMG.cpp" line="184"/>
+        <source>Norwegian</source>
+        <translation>Norwegisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="130"/>
-        <source>This map requires OpenSSL support. However due to legal restrictions in some countries OpenSSL is not packaged with QMapShack. You can have a look at the <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> for binaries. You have to copy libeay32.dll and ssleay32.dll into the QMapShack program directory.</source>
-        <translation>Diese Karte benötigt OpenSSL. Aufgrund rechtlicher Beschränkungen in einigen Ländern, ist OpenSSL nicht Bestandteil von QMapShack. Sie können sich auf der <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> nach Binäries umsehen. Sie müssen die Dateien libeay32.dll and ssleay32.dll in das QMapShack Programmverzeichnis kopieren.</translation>
+        <location filename="../map/CMapIMG.cpp" line="185"/>
+        <source>Portuguese</source>
+        <translation>Portugiesisch</translation>
     </message>
     <message>
-        <source>This map requires OpenSSL support. However due to legal restrictions in some countries OpenSSL is not packaged with QMapShack. You can have a look at the <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> for binaries.</source>
-        <translation type="vanished">Diese Karte benötigt OpenSSL. Aufgrund rechtlicher Beschränkungen in einigen Ländern, ist OpenSSL nicht Bestandteil von QMapShack. Sie können sich auf der <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> nach Binäries umsehen.</translation>
+        <location filename="../map/CMapIMG.cpp" line="186"/>
+        <source>Slovak</source>
+        <translation>Slovakisch</translation>
     </message>
     <message>
-        <source>--- All ---</source>
-        <translation type="obsolete">--- Alle ---</translation>
+        <location filename="../map/CMapIMG.cpp" line="187"/>
+        <source>Czech</source>
+        <translation>Tschechisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="306"/>
-        <source><b>%1</b>: %2 tiles pending<br/></source>
-        <translation><b>%1</b>: %2 unerledigte Kacheln<br/></translation>
+        <location filename="../map/CMapIMG.cpp" line="188"/>
+        <source>Croatian</source>
+        <translation>Kroatisch</translation>
     </message>
-</context>
-<context>
-    <name>CMapVRT</name>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="45"/>
-        <location filename="../map/CMapVRT.cpp" line="60"/>
-        <location filename="../map/CMapVRT.cpp" line="89"/>
-        <location filename="../map/CMapVRT.cpp" line="126"/>
-        <source>Error...</source>
-        <translation>Fehler...</translation>
+        <location filename="../map/CMapIMG.cpp" line="189"/>
+        <source>Hungarian</source>
+        <translation>Ungarisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="45"/>
-        <location filename="../map/CMapVRT.cpp" line="60"/>
-        <source>Failed to load file: %1</source>
-        <translation>Die Datei konnte nicht geladen werden: %1</translation>
+        <location filename="../map/CMapIMG.cpp" line="190"/>
+        <source>Polish</source>
+        <translation>Polnisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="89"/>
-        <source>File must be 8 bit palette or gray indexed.</source>
-        <translation>Die Datei muss eine 8 bit Palette haben, oder Graustufen.</translation>
+        <location filename="../map/CMapIMG.cpp" line="191"/>
+        <source>Turkish</source>
+        <translation>Türkisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="126"/>
-        <source>No georeference information found.</source>
-        <translation>Keine Georeferenzierung gefunden.</translation>
+        <location filename="../map/CMapIMG.cpp" line="192"/>
+        <source>Greek</source>
+        <translation>Griechisch</translation>
     </message>
-</context>
-<context>
-    <name>CMapVrtBuilder</name>
     <message>
-        <location filename="../tool/CMapVrtBuilder.cpp" line="28"/>
-        <source>Build GDAL VRT</source>
-        <translation>GDAL VRT erstellen</translation>
+        <location filename="../map/CMapIMG.cpp" line="193"/>
+        <source>Slovenian</source>
+        <translation>Slowenisch</translation>
     </message>
     <message>
-        <location filename="../tool/CMapVrtBuilder.cpp" line="46"/>
-        <source>Select files...</source>
-        <translation>Dateien auswählen...</translation>
+        <location filename="../map/CMapIMG.cpp" line="194"/>
+        <source>Russian</source>
+        <translation>Russisch</translation>
     </message>
     <message>
-        <location filename="../tool/CMapVrtBuilder.cpp" line="70"/>
-        <source>Select target file...</source>
-        <translation>Zieldatei auswählen...</translation>
+        <location filename="../map/CMapIMG.cpp" line="195"/>
+        <source>Estonian</source>
+        <translation>Estnisch</translation>
     </message>
     <message>
-        <location filename="../tool/CMapVrtBuilder.cpp" line="114"/>
-        <source>!!! done !!!
-</source>
-        <translation>!!! erledigt !!!</translation>
+        <location filename="../map/CMapIMG.cpp" line="196"/>
+        <source>Latvian</source>
+        <translation>Lettisch</translation>
     </message>
     <message>
-        <source>!!! failed !!!
-</source>
-        <translation type="obsolete">!!! fehlgeschlagen !!!</translation>
+        <location filename="../map/CMapIMG.cpp" line="197"/>
+        <source>Romanian</source>
+        <translation>Rumänisch</translation>
     </message>
-</context>
-<context>
-    <name>CMapWMTS</name>
     <message>
-        <location filename="../map/CMapWMTS.cpp" line="43"/>
-        <location filename="../map/CMapWMTS.cpp" line="53"/>
-        <location filename="../map/CMapWMTS.cpp" line="63"/>
-        <location filename="../map/CMapWMTS.cpp" line="72"/>
-        <location filename="../map/CMapWMTS.cpp" line="157"/>
-        <location filename="../map/CMapWMTS.cpp" line="217"/>
-        <source>Error...</source>
-        <translation>Fehler...</translation>
+        <location filename="../map/CMapIMG.cpp" line="198"/>
+        <source>Albanian</source>
+        <translatorcomment>Albanisch</translatorcomment>
+        <translation>Albanisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapWMTS.cpp" line="43"/>
-        <source>Failed to open %1</source>
-        <translation>Öffnen fehlgeschlagen: %1</translation>
+        <location filename="../map/CMapIMG.cpp" line="199"/>
+        <source>Bosnian</source>
+        <translation>Bosnisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapWMTS.cpp" line="53"/>
-        <source>Failed to read: %1
-line %2, column %3:
- %4</source>
-        <translation>Lesen fehlgeschlagen: %1
-Zeile %2, Spalte %3:
-%4</translation>
+        <location filename="../map/CMapIMG.cpp" line="200"/>
+        <source>Lithuanian</source>
+        <translation>Litauisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapWMTS.cpp" line="63"/>
-        <source>Failed to read: %1
-Unknown structure.</source>
-        <translation>Lesen fehlgeschlagen: %1
-Unbekannte Struktur.</translation>
+        <location filename="../map/CMapIMG.cpp" line="201"/>
+        <source>Serbian</source>
+        <translation>Serbisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapWMTS.cpp" line="72"/>
-        <source>Unexpected service. '* WMTS 1.0.0' is expected. '%1 %2' is read.</source>
-        <translation>Unerwarteter Dienst. '* WMTS 1.0.0' wird erwartet. '%1 %2' wurde gelesen.</translation>
+        <location filename="../map/CMapIMG.cpp" line="202"/>
+        <source>Macedonian</source>
+        <translation>Makedonisch</translation>
     </message>
     <message>
-        <source>Unexpexted service. '* WMTS 1.0.0' is expected. '%1 %2' is read.</source>
-        <translation type="vanished">Unerwarteter Dienst. '* WMTS 1.0.0' wird erwartet. '%1 %2' wurde gelesen.</translation>
+        <location filename="../map/CMapIMG.cpp" line="203"/>
+        <source>Bulgarian</source>
+        <translation>Bulgarisch</translation>
     </message>
     <message>
-        <location filename="../map/CMapWMTS.cpp" line="151"/>
-        <source>This map requires OpenSSL support. However due to legal restrictions in some countries OpenSSL is not packaged with QMapShack. You can have a look at the <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> for binaries. You have to copy libeay32.dll and ssleay32.dll into the QMapShack program directory.</source>
-        <translation>Diese Karte benötigt OpenSSL. Aufgrund rechtlicher Beschränkungen in einigen Ländern, ist OpenSSL nicht Bestandteil von QMapShack. Sie können sich auf der <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> nach Binäries umsehen. Sie müssen die Dateien libeay32.dll and ssleay32.dll in das QMapShack Programmverzeichnis kopieren.</translation>
+        <location filename="../map/CMapIMG.cpp" line="260"/>
+        <source>Major highway</source>
+        <translation>Autobahn</translation>
     </message>
     <message>
-        <source>This map requires OpenSSL support. However due to legal restrictions in some countries OpenSSL is not packaged with QMapShack. You can have a look at the <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> for binaries.</source>
-        <translation type="vanished">Diese Karte benötigt OpenSSL. Aufgrund rechtlicher Beschränkungen in einigen Ländern, ist OpenSSL nicht Bestandteil von QMapShack. Sie können sich auf der <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> nach Binäries umsehen.</translation>
+        <location filename="../map/CMapIMG.cpp" line="261"/>
+        <source>Principal highway</source>
+        <translation>Bundesstraße</translation>
     </message>
     <message>
-        <source>--- All ---</source>
-        <translation type="obsolete">--- Alle ---</translation>
+        <location filename="../map/CMapIMG.cpp" line="262"/>
+        <source>Other highway</source>
+        <translation>Schnellstraße</translation>
     </message>
     <message>
-        <location filename="../map/CMapWMTS.cpp" line="413"/>
-        <source><b>%1</b>: %2 tiles pending<br/></source>
-        <translation><b>%1</b>: %2 unerledigte Kacheln</translation>
+        <location filename="../map/CMapIMG.cpp" line="263"/>
+        <source>Arterial road</source>
+        <translation>Fernstraße</translation>
     </message>
     <message>
-        <source>%1: %2 tiles pending</source>
-        <translation type="obsolete">%1: %2 unerledigte Kacheln</translation>
+        <location filename="../map/CMapIMG.cpp" line="264"/>
+        <source>Collector road</source>
+        <translation>Sammelstraße</translation>
     </message>
     <message>
-        <source>Unexpexted service. 'OGC WMTS 1.0.0' is expected. '%1 %2' is read.</source>
-        <translation type="obsolete">Unerwarterter Dienst. 'OGC WMTS 1.0.0' Wird erwartet. '%1 %2' wird gelesen.</translation>
+        <location filename="../map/CMapIMG.cpp" line="265"/>
+        <source>Residential street</source>
+        <translation>Wohnstraße</translation>
     </message>
     <message>
-        <location filename="../map/CMapWMTS.cpp" line="217"/>
-        <source>No georeference information found.</source>
-        <translation>Keine Georeferenzierung gefunden.</translation>
+        <location filename="../map/CMapIMG.cpp" line="266"/>
+        <source>Alley/Private road</source>
+        <translation>Allee/Privatstraße</translation>
     </message>
-</context>
-<context>
-    <name>CMouseEditArea</name>
     <message>
-        <source><b>Edit Area</b><br/>Select a corner point for more options.<br/></source>
-        <translation type="obsolete"><b>Gebiet bearbeiten</b><br/>Wähle einen Eckpunkt für mehr Optionen.<br/></translation>
+        <location filename="../map/CMapIMG.cpp" line="267"/>
+        <source>Highway ramp, low speed</source>
+        <translation>Auffahrt (langsam)</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseEditArea.cpp" line="28"/>
-        <location filename="../mouse/CMouseEditArea.cpp" line="35"/>
-        <source>Area</source>
-        <translation>Gebiet</translation>
+        <location filename="../map/CMapIMG.cpp" line="268"/>
+        <source>Highway ramp, high speed</source>
+        <translation>Auffahrt (schnell)</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseEditArea.cpp" line="37"/>
-        <source><b>Edit Area</b><br/>Select a function and a routing mode via the tool buttons. Next select a point of the line. Only points marked with a large square can be changed. The ones with a black dot are subpoints introduced by routing.<br/></source>
-        <translation><b>Gebiet bearbeiten</b><br/>Wählen Sie mittels der Werkzeug-Buttons eine Funkion und einen Routing-Modus. Als nächstes wählen Sie einen Punkt auf der Linie. Es können nur Punkte geändert werden, die mit einem großen Quadrat markiert sind. Schwarze Punkte sind durchs Routing erzeugte Unterpunkte.<br/></translation>
+        <location filename="../map/CMapIMG.cpp" line="269"/>
+        <source>Unpaved road</source>
+        <translation>Unbefestigte Straße</translation>
     </message>
-</context>
-<context>
-    <name>CMouseEditLine</name>
     <message>
-        <source>Add points?</source>
-        <translation type="obsolete">Punkte hinzufügen?</translation>
+        <location filename="../map/CMapIMG.cpp" line="270"/>
+        <source>Major highway connector</source>
+        <translation>Autobahnzubringer</translation>
     </message>
     <message>
-        <source>Add points to temporary line?</source>
-        <translation type="obsolete">Punkte zur temporären Linie hinzufügen?</translation>
+        <location filename="../map/CMapIMG.cpp" line="271"/>
+        <source>Roundabout</source>
+        <translation>Kreisverkehr</translation>
     </message>
     <message>
-        <source>Warning!</source>
-        <translation type="obsolete">Warnung!</translation>
+        <location filename="../map/CMapIMG.cpp" line="272"/>
+        <source>Railroad</source>
+        <translation>Eisenbahn</translation>
     </message>
     <message>
-        <source>This will replace all data of the orignal by a simple line of coordinates. All other data will be lost permanently.</source>
-        <translation type="obsolete">Alle ursprünglichen Daten werden durch eine einfache Koordinatenlinie ersetzt. Alle anderen Daten sind dauerhaft verloren.</translation>
+        <location filename="../map/CMapIMG.cpp" line="273"/>
+        <source>Shoreline</source>
+        <translation>Küstenlinie</translation>
     </message>
-</context>
-<context>
-    <name>CMouseEditRte</name>
     <message>
-        <source><b>Edit Route Points</b><br/>Select a route point for more options.<br/></source>
-        <translation type="obsolete"><b>Routenpunkte bearbeiten</b><br/>Wählen Sie einen Routenpunkt für mehr Optionen.<br/></translation>
+        <location filename="../map/CMapIMG.cpp" line="274"/>
+        <source>Trail</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseEditRte.cpp" line="30"/>
-        <location filename="../mouse/CMouseEditRte.cpp" line="37"/>
-        <source>Route</source>
-        <translation>Routen</translation>
+        <location filename="../map/CMapIMG.cpp" line="275"/>
+        <source>Stream</source>
+        <translation>Bach</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseEditRte.cpp" line="39"/>
-        <source><b>Edit Route Points</b><br/>Select a function and a routing mode via the tool buttons. Next select a point of the line. Only points marked with a large square can be changed. The ones with a black dot are subpoints introduced by routing.<br/></source>
-        <translation><b>Routenpunkte bearbeiten</b><br/>Wählen Sie mittels der Werkzeug-Buttons eine Funkion und einen Routing-Modus. Als nächstes wählen Sie einen Punkt auf der Linie. Es können nur Punkte geändert werden, die mit einem großen Quadrat markiert sind. Schwarze Punkte sind durchs Routing erzeugte Unterpunkte.<br/></translation>
+        <location filename="../map/CMapIMG.cpp" line="276"/>
+        <source>Time zone</source>
+        <translation>Zeitzone</translation>
     </message>
-</context>
-<context>
-    <name>CMouseEditTrk</name>
     <message>
-        <source><b>Edit Track Points</b><br/>Select a track point for more options.<br/></source>
-        <translation type="obsolete"><b>Trackpunkte bearbeiten</b><br/>Wähle einen Trackpunkt für mehr Optionen.<br/></translation>
+        <location filename="../map/CMapIMG.cpp" line="277"/>
+        <location filename="../map/CMapIMG.cpp" line="278"/>
+        <source>Ferry</source>
+        <translation>Fähre</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="28"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="35"/>
-        <source>Track</source>
-        <translation>Track</translation>
+        <location filename="../map/CMapIMG.cpp" line="279"/>
+        <source>State/province border</source>
+        <translation>Staats-/Landesgrenze</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="38"/>
-        <source><b>Edit Track Points</b><br/>Select a function and a routing mode via the tool buttons. Next select a point of the line. Only points marked with a large square can be changed. The ones with a black dot are subpoints introduced by routing.<br/></source>
-        <translation><b>Trackpunkte bearbeiten</b><br/>Wählen Sie mittels der Werkzeug-Buttons eine Funkion und einen Routing-Modus. Als nächstes wählen Sie einen Punkt auf der Linie. Es können nur Punkte geändert werden, die mit einem großen Quadrat markiert sind. Schwarze Punkte sind durchs Routing erzeugte Unterpunkte.<br/></translation>
+        <location filename="../map/CMapIMG.cpp" line="280"/>
+        <source>County/parish border</source>
+        <translation>Kreis-/Gemeindegrenze</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="80"/>
-        <source>Warning!</source>
-        <translation>Warnung!</translation>
+        <location filename="../map/CMapIMG.cpp" line="281"/>
+        <source>International border</source>
+        <translation>Internationale Grenze</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="80"/>
-        <source>This will replace all data of the original by a simple line of coordinates. All other data will be lost permanently.</source>
-        <translation>Alle ursprünglichen Daten werden durch eine einfache Koordinatenlinie ersetzt. Alle anderen Daten sind dauerhaft verloren.</translation>
+        <location filename="../map/CMapIMG.cpp" line="282"/>
+        <source>River</source>
+        <translation>Fluss</translation>
     </message>
     <message>
-        <source>This will replace all data of the orignal by a simple line of coordinates. All other data will be lost permanently.</source>
-        <translation type="vanished">Alle ursprünglichen Daten werden durch eine einfache Koordinatenlinie ersetzt. Alle anderen Daten sind dauerhaft verloren.</translation>
+        <location filename="../map/CMapIMG.cpp" line="283"/>
+        <source>Minor land contour</source>
+        <translation>Höhenlinie klein</translation>
     </message>
-</context>
-<context>
-    <name>CMouseNormal</name>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="39"/>
-        <source>Add Waypoint</source>
-        <translation>Wegpunkt hinzufügen</translation>
+        <location filename="../map/CMapIMG.cpp" line="284"/>
+        <source>Intermediate land contour</source>
+        <translation>Höhenlinie mittel</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="40"/>
-        <source>Add Track</source>
-        <translation>Track hinzufügen</translation>
+        <location filename="../map/CMapIMG.cpp" line="285"/>
+        <source>Major land contour</source>
+        <translation>Höhenlinie groß</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="41"/>
-        <source>Add Route</source>
-        <translation>Route hinzufügen</translation>
+        <location filename="../map/CMapIMG.cpp" line="286"/>
+        <source>Minor depth contour</source>
+        <translation>Tiefenlinie klein</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="42"/>
-        <source>Add Area</source>
-        <translation>Gebiet hinzufügen</translation>
+        <location filename="../map/CMapIMG.cpp" line="287"/>
+        <source>Intermediate depth contour</source>
+        <translation>Tiefenlinie mittel</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="45"/>
-        <source>Copy position</source>
-        <translation>Position kopieren</translation>
+        <location filename="../map/CMapIMG.cpp" line="288"/>
+        <source>Major depth contour</source>
+        <translation>Tiefenlinie groß</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseNormal.cpp" line="46"/>
-        <source>Copy position (Grid)</source>
-        <translation>Position kopieren (Gitter)</translation>
+        <location filename="../map/CMapIMG.cpp" line="289"/>
+        <source>Intermittent stream</source>
+        <translation>Intermittierender Bach</translation>
     </message>
-</context>
-<context>
-    <name>CMousePrint</name>
     <message>
-        <location filename="../mouse/CMousePrint.cpp" line="30"/>
-        <source><b>Save(Print) Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners. Save/print the selection by a left click on the disc/printer icon in the center of the selection.</source>
-        <translation><b>Karte speichern (drucken)</b><br/>Wählen Sie mit der linken Maustaste einen rechteckigen Bereich auf der Karte aus. Die Auswahl kann durch Verschieben der Eckpunkte mit der Maus angepasst werden. Abbruch mit Rechtsklick. Speichern/Drucken erfolgt durch Linksklick auf das entsprechende Symbol in der Mitte der Auswahl.</translation>
+        <location filename="../map/CMapIMG.cpp" line="290"/>
+        <location filename="../map/CMapIMG.cpp" line="372"/>
+        <source>Airport runway</source>
+        <translation>Landebahn</translation>
     </message>
-</context>
-<context>
-    <name>CMouseRangeTrk</name>
     <message>
-        <location filename="../mouse/CMouseRangeTrk.cpp" line="42"/>
-        <source><b>Select Range</b><br/>Select first track point. And then a second one.<br/></source>
-        <translation><b>Bereich wählen</b><br/>Wählen Sie einen ersten Punkt. Dann einen zweiten.<br/></translation>
+        <location filename="../map/CMapIMG.cpp" line="291"/>
+        <source>Pipeline</source>
+        <translation>Pipeline</translation>
     </message>
-</context>
-<context>
-    <name>CPhotoAlbum</name>
     <message>
-        <location filename="../widgets/CPhotoAlbum.cpp" line="73"/>
-        <source>Select images...</source>
-        <translation>Bilder wählen...</translation>
+        <location filename="../map/CMapIMG.cpp" line="292"/>
+        <source>Powerline</source>
+        <translation>Stromleitung</translation>
     </message>
-</context>
-<context>
-    <name>CPlotDistance</name>
     <message>
-        <source>distance [%1]</source>
-        <translation type="vanished">Entf. [%1]</translation>
+        <location filename="../map/CMapIMG.cpp" line="293"/>
+        <source>Marine boundary</source>
+        <translation>Meeresgrenze</translation>
     </message>
     <message>
-        <source>time</source>
-        <translation type="vanished">Uhrzeit</translation>
+        <location filename="../map/CMapIMG.cpp" line="294"/>
+        <source>Hazard boundary</source>
+        <translation>Gefahrbereichgrenze</translation>
     </message>
     <message>
-        <source>time [h]</source>
-        <translation type="obsolete">Uhrzeit</translation>
+        <location filename="../map/CMapIMG.cpp" line="359"/>
+        <source>Large urban area (&gt;200K)</source>
+        <translation>Großes Wohngebiet (&gt;200K)</translation>
     </message>
     <message>
-        <source>distance. [%1]</source>
-        <translation type="vanished">Entf. [%1]</translation>
+        <location filename="../map/CMapIMG.cpp" line="360"/>
+        <source>Small urban area (&lt;200K)</source>
+        <translation>Kleines Wohngebiet (&lt;200K)</translation>
     </message>
-</context>
-<context>
-    <name>CPlotProfile</name>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="63"/>
-        <source>distance [%1]</source>
-        <translation>Entfernung [%1]</translation>
+        <location filename="../map/CMapIMG.cpp" line="361"/>
+        <source>Rural housing area</source>
+        <translation>Ländliches Wohngebiet</translation>
     </message>
     <message>
-        <source>time [h]</source>
-        <translation type="vanished">Zeit [h]</translation>
+        <location filename="../map/CMapIMG.cpp" line="362"/>
+        <source>Military base</source>
+        <translation>Militärbasis</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="64"/>
-        <source>alt. [%1]</source>
-        <translation>Höhe [%1]</translation>
+        <location filename="../map/CMapIMG.cpp" line="363"/>
+        <source>Parking lot</source>
+        <translation>Parkplatz</translation>
     </message>
-</context>
-<context>
-    <name>CPlotSpeed</name>
     <message>
-        <source>distance [%1]</source>
-        <translation type="vanished">Entfernung [%1]</translation>
+        <location filename="../map/CMapIMG.cpp" line="364"/>
+        <source>Parking garage</source>
+        <translation>Parkhaus</translation>
     </message>
     <message>
-        <source>time [h]</source>
-        <translation type="vanished">Zeit [h]</translation>
+        <location filename="../map/CMapIMG.cpp" line="365"/>
+        <source>Airport</source>
+        <translation>Flugplatz</translation>
     </message>
     <message>
-        <source>speed. [%1]</source>
-        <translation type="vanished">Geschw. [%1]</translation>
+        <location filename="../map/CMapIMG.cpp" line="366"/>
+        <source>Shopping center</source>
+        <translation>Einkaufszentrum</translation>
     </message>
-</context>
-<context>
-    <name>CPrintDialog</name>
     <message>
-        <location filename="../print/CPrintDialog.cpp" line="67"/>
-        <source>Print Map...</source>
-        <translation>Karte drucken...</translation>
+        <location filename="../map/CMapIMG.cpp" line="367"/>
+        <source>Marina</source>
+        <translation>Jachthafen</translation>
     </message>
     <message>
-        <location filename="../print/CPrintDialog.cpp" line="74"/>
-        <source>Save Map as Image...</source>
-        <translation>Karte als Bild speichern...</translation>
-    </message>
-    <message>
-        <location filename="../print/CPrintDialog.cpp" line="94"/>
-        <source>Printer Properties...</source>
-        <translation>Drucker Eigenschaften...</translation>
+        <location filename="../map/CMapIMG.cpp" line="368"/>
+        <source>University/College</source>
+        <translation>Universität/Hochschule</translation>
     </message>
     <message>
-        <location filename="../print/CPrintDialog.cpp" line="169"/>
-        <source>Pages: %1 x %2</source>
-        <translation>Seiten: %1 x %2</translation>
+        <location filename="../map/CMapIMG.cpp" line="369"/>
+        <source>Hospital</source>
+        <translation>Krankenhaus</translation>
     </message>
     <message>
-        <location filename="../print/CPrintDialog.cpp" line="170"/>
-        <source>Zoom with mouse wheel on map below to change resolution:
-
-%1x%2 pixel
-x: %3 m/px
-y: %4 m/px</source>
-        <translation>Zoomen Sie mit dem Mausrad auf der Karte unten, um die Auflösung zu ändern:
-
-%1x%2 Pixel
-x: %3 m/px
-y: %4 m/px</translation>
+        <location filename="../map/CMapIMG.cpp" line="370"/>
+        <source>Industrial complex</source>
+        <translation>Industrie</translation>
     </message>
     <message>
-        <location filename="../print/CPrintDialog.cpp" line="216"/>
-        <source>Printing pages.</source>
-        <translation>Drucke Seiten.</translation>
+        <location filename="../map/CMapIMG.cpp" line="371"/>
+        <source>Reservation</source>
+        <translation>Schutzgebiet</translation>
     </message>
     <message>
-        <location filename="../print/CPrintDialog.cpp" line="260"/>
-        <source>Save map...</source>
-        <translation>Karte speichern...</translation>
+        <location filename="../map/CMapIMG.cpp" line="373"/>
+        <source>Man-made area</source>
+        <translation>Fabrikgelände</translation>
     </message>
-</context>
-<context>
-    <name>CProgressDialog</name>
     <message>
-        <location filename="../helpers/CProgressDialog.cpp" line="40"/>
-        <source>Elapsed time: %1</source>
-        <translation>Verstrichene Zeit: %1</translation>
+        <location filename="../map/CMapIMG.cpp" line="374"/>
+        <source>Sports complex</source>
+        <translation>Sportanlage</translation>
     </message>
     <message>
-        <location filename="../helpers/CProgressDialog.cpp" line="74"/>
-        <source>Elapsed time: %1 seconds.</source>
-        <translation>Verstrichene Zeit: %1 Sekunden.</translation>
+        <location filename="../map/CMapIMG.cpp" line="375"/>
+        <source>Golf course</source>
+        <translation>Golfplatz</translation>
     </message>
-</context>
-<context>
-    <name>CProjWizard</name>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="62"/>
-        <source>north</source>
-        <translation>Norden</translation>
+        <location filename="../map/CMapIMG.cpp" line="376"/>
+        <source>Cemetery</source>
+        <translation>Friedhof</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="63"/>
-        <source>south</source>
-        <translation>Süden</translation>
+        <location filename="../map/CMapIMG.cpp" line="377"/>
+        <location filename="../map/CMapIMG.cpp" line="378"/>
+        <location filename="../map/CMapIMG.cpp" line="379"/>
+        <source>National park</source>
+        <translation>Nationalpark</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="221"/>
-        <source>Error...</source>
-        <translation>Fehler...</translation>
+        <location filename="../map/CMapIMG.cpp" line="380"/>
+        <source>City park</source>
+        <translation>Stadtpark</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="221"/>
-        <source>The value
-'%1'
-is not a valid coordinate system definition:
-%2</source>
-        <translation>Die Eingabe:
-'%1'
-ist keine gültige Koordinatensystemdefinition:
-%2</translation>
+        <location filename="../map/CMapIMG.cpp" line="381"/>
+        <location filename="../map/CMapIMG.cpp" line="382"/>
+        <location filename="../map/CMapIMG.cpp" line="383"/>
+        <source>State park</source>
+        <translation></translation>
     </message>
-</context>
-<context>
-    <name>CProjWpt</name>
     <message>
-        <location filename="../gis/wpt/CProjWpt.cpp" line="62"/>
-        <source>Edit name...</source>
-        <translation>Name bearbeiten...</translation>
+        <location filename="../map/CMapIMG.cpp" line="384"/>
+        <source>Forest</source>
+        <translation>Wald</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CProjWpt.cpp" line="62"/>
-        <source>Enter new waypoint name.</source>
-        <translation>Geben Sie einen neuen Namen für den Wegpunkt ein.</translation>
+        <location filename="../map/CMapIMG.cpp" line="385"/>
+        <source>Ocean</source>
+        <translation>Ozean</translation>
     </message>
-</context>
-<context>
-    <name>CQlgtDb</name>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="308"/>
-        <source>Migrating database from version 4 to 5.</source>
-        <translation>Datenbank von Version 4 nach 5 migrieren.</translation>
+        <location filename="../map/CMapIMG.cpp" line="386"/>
+        <location filename="../map/CMapIMG.cpp" line="388"/>
+        <location filename="../map/CMapIMG.cpp" line="398"/>
+        <source>Blue (unknown)</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="362"/>
-        <source>Migrating database from version 5 to 6.</source>
-        <translation>Datenbank von Version 5 nach 6 migrieren.</translation>
+        <location filename="../map/CMapIMG.cpp" line="387"/>
+        <source>Sea</source>
+        <translation>Meer</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="420"/>
-        <source>Migrating database from version 6 to 7.</source>
-        <translation>Datenbank von Version 6 nach 7 migrieren.</translation>
+        <location filename="../map/CMapIMG.cpp" line="389"/>
+        <location filename="../map/CMapIMG.cpp" line="390"/>
+        <location filename="../map/CMapIMG.cpp" line="397"/>
+        <source>Large lake</source>
+        <translation>See</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="486"/>
-        <source>Migrating database from version 7 to 8.</source>
-        <translation>Datenbank von Version 7 nach 8 migrieren.</translation>
+        <location filename="../map/CMapIMG.cpp" line="391"/>
+        <location filename="../map/CMapIMG.cpp" line="392"/>
+        <source>Medium lake</source>
+        <translation>See</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="515"/>
-        <source>Migrating database from version 8 to 9.</source>
-        <translation>Datenbank von Version 8 nach 9 migrieren.</translation>
+        <location filename="../map/CMapIMG.cpp" line="393"/>
+        <location filename="../map/CMapIMG.cpp" line="394"/>
+        <source>Small lake</source>
+        <translation>See</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="538"/>
-        <source>Open database: %1</source>
-        <translation>Öffne Datenbank: %1</translation>
+        <location filename="../map/CMapIMG.cpp" line="395"/>
+        <location filename="../map/CMapIMG.cpp" line="396"/>
+        <source>Major lake</source>
+        <translation>See</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="547"/>
-        <source>Folders:          %1</source>
-        <translation>Ordner: %1</translation>
+        <location filename="../map/CMapIMG.cpp" line="399"/>
+        <source>Major River</source>
+        <translation>Strom</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="556"/>
-        <source>Tracks:           %1</source>
-        <translation>Tracks: %1</translation>
+        <location filename="../map/CMapIMG.cpp" line="400"/>
+        <source>Large River</source>
+        <translation>Fluss</translation>
     </message>
     <message>
-        <source>Routes:           %1 (not supported yet)</source>
-        <translation type="obsolete">Routen: %1 (noch nicht unterstützt)</translation>
+        <location filename="../map/CMapIMG.cpp" line="401"/>
+        <source>Medium River</source>
+        <translation>Fluss</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="564"/>
-        <source>Routes:           %1 (Only the basic route will be copied)</source>
-        <translation>Routen:           %1 (Es wird nur die Basisroute kopiert)</translation>
+        <location filename="../map/CMapIMG.cpp" line="402"/>
+        <source>Small River</source>
+        <translation>Fluss</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="572"/>
-        <source>Waypoints:        %1</source>
-        <translation>Wegpunkte: %1</translation>
+        <location filename="../map/CMapIMG.cpp" line="405"/>
+        <source>Intermittent water</source>
+        <translation>Gewässer</translation>
     </message>
     <message>
-        <source>Overlays:         %1 (only area overlays will be converted to QMapShack)</source>
-        <translation type="obsolete">Overlays:         %1 (Es werden nur Gebietsoverlays nach QMapShack konvertiert)</translation>
+        <location filename="../map/CMapIMG.cpp" line="406"/>
+        <source>Wetland/Swamp</source>
+        <translation>Feuchtgebiet/Sumpf</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="580"/>
-        <source>Overlays:         %1 (areas will be converted as areas, distance lines will be converted to tracks, all other overlay items will be lost)</source>
-        <translation>Overlays:         %1 (Flächen werden als Flächen übernommen, Distanzlinien werden als Tracks übernommen, alle anderen Overlays gehen verloren)</translation>
+        <location filename="../map/CMapIMG.cpp" line="407"/>
+        <source>Glacier</source>
+        <translation>Gletscher</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="587"/>
-        <source>Diaries:          %1</source>
-        <translation>Tagebücher:          %1</translation>
+        <location filename="../map/CMapIMG.cpp" line="408"/>
+        <source>Orchard/Plantation</source>
+        <translation>Obstgarten/Plantage</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="594"/>
-        <source>Map selections:   %1 (can't be converted to QMapShack)</source>
-        <translation>Kartenselektionen:   %1 (können nicht nach QMapShack konvertiert werden)</translation>
+        <location filename="../map/CMapIMG.cpp" line="409"/>
+        <source>Scrub</source>
+        <translation>Buschwerk</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="600"/>
-        <source>------ Start to convert database to %1------</source>
-        <translation>------ Konvertierung der Datenbank %1 beginnt ------</translation>
+        <location filename="../map/CMapIMG.cpp" line="410"/>
+        <source>Tundra</source>
+        <translation>Tundra</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="604"/>
-        <source>Failed to create target database.</source>
-        <translation>Erstellen der Zieldatenbank fehlgeschlagen.</translation>
+        <location filename="../map/CMapIMG.cpp" line="411"/>
+        <source>Flat</source>
+        <translation>Ebene</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="605"/>
-        <source>------ Abort ------</source>
-        <translation>------ Abbrechen ------</translation>
+        <location filename="../map/CMapIMG.cpp" line="412"/>
+        <source>???</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="633"/>
-        <source>------ Done ------</source>
-        <translation>------ Fertig ------</translation>
+        <location filename="../map/CMapIMG.cpp" line="448"/>
+        <source>Failed to read: </source>
+        <translation>Lesen fehlgeschlagen:</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="641"/>
-        <source>Restore folders...</source>
-        <translation>Ordner wiederherstellen...</translation>
+        <location filename="../map/CMapIMG.cpp" line="491"/>
+        <source>Failed to open: </source>
+        <translation>Öffnen fehlgeschlagen:</translation>
     </message>
     <message>
-        <source>Abort</source>
-        <translation type="obsolete">Abbrechen</translation>
+        <location filename="../map/CMapIMG.cpp" line="515"/>
+        <location filename="../map/CMapIMG.cpp" line="519"/>
+        <source>Bad file format: </source>
+        <translation>Falsches Format:</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="661"/>
-        <source>Imported %1 folders and %2 diaries</source>
-        <translation>Importiert wurden %1 Ordner und %2 Tagebücher</translation>
+        <location filename="../map/CMapIMG.cpp" line="608"/>
+        <source>Failed to read file structure: </source>
+        <translation>Lesen der Dateistruktur fehlgeschlagen:</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="667"/>
-        <source>Copy items...</source>
-        <translation>Elemente kopieren...</translation>
+        <location filename="../map/CMapIMG.cpp" line="643"/>
+        <source>Loading %1</source>
+        <translation>Lädt %1</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="685"/>
-        <source>Imported %1 tracks, %2 waypoints, %3 routes, %4 areas</source>
-        <translation>Importiert wurden %1 Tracks, %2 Wegpunkte, %3 Routen, %4 Gebiete</translation>
+        <location filename="../map/CMapIMG.cpp" line="649"/>
+        <source>User abort: </source>
+        <translation>Benutzerabbruch:</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="686"/>
-        <source>Import folders...</source>
-        <translation>Importiere Ordner...</translation>
+        <location filename="../map/CMapIMG.cpp" line="652"/>
+        <source>File is NT format. QMapShack is unable to read map files with NT format: </source>
+        <translation>Die Datei hat das NT Format. QMapShack kann dieses Format nicht lesen:</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtDb.cpp" line="751"/>
-        <source>Overlay of type '%1' cant be converted</source>
-        <translation>Das Overlay vom Typ '%1' kann nicht konvertiert werden</translation>
-    </message>
-</context>
-<context>
-    <name>CQmsDb</name>
-    <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="47"/>
-        <source>Existing file...</source>
-        <translation>Vorhandene Datei...</translation>
+        <location filename="../map/CMapIMG.cpp" line="744"/>
+        <source>File contains locked / encypted data. Garmin does not want you to use this file with any other software than the one supplied by Garmin.</source>
+        <translation>Die Datei enthält verschlüsselte Daten. Garmin möchte nicht dass diese Datei mit einer anderen Software, als der von Garmin bereitgestellten, benutzt wird.</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="47"/>
-        <source>Remove existing %1?</source>
-        <translation>Entferne vorhandene %1?</translation>
+        <location filename="../map/CMapIMG.cpp" line="2502"/>
+        <location filename="../map/CMapIMG.cpp" line="2510"/>
+        <location filename="../map/CMapIMG.cpp" line="2514"/>
+        <location filename="../map/CMapIMG.cpp" line="2519"/>
+        <location filename="../map/CMapIMG.cpp" line="2565"/>
+        <location filename="../map/CMapIMG.cpp" line="2573"/>
+        <location filename="../map/CMapIMG.cpp" line="2577"/>
+        <location filename="../map/CMapIMG.cpp" line="2582"/>
+        <source>Point of Interest</source>
+        <translation>Ort von Interesse</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="52"/>
-        <source>Remove existing file %1</source>
-        <translation>Entferne vorhandene Datei %1</translation>
+        <location filename="../map/CMapIMG.cpp" line="2709"/>
+        <source>Unknown</source>
+        <translation>Unbekannt</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQmsDb.cpp" line="163"/>
-        <source>%1: drop item with QLGT DB ID %2</source>
-        <translation>%1: verwerfe das Element mit der QLGT DB ID %2</translation>
+        <location filename="../map/CMapIMG.cpp" line="2755"/>
+        <location filename="../map/CMapIMG.cpp" line="2763"/>
+        <location filename="../map/CMapIMG.cpp" line="2770"/>
+        <source>Area</source>
+        <translation>Gebiet</translation>
     </message>
 </context>
 <context>
-    <name>CRouterMapQuest</name>
+    <name>CMapList</name>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="37"/>
-        <source>Fastest</source>
-        <translation>Schnellste</translation>
+        <location filename="../map/CMapList.cpp" line="205"/>
+        <source>Deactivate</source>
+        <translation>Deaktivieren</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="38"/>
-        <source>Shortest</source>
-        <translation>Kürzeste</translation>
+        <location filename="../map/CMapList.cpp" line="205"/>
+        <source>Activate</source>
+        <translation>Aktivieren</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="39"/>
-        <source>Bicycle</source>
-        <translation>Fahrrad</translation>
+        <location filename="../map/CMapList.cpp" line="228"/>
+        <source>Where do you want to store maps?</source>
+        <translation>Wo wollen Sie die Karten speichern?</translation>
     </message>
+</context>
+<context>
+    <name>CMapMAP</name>
     <message>
-        <source>Pedestrian/pub. transp.</source>
-        <translation type="obsolete">Fußgänger/öffentl. Transport</translation>
+        <location filename="../map/CMapMAP.cpp" line="46"/>
+        <source>Failed ...</source>
+        <translation>Fehlgeschlagen...</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="40"/>
-        <source>Pedestrian</source>
-        <translation>Fußgänger</translation>
+        <location filename="../map/CMapMAP.cpp" line="63"/>
+        <source>Failed to open: </source>
+        <translation>Öffnen fehlgeschlagen: </translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="42"/>
-        <source>US English</source>
-        <translation>Englisch (USA)</translation>
+        <location filename="../map/CMapMAP.cpp" line="73"/>
+        <source>Bad file format: </source>
+        <translation>Falsches Dateiformat: </translation>
     </message>
+</context>
+<context>
+    <name>CMapPathSetup</name>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="43"/>
-        <source>British English</source>
-        <translation>Englisch (Britisch)</translation>
+        <location filename="../map/CMapPathSetup.cpp" line="47"/>
+        <source>Add or remove paths containing maps. There can be multiple maps in a path but no sub-path is parsed. Supported formats are: %1</source>
+        <translation>Hinzufügen oder Entfernen von Karten. In einem Verzeichnis können mehrere Karten liegen. Unterverzeichnisse werden jedoch nicht durchsucht. Unterstützte Formate sind: %1 </translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="44"/>
-        <source>Danish</source>
-        <translation>Dänisch</translation>
+        <location filename="../map/CMapPathSetup.cpp" line="62"/>
+        <source>Select map path...</source>
+        <translation>Kartenpfad wählen...</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="45"/>
-        <source>Dutch</source>
-        <translation>Niederländisch</translation>
+        <location filename="../map/CMapPathSetup.cpp" line="81"/>
+        <source>Select root path...</source>
+        <translation>Hauptverzeichnis auswählen...</translation>
     </message>
+</context>
+<context>
+    <name>CMapRMAP</name>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="46"/>
-        <source>French</source>
-        <translation>Französisch</translation>
+        <location filename="../map/CMapRMAP.cpp" line="48"/>
+        <location filename="../map/CMapRMAP.cpp" line="57"/>
+        <location filename="../map/CMapRMAP.cpp" line="127"/>
+        <location filename="../map/CMapRMAP.cpp" line="144"/>
+        <location filename="../map/CMapRMAP.cpp" line="165"/>
+        <location filename="../map/CMapRMAP.cpp" line="187"/>
+        <location filename="../map/CMapRMAP.cpp" line="209"/>
+        <location filename="../map/CMapRMAP.cpp" line="237"/>
+        <source>Error...</source>
+        <translation>Fehler...</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="47"/>
-        <source>German</source>
-        <translation>Deutsch</translation>
+        <location filename="../map/CMapRMAP.cpp" line="48"/>
+        <source>This is not a TwoNav RMAP file.</source>
+        <translation>Das ist keine bekannte TwoNav RMAP Datei.</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="48"/>
-        <source>Italian</source>
-        <translation>Italienisch</translation>
+        <location filename="../map/CMapRMAP.cpp" line="57"/>
+        <source>Unknown sub-format.</source>
+        <translation>Unbekanntes Unterformat.</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="49"/>
-        <source>Norwegian</source>
-        <translation>Norwegisch</translation>
+        <location filename="../map/CMapRMAP.cpp" line="127"/>
+        <source>Unknown version.</source>
+        <translation>Unbekannte Version.</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="50"/>
-        <source>Spanish</source>
-        <translation>Spanisch</translation>
+        <location filename="../map/CMapRMAP.cpp" line="144"/>
+        <location filename="../map/CMapRMAP.cpp" line="165"/>
+        <location filename="../map/CMapRMAP.cpp" line="187"/>
+        <location filename="../map/CMapRMAP.cpp" line="209"/>
+        <source>Failed to read reference point.</source>
+        <translation>Referenzpunkte konnten nicht gelesen werden.</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="51"/>
-        <source>Swedish</source>
-        <translation>Schwedisch</translation>
+        <location filename="../map/CMapRMAP.cpp" line="237"/>
+        <source>Unknown projection and datum (%1%2).</source>
+        <translation>Unbekannte Projektion und Datum (%1 %2).</translation>
     </message>
+</context>
+<context>
+    <name>CMapTMS</name>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="110"/>
-        <source>mode "%1"</source>
-        <translation>Modus "%1"</translation>
+        <location filename="../map/CMapTMS.cpp" line="67"/>
+        <location filename="../map/CMapTMS.cpp" line="77"/>
+        <location filename="../map/CMapTMS.cpp" line="136"/>
+        <source>Error...</source>
+        <translation>Fehler...</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="114"/>
-        <source>no highways</source>
-        <translation>keine Kraftfahrzeugstraßen</translation>
+        <location filename="../map/CMapTMS.cpp" line="67"/>
+        <source>Failed to open %1</source>
+        <translation>Öffnen fehlgeschlagen: %1</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="125"/>
-        <source>no toll roads</source>
-        <translation>keine Mautstraßen</translation>
+        <location filename="../map/CMapTMS.cpp" line="77"/>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation>Lesen fehlgeschlagen: %1
+Zeile %2, Spalte %3:
+%4</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="136"/>
-        <source>no seasonal</source>
-        <translation>keine saisonalen Straßen</translation>
+        <location filename="../map/CMapTMS.cpp" line="115"/>
+        <source>Layer %1</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="147"/>
-        <source>no unpaved</source>
-        <translation>keine unbefestigten Straßen</translation>
+        <location filename="../map/CMapTMS.cpp" line="130"/>
+        <source>This map requires OpenSSL support. However due to legal restrictions in some countries OpenSSL is not packaged with QMapShack. You can have a look at the <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> for binaries. You have to copy libeay32.dll and ssleay32.dll into the QMapShack program directory.</source>
+        <translation>Diese Karte benötigt OpenSSL. Aufgrund rechtlicher Beschränkungen in einigen Ländern, ist OpenSSL nicht Bestandteil von QMapShack. Sie können sich auf der <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> nach Binäries umsehen. Sie müssen die Dateien libeay32.dll and ssleay32.dll in das QMapShack Programmverzeichnis kopieren.</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="158"/>
-        <source>no ferry</source>
-        <translation>keine Fähren</translation>
+        <location filename="../map/CMapTMS.cpp" line="304"/>
+        <source><b>%1</b>: %2 tiles pending<br/></source>
+        <translation><b>%1</b>: %2 unerledigte Kacheln<br/></translation>
     </message>
+</context>
+<context>
+    <name>CMapVRT</name>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="169"/>
-        <source>no crossing of country borders</source>
-        <translation>keine Überqueruung von Landesgrenzen</translation>
+        <location filename="../map/CMapVRT.cpp" line="45"/>
+        <location filename="../map/CMapVRT.cpp" line="59"/>
+        <location filename="../map/CMapVRT.cpp" line="88"/>
+        <location filename="../map/CMapVRT.cpp" line="126"/>
+        <source>Error...</source>
+        <translation>Fehler...</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="301"/>
-        <source><b>MapQuest</b><br/>Routing request sent to server. Please wait...</source>
-        <translation><b>MapQuest</b><br/>Routinganforderung an den Server gesendet. Bitte warten...</translation>
+        <location filename="../map/CMapVRT.cpp" line="45"/>
+        <location filename="../map/CMapVRT.cpp" line="59"/>
+        <source>Failed to load file: %1</source>
+        <translation>Die Datei konnte nicht geladen werden: %1</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="312"/>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="346"/>
-        <source><b>MapQuest</b><br/>Bad response from server:<br/>%1</source>
-        <translation><b>MapQuest</b><br/>Schlechte Antwort vom Server:<br/>%1</translation>
+        <location filename="../map/CMapVRT.cpp" line="88"/>
+        <source>File must be 8 bit palette or gray indexed.</source>
+        <translation>Die Datei muss eine 8 bit Palette haben, oder Graustufen.</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="363"/>
-        <source><br/>Calculation time: %1s</source>
-        <translation><br/>Berechnungszeit: %1 s</translation>
+        <location filename="../map/CMapVRT.cpp" line="126"/>
+        <source>No georeference information found.</source>
+        <translation>Keine Georeferenzierung gefunden.</translation>
     </message>
 </context>
 <context>
-    <name>CRouterRoutino</name>
+    <name>CMapVrtBuilder</name>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="78"/>
-        <source>Foot</source>
-        <translation>Fußgänger</translation>
+        <location filename="../tool/CMapVrtBuilder.cpp" line="28"/>
+        <source>Build GDAL VRT</source>
+        <translation>GDAL VRT erstellen</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="79"/>
-        <source>Horse</source>
-        <translation>Reiter</translation>
+        <location filename="../tool/CMapVrtBuilder.cpp" line="46"/>
+        <source>Select files...</source>
+        <translation>Dateien auswählen...</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="80"/>
-        <source>Wheelchair</source>
-        <translation>Rollstuhl</translation>
+        <location filename="../tool/CMapVrtBuilder.cpp" line="70"/>
+        <source>Select target file...</source>
+        <translation>Zieldatei auswählen...</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="81"/>
-        <source>Bicycle</source>
-        <translation>Fahrrad</translation>
+        <location filename="../tool/CMapVrtBuilder.cpp" line="114"/>
+        <source>!!! done !!!
+</source>
+        <translation>!!! erledigt !!!</translation>
     </message>
+</context>
+<context>
+    <name>CMapWMTS</name>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="82"/>
-        <source>Moped</source>
-        <translation>Moped</translation>
+        <location filename="../map/CMapWMTS.cpp" line="43"/>
+        <location filename="../map/CMapWMTS.cpp" line="53"/>
+        <location filename="../map/CMapWMTS.cpp" line="63"/>
+        <location filename="../map/CMapWMTS.cpp" line="72"/>
+        <location filename="../map/CMapWMTS.cpp" line="157"/>
+        <location filename="../map/CMapWMTS.cpp" line="217"/>
+        <source>Error...</source>
+        <translation>Fehler...</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="83"/>
-        <source>Motorcycle</source>
-        <translation>Motorrad</translation>
+        <location filename="../map/CMapWMTS.cpp" line="43"/>
+        <source>Failed to open %1</source>
+        <translation>Öffnen fehlgeschlagen: %1</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="84"/>
-        <source>Motorcar</source>
-        <translation>Auto</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="85"/>
-        <source>Goods</source>
-        <translation>LKW</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="59"/>
-        <source>Shortest</source>
-        <translation>Kürzeste</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="55"/>
-        <source>Found Routino with a wrong version. Expected %1 found %2</source>
-        <translation>Falsche Routino Version gefunden. Erwartet wird %1, gefunden wurde %2</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="60"/>
-        <source>Quickest</source>
-        <translation>Schnellste</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="87"/>
-        <source>English</source>
-        <translation>Englisch</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="88"/>
-        <source>German</source>
-        <translation>Deutsch</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="89"/>
-        <source>French</source>
-        <translation>Französisch</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="90"/>
-        <source>Hungarian</source>
-        <translation>Ungarisch</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="91"/>
-        <source>Dutch</source>
-        <translation>Niederländisch</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="92"/>
-        <source>Russian</source>
-        <translation>Russisch</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="93"/>
-        <source>Polish</source>
-        <translation>Polnisch</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="128"/>
-        <source>A function was called without the database variable set.</source>
-        <translation>Eine Funktion wurde ohne gesetzte Datenbank aufgerufen.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="131"/>
-        <source>A function was called without the profile variable set.</source>
-        <translation>Eine Funktion wurde ohne gesetztes Profil aufgerufen.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="134"/>
-        <source>A function was called without the translation variable set.</source>
-        <translation>Eine Funktion wurde ohne gesetzte Sprache aufgerufen.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="137"/>
-        <source>The specified database to load did not exist.</source>
-        <translation>Die zu ladende vorgegebene Datenbank existiert nicht.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="140"/>
-        <source>The specified database could not be loaded.</source>
-        <translation>Die vorgegebene Datenbank konnte nicht geladen werden.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="143"/>
-        <source>The specified profiles XML file did not exist.</source>
-        <translation>Die vorgegebene XML Profildatei existiert nicht.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="146"/>
-        <source>The specified profiles XML file could not be loaded.</source>
-        <translation>Die vorgegebene XML Profildatei konnte nicht geladen werden.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="149"/>
-        <source>The specified translations XML file did not exist.</source>
-        <translation>Die vorgegebene XML Sprachdatei existiert nicht.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="152"/>
-        <source>The specified translations XML file could not be loaded.</source>
-        <translation>Die vorgegebene XML Profildatei konnte nicht geladen werden.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="155"/>
-        <source>The requested profile name does not exist in the loaded XML file.</source>
-        <translation>Den geforderten Profilnamen gibt es in der geladenen XML Datei nicht.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="158"/>
-        <source>The requested translation language does not exist in the loaded XML file.</source>
-        <translation>Die geforderte Sprache gibt es in der geladenen XML Datei nicht.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="161"/>
-        <source>There is no highway near the coordinates to place a waypoint.</source>
-        <translation>Es gibt keine Straße in der Nähe des zu plazierenden Wegpunktes.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="164"/>
-        <source>The profile and database do not work together.</source>
-        <translation>Profil und Datenbank funktionieren nicht zusammen.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="167"/>
-        <source>The profile being used has not been validated.</source>
-        <translation>Das zu benutzende Profil wurde nicht validiert.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="170"/>
-        <source>The user specified profile contained invalid data.</source>
-        <translation>Das vorgegebene Profil enthält ungültige Daten.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="173"/>
-        <source>The routing options specified are not consistent with each other.</source>
-        <translation>Die vorgebenen Routingoptionen passen nicht zusammen.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="176"/>
-        <source>There is a mismatch between the library and caller API version.</source>
-        <translation>Die Library und die API Version passen nicht zusammen.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="179"/>
-        <source>Route calculation was aborted by user.</source>
-        <translation>Die Routenberechnung wurde vom Benutzer abgebrochen.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="185"/>
-        <source>A route could not be found to waypoint %1.</source>
-        <translation>Es konnte keine Route zum Wegpunkt %1 gefunden werden.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="188"/>
-        <source>Unknown error: %1</source>
-        <translation>Unbekannter Fehler: %1</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="200"/>
-        <source>profile "%1"</source>
-        <translation>Profil "%1"</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="201"/>
-        <source>, mode "%1"</source>
-        <translation>, Modus "%1"</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="55"/>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="238"/>
-        <source>Warning...</source>
-        <translation>Warnung...</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="238"/>
-        <source>%1: Due to limitations in the Windows POSIX API Routino can't handle files larger than 4GB.</source>
-        <translation>%1: Aufgrund der Einschränkungen der Windows POSIX API können Dateien, die größer als 4GB sind, nicht bearbeitet werden.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="342"/>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="429"/>
-        <source>Calculate route with %1</source>
-        <translation>Berechne Route mit %1</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="350"/>
-        <source><br/>Calculation time: %1s</source>
-        <translation><br/>Berechnungszeit: %1 s</translation>
-    </message>
-</context>
-<context>
-    <name>CRouterRoutinoPathSetup</name>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutinoPathSetup.cpp" line="40"/>
-        <source>Add or remove paths containing Routino data. There can be multiple databases in a path but no sub-path is parsed.</source>
-        <translation>Pfade mit Routino Daten hinzufügen oder entfernen. In einem Pfad können mehrere Datenbanken sein. Teilpfade werden nicht geparst.</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutinoPathSetup.cpp" line="55"/>
-        <source>Select routing data file path...</source>
-        <translation>Pfad für Routingdatendatei wählen...</translation>
-    </message>
-    <message>
-        <source>Select DEM file path...</source>
-        <translation type="obsolete">Pfad für DEM Dateien wählen...</translation>
-    </message>
-</context>
-<context>
-    <name>CRouterSetup</name>
-    <message>
-        <location filename="../gis/rte/router/CRouterSetup.cpp" line="36"/>
-        <source>Routino (offline)</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterSetup.cpp" line="37"/>
-        <source>MapQuest (online)</source>
-        <translation></translation>
-    </message>
-</context>
-<context>
-    <name>CRoutinoDatabaseBuilder</name>
-    <message>
-        <location filename="../tool/CRoutinoDatabaseBuilder.cpp" line="32"/>
-        <source>Create Routino Database</source>
-        <translation>Routino Datenbank erstellen</translation>
-    </message>
-    <message>
-        <location filename="../tool/CRoutinoDatabaseBuilder.cpp" line="56"/>
-        <source>Select files...</source>
-        <translation>Dateien auswählen...</translation>
-    </message>
-    <message>
-        <location filename="../tool/CRoutinoDatabaseBuilder.cpp" line="80"/>
-        <source>Select target path...</source>
-        <translation>Zielpfad auswählen...</translation>
-    </message>
-    <message>
-        <source>!!! failed !!!
-</source>
-        <translation type="obsolete">!!! fehlgeschlagen !!!</translation>
-    </message>
-    <message>
-        <location filename="../tool/CRoutinoDatabaseBuilder.cpp" line="141"/>
-        <source>!!! done !!!
-</source>
-        <translation>!!! erledigt !!!</translation>
-    </message>
-</context>
-<context>
-    <name>CSearchGoogle</name>
-    <message>
-        <location filename="../gis/search/CSearchGoogle.cpp" line="118"/>
-        <source>Unknown response</source>
-        <translation>Unbekannte Antwort</translation>
-    </message>
-    <message>
-        <location filename="../gis/search/CSearchGoogle.cpp" line="128"/>
-        <source>Error: </source>
-        <translation>Fehler:</translation>
-    </message>
-</context>
-<context>
-    <name>CSetupDB</name>
-    <message>
-        <source>Setup database...</source>
-        <translation type="obsolete">Datenbank einrichten...</translation>
-    </message>
-    <message>
-        <source>Changes will become active after an application's restart.</source>
-        <translation type="obsolete">Änderungen werden nach Neustart der Anwendung aktiv.</translation>
-    </message>
-    <message>
-        <source>Select database path...</source>
-        <translation type="obsolete">Datenbankpfad w#ählen...</translation>
-    </message>
-</context>
-<context>
-    <name>CSetupDatabase</name>
-    <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="70"/>
-        <source>Error...</source>
-        <translation>Fehler...</translation>
-    </message>
-    <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="70"/>
-        <source>There is already a database with name '%1'</source>
-        <translation>Es gibt schon eine Datenbank mit dem Namen '%1'</translation>
-    </message>
-    <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="84"/>
-        <source>New database...</source>
-        <translation>Neue Datenbank...</translation>
-    </message>
-    <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="109"/>
-        <source>Open database...</source>
-        <translation>Datenbank öffnen...</translation>
-    </message>
-</context>
-<context>
-    <name>CSetupWorkspace</name>
-    <message>
-        <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
-        <source>Setup database...</source>
-        <translation>Datenbank einrichten...</translation>
-    </message>
-    <message>
-        <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
-        <source>Changes will become active after an application's restart.</source>
-        <translation>Änderungen werden erst nach Neustart der Anwendung aktiv.</translation>
-    </message>
-</context>
-<context>
-    <name>CTextEditWidget</name>
-    <message>
-        <location filename="../widgets/CTextEditWidget.cpp" line="73"/>
-        <source>&Color...</source>
-        <translation>&Farbe...</translation>
-    </message>
-</context>
-<context>
-    <name>IAbout</name>
-    <message>
-        <location filename="../IAbout.ui" line="14"/>
-        <source>About....</source>
-        <translation>Über....</translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="55"/>
-        <source><b>QMapShack</b>, Version</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="62"/>
-        <location filename="../IAbout.ui" line="106"/>
-        <location filename="../IAbout.ui" line="120"/>
-        <location filename="../IAbout.ui" line="134"/>
-        <location filename="../IAbout.ui" line="148"/>
-        <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="99"/>
-        <source>Qt</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="113"/>
-        <source>GDAL</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="127"/>
-        <source>Proj4</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="141"/>
-        <source>Routino</source>
-        <translation>Routino</translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="166"/>
-        <source>Rainer Unseld </source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="173"/>
-        <source>French</source>
-        <translation>Französisch</translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="180"/>
-        <source>Czech</source>
-        <translation>Tschechisch</translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="187"/>
-        <source>Pavel Fric</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="194"/>
-        <source>German</source>
-        <translation>Deutsch</translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="201"/>
-        <source><b>Translation:</b></source>
-        <translation><b>Übersetzung:</b></translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="229"/>
-        <source>Dutch</source>
-        <translation type="unfinished">Niederländisch</translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="236"/>
-        <source>Harrie Klomp</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="295"/>
-        <source><b>Binaries:</b></source>
-        <translation><b>Ausführbare Dateien:</b></translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="311"/>
-        <source><b>Contributors:</b></source>
-        <translation><b>Mitwirkende:</b></translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="318"/>
-        <source>Christian Eichler (qms at christian-eichler.de)</source>
-        <translation></translation>
-    </message>
-    <message>
-        <source>Translation:</source>
-        <translation type="vanished">Übersetzung:</translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="208"/>
-        <source>Josef Latt</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="215"/>
-        <source>Spanish</source>
-        <translation>Spanisch</translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="222"/>
-        <source>Jose Luis Domingo Lopez</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="254"/>
-        <source>Ivo Kronenberg</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="261"/>
-        <source>Helmut Schmidt</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="268"/>
-        <source>Win64</source>
-        <translation></translation>
+        <location filename="../map/CMapWMTS.cpp" line="53"/>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation>Lesen fehlgeschlagen: %1
+Zeile %2, Spalte %3:
+%4</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="275"/>
-        <source>OS X</source>
-        <translation></translation>
+        <location filename="../map/CMapWMTS.cpp" line="63"/>
+        <source>Failed to read: %1
+Unknown structure.</source>
+        <translation>Lesen fehlgeschlagen: %1
+Unbekannte Struktur.</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="282"/>
-        <source>...and thanks to all Linux binary maintainers for doing a great job. Special thanks to Dan Horák and Bas Couwenberg for showing presence on the mailing list to discuss distribution related topics.</source>
-        <translation>... und Danke an alle Ersteller von ausführbaren Linux-Dateien für die gute Arbeit. Ganz besonderen Dank an Dan Horák und Bas Couwenberg für ihre Teilnahme an der Diskussion in der Mailingliste distributionsbezogene Punkte betreffend.</translation>
+        <location filename="../map/CMapWMTS.cpp" line="72"/>
+        <source>Unexpected service. '* WMTS 1.0.0' is expected. '%1 %2' is read.</source>
+        <translation>Unerwarteter Dienst. '* WMTS 1.0.0' wird erwartet. '%1 %2' wurde gelesen.</translation>
     </message>
     <message>
-        <source>Binaries:</source>
-        <translation type="vanished">Ausführbare Dateien:</translation>
+        <location filename="../map/CMapWMTS.cpp" line="151"/>
+        <source>This map requires OpenSSL support. However due to legal restrictions in some countries OpenSSL is not packaged with QMapShack. You can have a look at the <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> for binaries. You have to copy libeay32.dll and ssleay32.dll into the QMapShack program directory.</source>
+        <translation>Diese Karte benötigt OpenSSL. Aufgrund rechtlicher Beschränkungen in einigen Ländern, ist OpenSSL nicht Bestandteil von QMapShack. Sie können sich auf der <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> nach Binäries umsehen. Sie müssen die Dateien libeay32.dll and ssleay32.dll in das QMapShack Programmverzeichnis kopieren.</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="332"/>
-        <source>This software is licensed under GPL3 or any later version</source>
-        <translation>Diese Software steht unter der GPL3 Lizenz (oder spätere Versionen)</translation>
+        <location filename="../map/CMapWMTS.cpp" line="413"/>
+        <source><b>%1</b>: %2 tiles pending<br/></source>
+        <translation><b>%1</b>: %2 unerledigte Kacheln</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="339"/>
-        <source>© 2014 Oliver Eichler (oliver.eichler at gmx.de)</source>
-        <translation></translation>
+        <location filename="../map/CMapWMTS.cpp" line="217"/>
+        <source>No georeference information found.</source>
+        <translation>Keine Georeferenzierung gefunden.</translation>
     </message>
 </context>
 <context>
-    <name>ICanvasSetup</name>
-    <message>
-        <source>Setup Map Workspace...</source>
-        <translation type="obsolete">Kartenansicht einstellen...</translation>
-    </message>
+    <name>CMouseEditArea</name>
     <message>
-        <location filename="../canvas/ICanvasSetup.ui" line="14"/>
-        <source>Setup Map View...</source>
-        <translation>Kartenansicht einstellen...</translation>
+        <location filename="../mouse/CMouseEditArea.cpp" line="28"/>
+        <location filename="../mouse/CMouseEditArea.cpp" line="35"/>
+        <source>Area</source>
+        <translation>Gebiet</translation>
     </message>
     <message>
-        <location filename="../canvas/ICanvasSetup.ui" line="22"/>
-        <source>Projection & Datum</source>
-        <translation>Projektion & Datum</translation>
+        <location filename="../mouse/CMouseEditArea.cpp" line="37"/>
+        <source><b>Edit Area</b><br/>Select a function and a routing mode via the tool buttons. Next select a point of the line. Only points marked with a large square can be changed. The ones with a black dot are subpoints introduced by routing.<br/></source>
+        <translation><b>Gebiet bearbeiten</b><br/>Wählen Sie mittels der Werkzeug-Buttons eine Funkion und einen Routing-Modus. Als nächstes wählen Sie einen Punkt auf der Linie. Es können nur Punkte geändert werden, die mit einem großen Quadrat markiert sind. Schwarze Punkte sind durchs Routing erzeugte Unterpunkte.<br/></translation>
     </message>
     <message>
-        <location filename="../canvas/ICanvasSetup.ui" line="32"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
+        <source>Edit name...</source>
+        <translation>Name bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../canvas/ICanvasSetup.ui" line="53"/>
-        <source>Scales</source>
-        <translation>Skalierung</translation>
+        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
+        <source>Enter new area name.</source>
+        <translation>Geben Sie einen neuen Namen für das Gebiet ein.</translation>
     </message>
+</context>
+<context>
+    <name>CMouseEditRte</name>
     <message>
-        <location filename="../canvas/ICanvasSetup.ui" line="59"/>
-        <source>Logarithmic</source>
-        <translation>Logarithmisch</translation>
+        <location filename="../mouse/CMouseEditRte.cpp" line="30"/>
+        <location filename="../mouse/CMouseEditRte.cpp" line="37"/>
+        <source>Route</source>
+        <translation>Routen</translation>
     </message>
     <message>
-        <location filename="../canvas/ICanvasSetup.ui" line="66"/>
-        <source>Square (optimized for TMS and WTMS tiles)</source>
-        <translation>Quadratisch (optimal für TMS und WMTS Karten)</translation>
+        <location filename="../mouse/CMouseEditRte.cpp" line="39"/>
+        <source><b>Edit Route Points</b><br/>Select a function and a routing mode via the tool buttons. Next select a point of the line. Only points marked with a large square can be changed. The ones with a black dot are subpoints introduced by routing.<br/></source>
+        <translation><b>Routenpunkte bearbeiten</b><br/>Wählen Sie mittels der Werkzeug-Buttons eine Funkion und einen Routing-Modus. Als nächstes wählen Sie einen Punkt auf der Linie. Es können nur Punkte geändert werden, die mit einem großen Quadrat markiert sind. Schwarze Punkte sind durchs Routing erzeugte Unterpunkte.<br/></translation>
     </message>
-</context>
-<context>
-    <name>ICombineTrk</name>
     <message>
-        <location filename="../gis/trk/ICombineTrk.ui" line="14"/>
-        <source>Combine Tracks...</source>
-        <translation>Tracks verbinden...</translation>
+        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
+        <source>Edit name...</source>
+        <translation>Name bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/ICombineTrk.ui" line="43"/>
-        <location filename="../gis/trk/ICombineTrk.ui" line="70"/>
-        <location filename="../gis/trk/ICombineTrk.ui" line="117"/>
-        <location filename="../gis/trk/ICombineTrk.ui" line="144"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
+        <source>Enter new route name.</source>
+        <translation>Geben Sie einen neuen Namen für die Route ein.</translation>
     </message>
 </context>
 <context>
-    <name>ICoordFormatSetup</name>
+    <name>CMouseEditTrk</name>
     <message>
-        <location filename="../units/ICoordFormatSetup.ui" line="14"/>
-        <source>Coordinate Format...</source>
-        <translation>Koordinatenformat...</translation>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="28"/>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="35"/>
+        <source>Track</source>
+        <translation>Track</translation>
     </message>
     <message>
-        <location filename="../units/ICoordFormatSetup.ui" line="36"/>
-        <source>N48° 53.660 E013° 31.113</source>
-        <translation></translation>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="38"/>
+        <source><b>Edit Track Points</b><br/>Select a function and a routing mode via the tool buttons. Next select a point of the line. Only points marked with a large square can be changed. The ones with a black dot are subpoints introduced by routing.<br/></source>
+        <translation><b>Trackpunkte bearbeiten</b><br/>Wählen Sie mittels der Werkzeug-Buttons eine Funkion und einen Routing-Modus. Als nächstes wählen Sie einen Punkt auf der Linie. Es können nur Punkte geändert werden, die mit einem großen Quadrat markiert sind. Schwarze Punkte sind durchs Routing erzeugte Unterpunkte.<br/></translation>
     </message>
     <message>
-        <location filename="../units/ICoordFormatSetup.ui" line="29"/>
-        <source>N48.8943° E013.51855°</source>
-        <translation></translation>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="80"/>
+        <source>Warning!</source>
+        <translation>Warnung!</translation>
     </message>
     <message>
-        <location filename="../units/ICoordFormatSetup.ui" line="22"/>
-        <source>N48° 53' 39.6" E13° 31' 6.78"</source>
-        <translation></translation>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="80"/>
+        <source>This will replace all data of the original by a simple line of coordinates. All other data will be lost permanently.</source>
+        <translation>Alle ursprünglichen Daten werden durch eine einfache Koordinatenlinie ersetzt. Alle anderen Daten sind dauerhaft verloren.</translation>
     </message>
-</context>
-<context>
-    <name>ICreateRouteFromWpt</name>
     <message>
-        <location filename="../gis/rte/ICreateRouteFromWpt.ui" line="14"/>
-        <source>Create Route from Waypoints</source>
-        <translation>Route aus Wegpunkten erstellen</translation>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
+        <source>Edit name...</source>
+        <translation>Name bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/rte/ICreateRouteFromWpt.ui" line="30"/>
-        <location filename="../gis/rte/ICreateRouteFromWpt.ui" line="50"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
+        <source>Enter new track name.</source>
+        <translation>Geben Sie einen neuen Namen für den Track ein.</translation>
     </message>
 </context>
 <context>
-    <name>ICutTrk</name>
-    <message>
-        <location filename="../gis/trk/ICutTrk.ui" line="14"/>
-        <source>Cut Track</source>
-        <translation>Track teilen</translation>
-    </message>
+    <name>CMouseNormal</name>
     <message>
-        <location filename="../gis/trk/ICutTrk.ui" line="20"/>
-        <source>Delete first part of the track and keep second one</source>
-        <translation>Löscht den ersten Teil des Tracks und behält den zweiten</translation>
+        <location filename="../mouse/CMouseNormal.cpp" line="39"/>
+        <source>Add Waypoint</source>
+        <translation>Wegpunkt hinzufügen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/ICutTrk.ui" line="27"/>
-        <source>Keep both parts of the track</source>
-        <translation>Behält beide Teile des Tracks</translation>
+        <location filename="../mouse/CMouseNormal.cpp" line="40"/>
+        <source>Add Track</source>
+        <translation>Track hinzufügen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/ICutTrk.ui" line="37"/>
-        <source>Keep first part of the track and delete second one</source>
-        <translation>Behält den ersten Teil des Tracks und löscht den zweiten</translation>
+        <location filename="../mouse/CMouseNormal.cpp" line="41"/>
+        <source>Add Route</source>
+        <translation>Route hinzufügen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/ICutTrk.ui" line="60"/>
-        <source>Check this to store the result into a new track. 
-
-If you keep both parts of the track you have to create new ones. 
-
-If you want to keep just one half you can simply remove the points, or check this to create a new track.</source>
-        <translation>Wählen Sie das aus, wenn das Ergebnis ein neuer Track sein soll.
-
-Wenn Sie beide Teile des Tracks behalten wollen, müssen neue Tracks erstellt werden.
-
-Wenn Sie nur die eine Hälfte behalten wollen, dann können auch nur die Punkte gelöscht werden, oder wenn Sie das hier auswählen, ein neuer Track erstellt werden.</translation>
+        <location filename="../mouse/CMouseNormal.cpp" line="42"/>
+        <source>Add Area</source>
+        <translation>Gebiet hinzufügen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/ICutTrk.ui" line="67"/>
-        <source>Create a new track</source>
-        <translation>Neuen Track erstellen</translation>
+        <location filename="../mouse/CMouseNormal.cpp" line="45"/>
+        <source>Copy position</source>
+        <translation>Position kopieren</translation>
     </message>
     <message>
-        <source>Create a clone</source>
-        <translation type="vanished">Ein Abbild erstellen</translation>
+        <location filename="../mouse/CMouseNormal.cpp" line="46"/>
+        <source>Copy position (Grid)</source>
+        <translation>Position kopieren (Gitter)</translation>
     </message>
 </context>
 <context>
-    <name>IDemPathSetup</name>
-    <message>
-        <source>Setup DEM file pathss</source>
-        <translation type="vanished">Pfad für DEM Dateien setzen</translation>
-    </message>
-    <message>
-        <location filename="../dem/IDemPathSetup.ui" line="14"/>
-        <source>Setup DEM file paths</source>
-        <translation>Pfad für DEM Dateien setzen</translation>
-    </message>
+    <name>CMousePrint</name>
     <message>
-        <location filename="../dem/IDemPathSetup.ui" line="31"/>
-        <location filename="../dem/IDemPathSetup.ui" line="51"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../mouse/CMousePrint.cpp" line="30"/>
+        <source><b>Save(Print) Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners. Save/print the selection by a left click on the disc/printer icon in the center of the selection.</source>
+        <translation><b>Karte speichern (drucken)</b><br/>Wählen Sie mit der linken Maustaste einen rechteckigen Bereich auf der Karte aus. Die Auswahl kann durch Verschieben der Eckpunkte mit der Maus angepasst werden. Abbruch mit Rechtsklick. Speichern/Drucken erfolgt durch Linksklick auf das entsprechende Symbol in der Mitte der Auswahl.</translation>
     </message>
+</context>
+<context>
+    <name>CMouseRangeTrk</name>
     <message>
-        <location filename="../dem/IDemPathSetup.ui" line="112"/>
-        <source>-</source>
-        <translation></translation>
+        <location filename="../mouse/CMouseRangeTrk.cpp" line="42"/>
+        <source><b>Select Range</b><br/>Select first track point. And then a second one.<br/></source>
+        <translation><b>Bereich wählen</b><br/>Wählen Sie einen ersten Punkt. Dann einen zweiten.<br/></translation>
     </message>
 </context>
 <context>
-    <name>IDemPropSetup</name>
+    <name>CPhotoAlbum</name>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="14"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="../widgets/CPhotoAlbum.cpp" line="73"/>
+        <source>Select images...</source>
+        <translation>Bilder wählen...</translation>
     </message>
+</context>
+<context>
+    <name>CPlotProfile</name>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="35"/>
-        <source><html><head/><body><p>Change opacity of map</p></body></html></source>
-        <translation><html><head/><body><p>Ändert die Deckkraft der Karte</p></body></html></translation>
+        <location filename="../plot/CPlotProfile.cpp" line="73"/>
+        <source>distance [%1]</source>
+        <translation>Entfernung [%1]</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="50"/>
-        <source><html><head/><body><p>Click to use current scale as minimum scale to display the map.</p></body></html></source>
-        <translation><html><head/><body><p>Klicken, um die aktuelle Skalierung als minimale Skalierung zu benutzen.</p></body></html></translation>
+        <location filename="../plot/CPlotProfile.cpp" line="74"/>
+        <source>alt. [%1]</source>
+        <translation>Höhe [%1]</translation>
     </message>
+</context>
+<context>
+    <name>CPrintDialog</name>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="53"/>
-        <location filename="../dem/IDemPropSetup.ui" line="90"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../print/CPrintDialog.cpp" line="67"/>
+        <source>Print Map...</source>
+        <translation>Karte drucken...</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="74"/>
-        <source><html><head/><body><p>Control the range of scale the map is displayed. Use the two buttons left and right to define the actual scale as either minimum or maximum scale.</p></body></html></source>
-        <translation><html><head/><body><p>Stellt den Skalierungsbereich ein, in dem die Karte sichtbar ist. Benutzen Sie die beiden Knöpfe links und rechts um die minimale und maximale Skalierung einzustellen.</p></body></html></translation>
+        <location filename="../print/CPrintDialog.cpp" line="74"/>
+        <source>Save Map as Image...</source>
+        <translation>Karte als Bild speichern...</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="87"/>
-        <source><html><head/><body><p>Click to use current scale as maximum scale to display the map.</p></body></html></source>
-        <translation><html><head/><body><p>Klicken um die aktuelle Skalierung als maximale Skalierung zu benutzen.</p></body></html></translation>
+        <location filename="../print/CPrintDialog.cpp" line="94"/>
+        <source>Printer Properties...</source>
+        <translation>Drucker Eigenschaften...</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="118"/>
-        <source>Hillshading</source>
-        <translation>Schummerung</translation>
+        <location filename="../print/CPrintDialog.cpp" line="169"/>
+        <source>Pages: %1 x %2</source>
+        <translation>Seiten: %1 x %2</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="144"/>
-        <source>Slope </source>
-        <translation>Hangneigung </translation>
+        <location filename="../print/CPrintDialog.cpp" line="170"/>
+        <source>Zoom with mouse wheel on map below to change resolution:
+
+%1x%2 pixel
+x: %3 m/px
+y: %4 m/px</source>
+        <translation>Zoomen Sie mit dem Mausrad auf der Karte unten, um die Auflösung zu ändern:
+
+%1x%2 Pixel
+x: %3 m/px
+y: %4 m/px</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="226"/>
-        <location filename="../dem/IDemPropSetup.ui" line="326"/>
-        <location filename="../dem/IDemPropSetup.ui" line="410"/>
-        <location filename="../dem/IDemPropSetup.ui" line="494"/>
-        <location filename="../dem/IDemPropSetup.ui" line="578"/>
-        <source>°</source>
-        <translation></translation>
+        <location filename="../print/CPrintDialog.cpp" line="216"/>
+        <source>Printing pages.</source>
+        <translation>Drucke Seiten.</translation>
     </message>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="229"/>
-        <location filename="../dem/IDemPropSetup.ui" line="329"/>
-        <location filename="../dem/IDemPropSetup.ui" line="413"/>
-        <location filename="../dem/IDemPropSetup.ui" line="497"/>
-        <location filename="../dem/IDemPropSetup.ui" line="581"/>
-        <source>> </source>
-        <translation></translation>
+        <location filename="../print/CPrintDialog.cpp" line="260"/>
+        <source>Save map...</source>
+        <translation>Karte speichern...</translation>
     </message>
+</context>
+<context>
+    <name>CProgressDialog</name>
     <message>
-        <location filename="../dem/IDemPropSetup.ui" line="251"/>
-        <location filename="../dem/IDemPropSetup.ui" line="270"/>
-        <location filename="../dem/IDemPropSetup.ui" line="354"/>
-        <location filename="../dem/IDemPropSetup.ui" line="438"/>
-        <location filename="../dem/IDemPropSetup.ui" line="522"/>
-        <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <location filename="../helpers/CProgressDialog.cpp" line="40"/>
+        <source>Elapsed time: %1</source>
+        <translation>Verstrichene Zeit: %1</translation>
+    </message>
+    <message>
+        <location filename="../helpers/CProgressDialog.cpp" line="82"/>
+        <source>Elapsed time: %1 seconds.</source>
+        <translation>Verstrichene Zeit: %1 Sekunden.</translation>
     </message>
 </context>
 <context>
-    <name>IDemsList</name>
+    <name>CProjWizard</name>
     <message>
-        <location filename="../dem/IDemList.ui" line="14"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="../grid/CProjWizard.cpp" line="62"/>
+        <source>north</source>
+        <translation>Norden</translation>
     </message>
     <message>
-        <location filename="../dem/IDemList.ui" line="118"/>
-        <source>To add files with elevation data use File->Setup DEM Paths. </source>
-        <translation>Um Dateien mit Höhendaten zuzufügen -> Menü Datei - DEM Verzeichnisse angeben.</translation>
+        <location filename="../grid/CProjWizard.cpp" line="63"/>
+        <source>south</source>
+        <translation>Süden</translation>
     </message>
     <message>
-        <location filename="../dem/IDemList.ui" line="131"/>
-        <source>Use the context menu (right mouse button click on entry) to activate a file. Use drag-n-drop to move the activated file in the process order. </source>
-        <translation>Nutze das Kontextmenü (Klick mit rechter Maustaste auf Eintrag), um eine Datei zu aktivieren. Nutze Ziehen u. Ablegen um die aktivierte Datei in der Reihenfolge der Ansicht zu verschieben.</translation>
+        <location filename="../grid/CProjWizard.cpp" line="222"/>
+        <source>Error...</source>
+        <translation>Fehler...</translation>
     </message>
     <message>
-        <location filename="../dem/IDemList.ui" line="156"/>
-        <source>Activate</source>
-        <translation>Aktivieren</translation>
+        <location filename="../grid/CProjWizard.cpp" line="222"/>
+        <source>The value
+'%1'
+is not a valid coordinate system definition:
+%2</source>
+        <translation>Die Eingabe:
+'%1'
+ist keine gültige Koordinatensystemdefinition:
+%2</translation>
     </message>
 </context>
 <context>
-    <name>IDetailsGeoCache</name>
+    <name>CProjWpt</name>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="20"/>
-        <source>Dialog</source>
-        <translation></translation>
+        <location filename="../gis/wpt/CProjWpt.cpp" line="62"/>
+        <source>Edit name...</source>
+        <translation>Name bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="47"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="73"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="86"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="99"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="112"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="125"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="151"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="164"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="177"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="190"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="203"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="252"/>
-        <source>-</source>
-        <translation></translation>
+        <location filename="../gis/wpt/CProjWpt.cpp" line="62"/>
+        <source>Enter new waypoint name.</source>
+        <translation>Geben Sie einen neuen Namen für den Wegpunkt ein.</translation>
     </message>
+</context>
+<context>
+    <name>CPropertyTrk</name>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="267"/>
-        <source>about:blank</source>
-        <translation></translation>
+        <location filename="../gis/trk/CPropertyTrk.cpp" line="65"/>
+        <source>distance [%1]</source>
+        <translation>Entfernung [%1]</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="40"/>
-        <source>Position:</source>
-        <translation>Position:</translation>
+        <location filename="../gis/trk/CPropertyTrk.cpp" line="77"/>
+        <source>time</source>
+        <translation>Uhrzeit</translation>
     </message>
+</context>
+<context>
+    <name>CQlgtDb</name>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="60"/>
-        <source>Difficulty</source>
-        <translation>Schwierigkeit</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="308"/>
+        <source>Migrating database from version 4 to 5.</source>
+        <translation>Datenbank von Version 4 nach 5 migrieren.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="138"/>
-        <source>Terrain</source>
-        <translation>Gelände</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="362"/>
+        <source>Migrating database from version 5 to 6.</source>
+        <translation>Datenbank von Version 5 nach 6 migrieren.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="214"/>
-        <source>Update spoilers</source>
-        <translation>Spoiler erneut laden</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="420"/>
+        <source>Migrating database from version 6 to 7.</source>
+        <translation>Datenbank von Version 6 nach 7 migrieren.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="217"/>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="275"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="486"/>
+        <source>Migrating database from version 7 to 8.</source>
+        <translation>Datenbank von Version 7 nach 8 migrieren.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="293"/>
-        <source>Hint:</source>
-        <translation>Hinweis:</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="515"/>
+        <source>Migrating database from version 8 to 9.</source>
+        <translation>Datenbank von Version 8 nach 9 migrieren.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="324"/>
-        <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="538"/>
+        <source>Open database: %1</source>
+        <translation>Öffne Datenbank: %1</translation>
     </message>
-</context>
-<context>
-    <name>IDetailsOvlArea</name>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="14"/>
-        <source>Dialog</source>
-        <translation>Dialog</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="547"/>
+        <source>Folders:          %1</source>
+        <translation>Ordner: %1</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="44"/>
-        <source>-</source>
-        <translation></translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="556"/>
+        <source>Tracks:           %1</source>
+        <translation>Tracks: %1</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="69"/>
-        <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
-        <translation><html><head/><body><p>Der Wegpunkt wurde in QMapShack importiert und geändert. Die ursprünglichen Daten werden nicht mehr angezeigt. Näheres siehe Änderungshistorie.</p></body></html></translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="564"/>
+        <source>Routes:           %1 (Only the basic route will be copied)</source>
+        <translation>Routen:           %1 (Es wird nur die Basisroute kopiert)</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="85"/>
-        <source>Toggle read only mode. You have to open the lock to edit the item.</source>
-        <translation>Den Schreibschutz ändern. Das Schloss muss offen sein um das Element zu bearbeiten.</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="572"/>
+        <source>Waypoints:        %1</source>
+        <translation>Wegpunkte: %1</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="88"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="580"/>
+        <source>Overlays:         %1 (areas will be converted as areas, distance lines will be converted to tracks, all other overlay items will be lost)</source>
+        <translation>Overlays:         %1 (Flächen werden als Flächen übernommen, Distanzlinien werden als Tracks übernommen, alle anderen Overlays gehen verloren)</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="118"/>
-        <source>Color</source>
-        <translation>Farbe</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="587"/>
+        <source>Diaries:          %1</source>
+        <translation>Tagebücher:          %1</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="139"/>
-        <source>Border width</source>
-        <translation>Rahmenbreite</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="594"/>
+        <source>Map selections:   %1 (can't be converted to QMapShack)</source>
+        <translation>Kartenselektionen:   %1 (können nicht nach QMapShack konvertiert werden)</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="153"/>
-        <source>Style</source>
-        <translation>Stil</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="600"/>
+        <source>------ Start to convert database to %1------</source>
+        <translation>------ Konvertierung der Datenbank %1 beginnt ------</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="172"/>
-        <source>Opacity</source>
-        <translation>Deckkraft</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="604"/>
+        <source>Failed to create target database.</source>
+        <translation>Erstellen der Zieldatenbank fehlgeschlagen.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="185"/>
-        <source>Info</source>
-        <translation>Info</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="605"/>
+        <source>------ Abort ------</source>
+        <translation>------ Abbrechen ------</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="214"/>
-        <source>Points</source>
-        <translation>Punkte</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="633"/>
+        <source>------ Done ------</source>
+        <translation>------ Fertig ------</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="241"/>
-        <source>Position</source>
-        <translation>Position</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="641"/>
+        <source>Restore folders...</source>
+        <translation>Ordner wiederherstellen...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="250"/>
-        <source>Hist.</source>
-        <translation>Historie</translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="661"/>
+        <source>Imported %1 folders and %2 diaries</source>
+        <translation>Importiert wurden %1 Ordner und %2 Tagebücher</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="667"/>
+        <source>Copy items...</source>
+        <translation>Elemente kopieren...</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtDb.cpp" line="685"/>
+        <source>Imported %1 tracks, %2 waypoints, %3 routes, %4 areas</source>
+        <translation>Importiert wurden %1 Tracks, %2 Wegpunkte, %3 Routen, %4 Gebiete</translation>
     </message>
-</context>
-<context>
-    <name>IDetailsPrj</name>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="14"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="686"/>
+        <source>Import folders...</source>
+        <translation>Importiere Ordner...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="50"/>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="57"/>
-        <source>-</source>
-        <translation></translation>
+        <location filename="../qlgt/CQlgtDb.cpp" line="751"/>
+        <source>Overlay of type '%1' cant be converted</source>
+        <translation>Das Overlay vom Typ '%1' kann nicht konvertiert werden</translation>
     </message>
+</context>
+<context>
+    <name>CQlgtTrack</name>
     <message>
-        <source>Sort By Time</source>
-        <translation type="obsolete">Sortieren nach Zeit</translation>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="164"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="218"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="265"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="291"/>
+        <source>Corrupt track ...</source>
+        <translation>Beschädigter Track ...</translation>
     </message>
     <message>
-        <source>Keep Order of Project</source>
-        <translation type="obsolete">Reihenfolge beibehalten</translation>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="164"/>
+        <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
+        <translation>Anzahl der Trackpunkte entspricht nicht der Anzahl der Trackpunkte der Trainingsdaten.</translation>
     </message>
     <message>
-        <source>Sort Along Track</source>
-        <translation type="obsolete">Sort. entl. d. Tracks</translation>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="218"/>
+        <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
+        <translation>Anzahl der Trackpunkte entspricht nicht der Anzahl der erweiterten Trackpunkte.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="115"/>
-        <source>Print diary</source>
-        <translation>Tagebuch drucken</translation>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="265"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="291"/>
+        <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
+        <translation>Anzahl der Trackpunkte entspricht nicht der Anzahl der ausgeblendeten Trackpunkte.</translation>
     </message>
+</context>
+<context>
+    <name>CQmsDb</name>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="94"/>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="118"/>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="138"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../qlgt/CQmsDb.cpp" line="47"/>
+        <source>Existing file...</source>
+        <translation>Vorhandene Datei...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="71"/>
-        <source>Keep order of project</source>
-        <translation>Reihenfolge beibehalten</translation>
+        <location filename="../qlgt/CQmsDb.cpp" line="47"/>
+        <source>Remove existing %1?</source>
+        <translation>Entferne vorhandene %1?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="76"/>
-        <source>Sort by time</source>
-        <translation>Sortieren nach Zeit</translation>
+        <location filename="../qlgt/CQmsDb.cpp" line="52"/>
+        <source>Remove existing file %1</source>
+        <translation>Entferne vorhandene Datei %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="81"/>
-        <source>Sort along track (multiple)</source>
-        <translation>Sort. entl. d. Tracks (mehrfach)</translation>
+        <location filename="../qlgt/CQmsDb.cpp" line="163"/>
+        <source>%1: drop item with QLGT DB ID %2</source>
+        <translation>%1: verwerfe das Element mit der QLGT DB ID %2</translation>
     </message>
+</context>
+<context>
+    <name>CQmsProject</name>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="86"/>
-        <source>Sort along track (single)</source>
-        <translation>Sort. entl. d. Tracks (einmalig)</translation>
+        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <source>Failed to open...</source>
+        <translation>Öffnen fehlgeschlagen...</translation>
     </message>
     <message>
-        <source>Sort along track (with doubles)</source>
-        <translation type="obsolete">Sort. entl. d. Tracks (mehrfach)</translation>
+        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <source>Failed to open %1</source>
+        <translation>Öffnen von %1 fehlgeschlagen</translation>
     </message>
+</context>
+<context>
+    <name>CRouterMapQuest</name>
     <message>
-        <source>Sort along track (without doubles)</source>
-        <translation type="obsolete">Sort. entl. d. Tracks (einmalig)</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="37"/>
+        <source>Fastest</source>
+        <translation>Schnellste</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="135"/>
-        <source>Rebuild diary.</source>
-        <translation>Tagebuch aktualisieren.</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="38"/>
+        <source>Shortest</source>
+        <translation>Kürzeste</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IDetailsPrj.ui" line="43"/>
-        <source>Keywords:</source>
-        <translation>Stichwörter:</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="39"/>
+        <source>Bicycle</source>
+        <translation>Fahrrad</translation>
     </message>
-</context>
-<context>
-    <name>IDetailsRte</name>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="36"/>
-        <source>Info</source>
-        <translation>Info</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="40"/>
+        <source>Pedestrian</source>
+        <translation>Fußgänger</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="65"/>
-        <source>-</source>
-        <translation></translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="42"/>
+        <source>US English</source>
+        <translation>Englisch (USA)</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="97"/>
-        <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
-        <translation><html><head/><body><p>Der Wegpunkt wurde in QMapShack importiert und geändert. Die ursprünglichen Daten werden nicht mehr angezeigt. Näheres siehe Änderungshistorie.</p></body></html></translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="43"/>
+        <source>British English</source>
+        <translation>Englisch (Britisch)</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="113"/>
-        <source>Toggle read only mode. You have to open the lock to edit the item.</source>
-        <translation>Den Schreibschutz ändern. Das Schloss muss offen sein um das Element zu bearbeiten.</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="44"/>
+        <source>Danish</source>
+        <translation>Dänisch</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="116"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="45"/>
+        <source>Dutch</source>
+        <translation>Niederländisch</translation>
     </message>
     <message>
-        <source>Points</source>
-        <translation type="obsolete">Punkte</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="46"/>
+        <source>French</source>
+        <translation>Französisch</translation>
     </message>
     <message>
-        <source>Position</source>
-        <translation type="obsolete">Position</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="47"/>
+        <source>German</source>
+        <translation>Deutsch</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="176"/>
-        <source>Hist.</source>
-        <translation>Historie</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="48"/>
+        <source>Italian</source>
+        <translation>Italienisch</translation>
     </message>
-</context>
-<context>
-    <name>IDetailsTrk</name>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="14"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="49"/>
+        <source>Norwegian</source>
+        <translation>Norwegisch</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="56"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="77"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="98"/>
-        <source>-
--</source>
-        <translation></translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="50"/>
+        <source>Spanish</source>
+        <translation>Spanisch</translation>
     </message>
     <message>
-        <source>Graph Control</source>
-        <translation type="vanished">Grafikeinstellungen</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="51"/>
+        <source>Swedish</source>
+        <translation>Schwedisch</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="533"/>
-        <source>Profile</source>
-        <translation>Profil</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="110"/>
+        <source>mode "%1"</source>
+        <translation>Modus "%1"</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="702"/>
-        <source>Speed</source>
-        <translation>Geschw.</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="114"/>
+        <source>no highways</source>
+        <translation>keine Kraftfahrzeugstraßen</translation>
     </message>
     <message>
-        <source>Progress</source>
-        <translation type="vanished">Verlauf</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="125"/>
+        <source>no toll roads</source>
+        <translation>keine Mautstraßen</translation>
     </message>
     <message>
-        <source>Track</source>
-        <translation type="vanished">Track</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="136"/>
+        <source>no seasonal</source>
+        <translation>keine saisonalen Straßen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="163"/>
-        <source>Toggle read only mode. You have to open the lock to edit the item.</source>
-        <translation>Den Schreibschutz ändern. Das Schloss muss offen sein um das Element zu bearbeiten.</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="147"/>
+        <source>no unpaved</source>
+        <translation>keine unbefestigten Straßen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="166"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="158"/>
+        <source>no ferry</source>
+        <translation>keine Fähren</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="202"/>
-        <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
-        <translation><html><head/><body><p>Der Wegpunkt wurde in QMapShack importiert und geändert. Die ursprünglichen Daten werden nicht mehr angezeigt. Näheres siehe Änderungshistorie.</p></body></html></translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="169"/>
+        <source>no crossing of country borders</source>
+        <translation>keine Überqueruung von Landesgrenzen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="298"/>
-        <source>Style</source>
-        <translation>Stil</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="301"/>
+        <source><b>MapQuest</b><br/>Routing request sent to server. Please wait...</source>
+        <translation><b>MapQuest</b><br/>Routinganforderung an den Server gesendet. Bitte warten...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="340"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="434"/>
-        <source>from Data</source>
-        <translation>aus Daten</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="312"/>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="346"/>
+        <source><b>MapQuest</b><br/>Bad response from server:<br/>%1</source>
+        <translation><b>MapQuest</b><br/>Schlechte Antwort vom Server:<br/>%1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="353"/>
-        <source>Source</source>
-        <translation>Quelle</translation>
+        <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="363"/>
+        <source><br/>Calculation time: %1s</source>
+        <translation><br/>Berechnungszeit: %1 s</translation>
     </message>
+</context>
+<context>
+    <name>CRouterRoutino</name>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="376"/>
-        <source>Maximum</source>
-        <translation></translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="78"/>
+        <source>Foot</source>
+        <translation>Fußgänger</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="405"/>
-        <source>Minimum</source>
-        <translation></translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="79"/>
+        <source>Horse</source>
+        <translation>Reiter</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="447"/>
-        <source>Solid color</source>
-        <translation>Feste Farbe</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="80"/>
+        <source>Wheelchair</source>
+        <translation>Rollstuhl</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="495"/>
-        <source>Graphs</source>
-        <translation>Grafiken</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="81"/>
+        <source>Bicycle</source>
+        <translation>Fahrrad</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="540"/>
-        <source>Graph 3</source>
-        <translation>Grafik 3</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="82"/>
+        <source>Moped</source>
+        <translation>Moped</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="547"/>
-        <source>Graph 2</source>
-        <translation>Grafik 2</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="83"/>
+        <source>Motorcycle</source>
+        <translation>Motorrad</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="554"/>
-        <source>Graph 1</source>
-        <translation>Grafik 1</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="84"/>
+        <source>Motorcar</source>
+        <translation>Auto</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="562"/>
-        <source>Activity</source>
-        <translation>Aktivität</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="85"/>
+        <source>Goods</source>
+        <translation>LKW</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="607"/>
-        <source>To differentiate the track statistics select an activity from the list for the complete track. Or select a part of the track to assign an activity.</source>
-        <translation>Um Trackstatistiken zu differenzieren, wählen Sie für den gesamten Track eine Aktivität aus der Liste. Oder wählen Sie einen Teil des Track aus und weisen diesem eine Aktivität zu.</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="59"/>
+        <source>Shortest</source>
+        <translation>Kürzeste</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="634"/>
-        <source>Points</source>
-        <translation>Punkte</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="55"/>
+        <source>Found Routino with a wrong version. Expected %1 found %2</source>
+        <translation>Falsche Routino Version gefunden. Erwartet wird %1, gefunden wurde %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="682"/>
-        <source>Time</source>
-        <translation>Zeit</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="60"/>
+        <source>Quickest</source>
+        <translation>Schnellste</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="687"/>
-        <source>Ele.</source>
-        <translation>Höhe</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="87"/>
+        <source>English</source>
+        <translation>Englisch</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="692"/>
-        <source>Delta</source>
-        <translation>Delta</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="88"/>
+        <source>German</source>
+        <translation>Deutsch</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="697"/>
-        <source>Dist.</source>
-        <translation>Entf.</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="89"/>
+        <source>French</source>
+        <translation>Französisch</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="707"/>
-        <source>Slope</source>
-        <translation>Neigung</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="90"/>
+        <source>Hungarian</source>
+        <translation>Ungarisch</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="712"/>
-        <source>Ascend</source>
-        <translation>Anstieg</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="91"/>
+        <source>Dutch</source>
+        <translation>Niederländisch</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="717"/>
-        <source>Descend</source>
-        <translation>Abstieg</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="92"/>
+        <source>Russian</source>
+        <translation>Russisch</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="722"/>
-        <source>Position</source>
-        <translation>Position</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="93"/>
+        <source>Polish</source>
+        <translation>Polnisch</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="266"/>
-        <source>Info</source>
-        <translation>Info</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="128"/>
+        <source>A function was called without the database variable set.</source>
+        <translation>Eine Funktion wurde ohne gesetzte Datenbank aufgerufen.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="227"/>
-        <source>-</source>
-        <translation></translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="131"/>
+        <source>A function was called without the profile variable set.</source>
+        <translation>Eine Funktion wurde ohne gesetztes Profil aufgerufen.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="731"/>
-        <source>Filter</source>
-        <translation>Filter</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="134"/>
+        <source>A function was called without the translation variable set.</source>
+        <translation>Eine Funktion wurde ohne gesetzte Sprache aufgerufen.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="768"/>
-        <source>Hist.</source>
-        <translation>Historie</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="137"/>
+        <source>The specified database to load did not exist.</source>
+        <translation>Die zu ladende vorgegebene Datenbank existiert nicht.</translation>
     </message>
     <message>
-        <source>TextLabel</source>
-        <translation type="obsolete">Bezeichnung</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="140"/>
+        <source>The specified database could not be loaded.</source>
+        <translation>Die vorgegebene Datenbank konnte nicht geladen werden.</translation>
     </message>
-</context>
-<context>
-    <name>IDetailsWpt</name>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="14"/>
-        <source>Dialog</source>
-        <translation></translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="143"/>
+        <source>The specified profiles XML file did not exist.</source>
+        <translation>Die vorgegebene XML Profildatei existiert nicht.</translation>
     </message>
     <message>
-        <source><html><head/><body><p>Edit comment.</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Kommentar bearbeiten.</p></body></html></translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="146"/>
+        <source>The specified profiles XML file could not be loaded.</source>
+        <translation>Die vorgegebene XML Profildatei konnte nicht geladen werden.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="224"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="279"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="299"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="331"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="149"/>
+        <source>The specified translations XML file did not exist.</source>
+        <translation>Die vorgegebene XML Sprachdatei existiert nicht.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="205"/>
-        <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
-        <translation><html><head/><body><p>Der Wegpunkt wurde in QMapShack importiert und geändert. Die ursprünglichen Daten werden nicht mehr angezeigt. Näheres siehe Änderungshistorie.</p></body></html></translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="152"/>
+        <source>The specified translations XML file could not be loaded.</source>
+        <translation>Die vorgegebene XML Profildatei konnte nicht geladen werden.</translation>
     </message>
     <message>
-        <source><html><head/><body><p>Edit description.</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Beschreibung bearbeiten.</p></body></html></translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="155"/>
+        <source>The requested profile name does not exist in the loaded XML file.</source>
+        <translation>Den geforderten Profilnamen gibt es in der geladenen XML Datei nicht.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="43"/>
-        <source>Info</source>
-        <translation>Info</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="158"/>
+        <source>The requested translation language does not exist in the loaded XML file.</source>
+        <translation>Die geforderte Sprache gibt es in der geladenen XML Datei nicht.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="77"/>
-        <source>Position:</source>
-        <translation>Position:</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="164"/>
+        <source>The profile and database do not work together.</source>
+        <translation>Profil und Datenbank funktionieren nicht zusammen.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="84"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="110"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="136"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="186"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="265"/>
-        <source>-</source>
-        <translation></translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="167"/>
+        <source>The profile being used has not been validated.</source>
+        <translation>Das zu benutzende Profil wurde nicht validiert.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="97"/>
-        <source>Ele.</source>
-        <translation>Höhe</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="170"/>
+        <source>The user specified profile contained invalid data.</source>
+        <translation>Das vorgegebene Profil enthält ungültige Daten.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="123"/>
-        <source>Proximity:</source>
-        <translation>Abstand:</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="173"/>
+        <source>The routing options specified are not consistent with each other.</source>
+        <translation>Die vorgebenen Routingoptionen passen nicht zusammen.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="221"/>
-        <source>Toggle read only mode. You have to open the lock to edit the item.</source>
-        <translation>Den Schreibschutz ändern. Das Schloss muss offen sein um das Element zu bearbeiten.</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="176"/>
+        <source>There is a mismatch between the library and caller API version.</source>
+        <translation>Die Library und die API Version passen nicht zusammen.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="350"/>
-        <source>Hist.</source>
-        <translation>Historie</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="179"/>
+        <source>Route calculation was aborted by user.</source>
+        <translation>Die Routenberechnung wurde vom Benutzer abgebrochen.</translation>
     </message>
     <message>
-        <source><html><head/><body><p>Read Only Mode</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Schreibschutz</p></body></html></translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="185"/>
+        <source>A route could not be found to waypoint %1.</source>
+        <translation>Es konnte keine Route zum Wegpunkt %1 gefunden werden.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="276"/>
-        <source>Add images.</source>
-        <translation>Bilder hinzufügen.</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="188"/>
+        <source>Unknown error: %1</source>
+        <translation>Unbekannter Fehler: %1</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="296"/>
-        <source>Delete selected image.</source>
-        <translation>Ausgewähltes Bild löschen.</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="200"/>
+        <source>profile "%1"</source>
+        <translation>Profil "%1"</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="258"/>
-        <source>Date/Time:</source>
-        <translation>Datum/Zeit:</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="201"/>
+        <source>, mode "%1"</source>
+        <translation>, Modus "%1"</translation>
     </message>
-</context>
-<context>
-    <name>IElevationDialog</name>
     <message>
-        <location filename="../helpers/IElevationDialog.ui" line="14"/>
-        <source>Edit elevation...</source>
-        <translation>Höhe bearbeiten...</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="55"/>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="238"/>
+        <source>Warning...</source>
+        <translation>Warnung...</translation>
     </message>
     <message>
-        <location filename="../helpers/IElevationDialog.ui" line="22"/>
-        <source>Elevation</source>
-        <translation>Höhe</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="161"/>
+        <source>In the routing database there is no highway near the coordinates to place a waypoint.</source>
+        <translatorcomment>Message text points now to problem with routing database</translatorcomment>
+        <translation>Es gibt in der Routing-Datenbank keine Straße in der Nähe des zu plazierenden Wegpunktes.</translation>
     </message>
     <message>
-        <location filename="../helpers/IElevationDialog.ui" line="32"/>
-        <source>-</source>
-        <translation></translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="238"/>
+        <source>%1: Due to limitations in the Windows POSIX API Routino can't handle files larger than 4GB.</source>
+        <translation>%1: Aufgrund der Einschränkungen der Windows POSIX API können Dateien, die größer als 4GB sind, nicht bearbeitet werden.</translation>
     </message>
     <message>
-        <location filename="../helpers/IElevationDialog.ui" line="39"/>
-        <source>Get elevation from active digital elevation model.</source>
-        <translation>Höhe aus aktivem digitalen Höhenmodell entnehmen.</translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="344"/>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="431"/>
+        <source>Calculate route with %1</source>
+        <translation>Berechne Route mit %1</translation>
     </message>
     <message>
-        <location filename="../helpers/IElevationDialog.ui" line="42"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="352"/>
+        <source><br/>Calculation time: %1s</source>
+        <translation><br/>Berechnungszeit: %1 s</translation>
     </message>
 </context>
 <context>
-    <name>IFilterDelete</name>
+    <name>CRouterRoutinoPathSetup</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterDelete.ui" line="14"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="../gis/rte/router/CRouterRoutinoPathSetup.cpp" line="40"/>
+        <source>Add or remove paths containing Routino data. There can be multiple databases in a path but no sub-path is parsed.</source>
+        <translation>Pfade mit Routino Daten hinzufügen oder entfernen. In einem Pfad können mehrere Datenbanken sein. Teilpfade werden nicht geparst.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterDelete.ui" line="51"/>
-        <source><b>Remove Track Points</b></source>
-        <translation><b>Trackpunkte entfernen</b></translation>
+        <location filename="../gis/rte/router/CRouterRoutinoPathSetup.cpp" line="55"/>
+        <source>Select routing data file path...</source>
+        <translation>Pfad für Routingdatendatei wählen...</translation>
     </message>
+</context>
+<context>
+    <name>CRouterSetup</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterDelete.ui" line="63"/>
-        <source>Remove all hidden track points permanently.</source>
-        <translation>Alle ausgeblendeten Trackpunkte werden dauerhaft entfernt.</translation>
+        <location filename="../gis/rte/router/CRouterSetup.cpp" line="36"/>
+        <source>Routino (offline)</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterDelete.ui" line="70"/>
-        <source>...</source>
+        <location filename="../gis/rte/router/CRouterSetup.cpp" line="37"/>
+        <source>MapQuest (online)</source>
         <translation></translation>
     </message>
 </context>
 <context>
-    <name>IFilterDouglasPeuker</name>
+    <name>CRoutinoDatabaseBuilder</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="14"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="../tool/CRoutinoDatabaseBuilder.cpp" line="32"/>
+        <source>Create Routino Database</source>
+        <translation>Routino Datenbank erstellen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="45"/>
-        <source><b>Hide Points (Douglas Peuker)</b></source>
-        <translation><b>Trackpunkte ausblenden (Douglas Peuker)</b></translation>
+        <location filename="../tool/CRoutinoDatabaseBuilder.cpp" line="56"/>
+        <source>Select files...</source>
+        <translation>Dateien auswählen...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="57"/>
-        <source>Hide track points if the distance to a line between neighboring points is less than</source>
-        <translation>Trackpunkte werden ausgeblendet, wenn der Abstand zu einer Linie zwischen benachbarten Punkten kleiner ist als</translation>
+        <location filename="../tool/CRoutinoDatabaseBuilder.cpp" line="80"/>
+        <source>Select target path...</source>
+        <translation>Zielpfad auswählen...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="70"/>
-        <source>m</source>
-        <translation> m</translation>
+        <location filename="../tool/CRoutinoDatabaseBuilder.cpp" line="141"/>
+        <source>!!! done !!!
+</source>
+        <translation>!!! erledigt !!!</translation>
     </message>
+</context>
+<context>
+    <name>CSearchGoogle</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="93"/>
-        <source>Apply filter now.</source>
-        <translation>Den Filter jetzt anwenden.</translation>
+        <location filename="../gis/search/CSearchGoogle.cpp" line="118"/>
+        <source>Unknown response</source>
+        <translation>Unbekannte Antwort</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="96"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../gis/search/CSearchGoogle.cpp" line="128"/>
+        <source>Error: </source>
+        <translation>Fehler:</translation>
     </message>
 </context>
 <context>
-    <name>IFilterInvalid</name>
+    <name>CSetupDatabase</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterInvalid.ui" line="14"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="47"/>
+        <source>Missing Requirement</source>
+        <translation>Fehlende Voraussetzung</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterInvalid.ui" line="41"/>
-        <source>Hide Invalid Points</source>
-        <translation>Ungültige Punkte ausblenden</translation>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="48"/>
+        <source>MySQL cannot be used at this point, because the corresponding driver (QMYSQL) is not available.<br />Please make sure you have installed the corresponding package.<br />If you don't know what to do now you should have <a href="%1">a look at the wiki</a>.</source>
+        <translation>MySQL kann derzeit nicht genutzt werden, weil der entsprechende Treiber (QMYSQL) nicht verfügbar ist.<br />Stellen Sie bitte sicher, dass das entsprechende Paket installiert ist.<br />Wenn Sie nicht wissen, was zu tun ist, sollten Sie einen Blick auf das <a href="%1">Wiki</a> werfen.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterInvalid.ui" line="56"/>
-        <source>Hide points with invalid coordinates at the beginning of the track.</source>
-        <translation>Blendet Punkte mit ungültigen Koordinaten am Anfang vom Track aus.</translation>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="102"/>
+        <source>Error...</source>
+        <translation>Fehler...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterInvalid.ui" line="63"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="102"/>
+        <source>There is already a database with name '%1'</source>
+        <translation>Es gibt schon eine Datenbank mit dem Namen '%1'</translation>
     </message>
-</context>
-<context>
-    <name>IFilterMedian</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterMedian.ui" line="14"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="115"/>
+        <source>New database...</source>
+        <translation>Neue Datenbank...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterMedian.ui" line="51"/>
-        <source><b>Smooth Profile (Median Method)</b></source>
-        <translation><b>Profil glätten (Median-Methode) </b></translation>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="140"/>
+        <source>Open database...</source>
+        <translation>Datenbank öffnen...</translation>
     </message>
+</context>
+<context>
+    <name>CSetupWorkspace</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterMedian.ui" line="63"/>
-        <source>Smooth deviation of the track points elevation with a Median filter of size </source>
-        <translation>Glättet die Abweichung der Höhe von Trackpunkten mit einem Median-Filter der Größe </translation>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="55"/>
+        <source>Setup database...</source>
+        <translation>Datenbank einrichten...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterMedian.ui" line="76"/>
-        <source>points</source>
-        <translation> Pkt.</translation>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="55"/>
+        <source>Changes will become active after an application's restart.</source>
+        <translation>Änderungen werden erst nach Neustart der Anwendung aktiv.</translation>
     </message>
+</context>
+<context>
+    <name>CSlfProject</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterMedian.ui" line="105"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../gis/slf/CSlfProject.cpp" line="42"/>
+        <source>Failed to load file %1...</source>
+        <translation>Datei %1 konnte nicht geladen werden...</translation>
     </message>
 </context>
 <context>
-    <name>IFilterNewDate</name>
+    <name>CSlfReader</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="14"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="../gis/slf/CSlfReader.cpp" line="59"/>
+        <source>%1 does not exist</source>
+        <translation>%1 existiert nicht</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="35"/>
-        <source><b>Change Time</b></source>
-        <translation><b>Zeit ändern</b></translation>
+        <location filename="../gis/slf/CSlfReader.cpp" line="64"/>
+        <source>Failed to open %1</source>
+        <translation>Öffnen von %1 fehlgeschlagen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="44"/>
-        <source>Change start of track to </source>
-        <translation>Ändert den Trackbeginn auf </translation>
+        <location filename="../gis/slf/CSlfReader.cpp" line="75"/>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation>Lesen von %1 fehlgeschlagen:
+Zeile %2, Spalte %3:
+%4</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="51"/>
-        <source>dd.MM.yy HH:mm:ss</source>
-        <translation>dd.MM.yy HH:mm:ss</translation>
+        <location filename="../gis/slf/CSlfReader.cpp" line="82"/>
+        <source>Not a SLF file: %1</source>
+        <translation>Keine SLF Datei: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="61"/>
-        <source>-</source>
-        <translation></translation>
+        <location filename="../gis/slf/CSlfReader.cpp" line="89"/>
+        <source>Unsupported revision %1: %2</source>
+        <translation>Nicht unterstützte Revision %1: %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="81"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../gis/slf/CSlfReader.cpp" line="164"/>
+        <source>Break %1</source>
+        <translation>Pause %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="168"/>
+        <source>Lap %1</source>
+        <translation>Runde %1</translation>
     </message>
 </context>
 <context>
-    <name>IFilterObscureDate</name>
+    <name>CTextEditWidget</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="14"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="../widgets/CTextEditWidget.cpp" line="73"/>
+        <source>&Color...</source>
+        <translation>&Farbe...</translation>
     </message>
+</context>
+<context>
+    <name>CTwoNavProject</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="45"/>
-        <source><b>Obscure Timestamps</b></source>
-        <translation><b>Zeitstempel verschleiern</b></translation>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
+        <location filename="../gis/tnv/serialization.cpp" line="560"/>
+        <location filename="../gis/tnv/serialization.cpp" line="588"/>
+        <location filename="../gis/tnv/serialization.cpp" line="599"/>
+        <location filename="../gis/tnv/serialization.cpp" line="617"/>
+        <location filename="../gis/tnv/serialization.cpp" line="645"/>
+        <location filename="../gis/tnv/serialization.cpp" line="719"/>
+        <source>Error...</source>
+        <translation>Fehler...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="54"/>
-        <source>Increase timestamp by</source>
-        <translation>Erhöht den Zeitstempel um </translation>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
+        <location filename="../gis/tnv/serialization.cpp" line="560"/>
+        <source>Failed to open %1.</source>
+        <translation>Die Datei %1 konnte nicht geöffnet werden.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="61"/>
-        <source> sec.</source>
-        <translation> s</translation>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="159"/>
+        <source>Save GIS data to...</source>
+        <translation>GIS Daten speichern in...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="68"/>
-        <source>with each track point. 0 sec. will remove timestamps.</source>
-        <translation>für jeden Trackpunkt. 0 s entfernt alle Zeitstempel.</translation>
+        <location filename="../gis/tnv/serialization.cpp" line="588"/>
+        <location filename="../gis/tnv/serialization.cpp" line="599"/>
+        <source>Only support lon/lat WGS 84 format.</source>
+        <translation>Es wird nur lon/lat WGS 84 als Format unterstützt.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="88"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../gis/tnv/serialization.cpp" line="617"/>
+        <location filename="../gis/tnv/serialization.cpp" line="645"/>
+        <location filename="../gis/tnv/serialization.cpp" line="719"/>
+        <source>Failed to read data.</source>
+        <translation>Lesen der Daten fehlgeschlagen.</translation>
     </message>
 </context>
 <context>
-    <name>IFilterOffsetElevation</name>
-    <message>
-        <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="14"/>
-        <source>Form</source>
-        <translation></translation>
-    </message>
+    <name>IAbout</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="51"/>
-        <source><b>Offset Elevation</b></source>
-        <translation><b>Höhenversatz</b></translation>
+        <location filename="../IAbout.ui" line="14"/>
+        <source>About....</source>
+        <translation>Über....</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="69"/>
-        <source>Add offset of</source>
-        <translation>Fügt einen Versatz von </translation>
+        <location filename="../IAbout.ui" line="55"/>
+        <source><b>QMapShack</b>, Version</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="95"/>
-        <source>to track points elevation.</source>
-        <translation>zur Höhe der Trackpunkte hinzu.</translation>
+        <location filename="../IAbout.ui" line="62"/>
+        <location filename="../IAbout.ui" line="106"/>
+        <location filename="../IAbout.ui" line="120"/>
+        <location filename="../IAbout.ui" line="134"/>
+        <location filename="../IAbout.ui" line="148"/>
+        <source>TextLabel</source>
+        <translation>Bezeichnung</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="115"/>
-        <source>...</source>
+        <location filename="../IAbout.ui" line="99"/>
+        <source>Qt</source>
         <translation></translation>
     </message>
-</context>
-<context>
-    <name>IFilterReplaceElevation</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../IAbout.ui" line="113"/>
+        <source>GDAL</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="51"/>
-        <source><b>Replace Elevation Data</b></source>
-        <translation><b>Höhendaten ersetzen</b></translation>
+        <location filename="../IAbout.ui" line="127"/>
+        <source>Proj4</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="63"/>
-        <source>Replace elevation of track points with the values from loaded DEM files.</source>
-        <translation>Ersetzt die Höhendaten durch Daten aus den geladenen DEM Dateien.</translation>
+        <location filename="../IAbout.ui" line="141"/>
+        <source>Routino</source>
+        <translation>Routino</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="70"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../IAbout.ui" line="172"/>
+        <source>Czech:</source>
+        <translation>Tschechisch:</translation>
     </message>
-</context>
-<context>
-    <name>IFilterReset</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterReset.ui" line="14"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="../IAbout.ui" line="195"/>
+        <source>German:</source>
+        <translation>Deutsch:</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterReset.ui" line="35"/>
-        <source><b>Reset Hidden Track Points</b></source>
-        <translation><b>Ausgeblendete Trackpunkte wiederherstellen</b></translation>
+        <location filename="../IAbout.ui" line="218"/>
+        <source>Dutch:</source>
+        <translation>Niederländisch:</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterReset.ui" line="47"/>
-        <source>Make all trackpoints visible again.</source>
-        <translation>Alle Trackpunkte werden wieder sichtbar.</translation>
+        <location filename="../IAbout.ui" line="241"/>
+        <source>French:</source>
+        <translation>Französisch:</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterReset.ui" line="54"/>
-        <source>...</source>
+        <location filename="../IAbout.ui" line="251"/>
+        <source>Rainer Unseld </source>
         <translation></translation>
     </message>
-</context>
-<context>
-    <name>IFilterSpeed</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../IAbout.ui" line="381"/>
+        <source>Christian Eichler (qms at christian-eichler.de)
+Ivo Kronenberg</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="35"/>
-        <source><b>Change Speed</b></source>
-        <translation><b>Geschwindigkeit ändern</b></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="44"/>
-        <source>Set speed to </source>
-        <translation>Ändert Geschwindigkeit auf </translation>
+        <location filename="../IAbout.ui" line="182"/>
+        <source>Pavel Fric</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="51"/>
-        <source> km/h</source>
-        <translation> km/h</translation>
+        <location filename="../IAbout.ui" line="281"/>
+        <source><b>Translation:</b></source>
+        <translation><b>Übersetzung:</b></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="102"/>
-        <source>...</source>
+        <location filename="../IAbout.ui" line="228"/>
+        <source>Harrie Klomp</source>
         <translation></translation>
     </message>
-</context>
-<context>
-    <name>IGisWidget</name>
     <message>
-        <location filename="../gis/IGisWidget.ui" line="14"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="../IAbout.ui" line="271"/>
+        <source>Spanish:</source>
+        <translation>Spanisch:</translation>
     </message>
     <message>
-        <source>State</source>
-        <translation type="obsolete">Status</translation>
+        <location filename="../IAbout.ui" line="305"/>
+        <source>Win64:</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/IGisWidget.ui" line="69"/>
-        <location filename="../gis/IGisWidget.ui" line="99"/>
-        <source>Name</source>
-        <translation>Name</translation>
+        <location filename="../IAbout.ui" line="345"/>
+        <source><b>Binaries:</b></source>
+        <translation><b>Ausführbare Dateien:</b></translation>
     </message>
     <message>
-        <location filename="../gis/IGisWidget.ui" line="133"/>
-        <source>To add a database do a right click on the database list above.</source>
-        <translation>Um eine Datenbank hinzuzufügen rechtsklicken Sie oben auf die Datenbankliste.</translation>
+        <location filename="../IAbout.ui" line="321"/>
+        <source>OS X:</source>
+        <translation></translation>
     </message>
-</context>
-<context>
-    <name>IGridSetup</name>
     <message>
-        <location filename="../grid/IGridSetup.ui" line="14"/>
-        <source>Setup Grid...</source>
-        <translation>Gitter einstellen...</translation>
+        <location filename="../IAbout.ui" line="374"/>
+        <source><b>Contributors:</b></source>
+        <translation><b>Mitwirkende:</b></translation>
     </message>
     <message>
-        <location filename="../grid/IGridSetup.ui" line="22"/>
-        <source>Projection</source>
-        <translation>Projektion</translation>
+        <location filename="../IAbout.ui" line="205"/>
+        <source>Josef Latt</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../grid/IGridSetup.ui" line="37"/>
-        <source>restore default</source>
-        <translation>Grundeinstellung wiederherstellen</translation>
+        <location filename="../IAbout.ui" line="258"/>
+        <source>Jose Luis Domingo Lopez</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../grid/IGridSetup.ui" line="40"/>
-        <location filename="../grid/IGridSetup.ui" line="66"/>
-        <location filename="../grid/IGridSetup.ui" line="92"/>
-        <location filename="../grid/IGridSetup.ui" line="146"/>
-        <source>...</source>
+        <location filename="../IAbout.ui" line="338"/>
+        <source>Ivo Kronenberg</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../grid/IGridSetup.ui" line="63"/>
-        <source>Get projection from current map.</source>
-        <translation>Projektion aus der aktuellen Karte nehmen.</translation>
+        <location filename="../IAbout.ui" line="331"/>
+        <source>Helmut Schmidt</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../grid/IGridSetup.ui" line="89"/>
-        <source>projection wizzard</source>
-        <translation>Projektionshilfe</translation>
+        <location filename="../IAbout.ui" line="354"/>
+        <source>...and thanks to all Linux binary maintainers for doing a great job. Special thanks to Dan Horák and Bas Couwenberg for showing presence on the mailing list to discuss distribution related topics.</source>
+        <translation>... und Danke an alle Ersteller von ausführbaren Linux-Dateien für die gute Arbeit. Ganz besonderen Dank an Dan Horák und Bas Couwenberg für ihre Teilnahme an der Diskussion in der Mailingliste distributionsbezogene Punkte betreffend.</translation>
     </message>
     <message>
-        <location filename="../grid/IGridSetup.ui" line="130"/>
-        <source>Grid color</source>
-        <translation>Gitterfarbe</translation>
+        <location filename="../IAbout.ui" line="399"/>
+        <source>This software is licensed under GPL3 or any later version</source>
+        <translation>Diese Software steht unter der GPL3 Lizenz (oder spätere Versionen)</translation>
     </message>
     <message>
-        <location filename="../grid/IGridSetup.ui" line="143"/>
-        <source>setup grid color</source>
-        <translation>Gitterfarbe einstellen</translation>
+        <location filename="../IAbout.ui" line="406"/>
+        <source>© 2014 Oliver Eichler (oliver.eichler at gmx.de)</source>
+        <translation></translation>
     </message>
 </context>
 <context>
-    <name>IImportDatabase</name>
+    <name>ICanvasSetup</name>
     <message>
-        <location filename="../tool/IImportDatabase.ui" line="14"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="../canvas/ICanvasSetup.ui" line="14"/>
+        <source>Setup Map View...</source>
+        <translation>Kartenansicht einstellen...</translation>
     </message>
     <message>
-        <location filename="../tool/IImportDatabase.ui" line="45"/>
-        <source>Source Database:</source>
-        <translation>Quelldatenbank:</translation>
+        <location filename="../canvas/ICanvasSetup.ui" line="22"/>
+        <source>Projection & Datum</source>
+        <translation>Projektion & Datum</translation>
     </message>
     <message>
-        <location filename="../tool/IImportDatabase.ui" line="52"/>
-        <location filename="../tool/IImportDatabase.ui" line="93"/>
-        <source>-</source>
+        <location filename="../canvas/ICanvasSetup.ui" line="32"/>
+        <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../tool/IImportDatabase.ui" line="102"/>
-        <source>Start</source>
-        <translation>Starten</translation>
+        <location filename="../canvas/ICanvasSetup.ui" line="53"/>
+        <source>Scales</source>
+        <translation>Skalierung</translation>
     </message>
     <message>
-        <location filename="../tool/IImportDatabase.ui" line="22"/>
-        <location filename="../tool/IImportDatabase.ui" line="63"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../canvas/ICanvasSetup.ui" line="59"/>
+        <source>Logarithmic</source>
+        <translation>Logarithmisch</translation>
     </message>
     <message>
-        <location filename="../tool/IImportDatabase.ui" line="86"/>
-        <source>Target Database:</source>
-        <translation>Zieldatenbank:</translation>
+        <location filename="../canvas/ICanvasSetup.ui" line="66"/>
+        <source>Square (optimized for TMS and WTMS tiles)</source>
+        <translation>Quadratisch (optimal für TMS und WMTS Karten)</translation>
     </message>
 </context>
 <context>
-    <name>IInputDialog</name>
-    <message>
-        <location filename="../helpers/IInputDialog.ui" line="14"/>
-        <source>Edit...</source>
-        <translation>Bearbeiten...</translation>
-    </message>
+    <name>IColorChooser</name>
     <message>
-        <location filename="../helpers/IInputDialog.ui" line="20"/>
-        <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <location filename="../widgets/IColorChooser.ui" line="14"/>
+        <source>Dialog</source>
+        <translation>Dialog</translation>
     </message>
 </context>
 <context>
-    <name>ILinksDialog</name>
+    <name>ICombineTrk</name>
     <message>
-        <location filename="../helpers/ILinksDialog.ui" line="14"/>
-        <source>Links...</source>
-        <translation>Verknüpfungen...</translation>
+        <location filename="../gis/trk/ICombineTrk.ui" line="14"/>
+        <source>Combine Tracks...</source>
+        <translation>Tracks verbinden...</translation>
     </message>
     <message>
-        <location filename="../helpers/ILinksDialog.ui" line="23"/>
-        <source>Type</source>
-        <translation>Typ</translation>
+        <location filename="../gis/trk/ICombineTrk.ui" line="43"/>
+        <location filename="../gis/trk/ICombineTrk.ui" line="70"/>
+        <location filename="../gis/trk/ICombineTrk.ui" line="117"/>
+        <location filename="../gis/trk/ICombineTrk.ui" line="144"/>
+        <source>...</source>
+        <translation></translation>
     </message>
+</context>
+<context>
+    <name>ICoordFormatSetup</name>
     <message>
-        <location filename="../helpers/ILinksDialog.ui" line="28"/>
-        <source>Text</source>
-        <translation>Text</translation>
+        <location filename="../units/ICoordFormatSetup.ui" line="14"/>
+        <source>Coordinate Format...</source>
+        <translation>Koordinatenformat...</translation>
     </message>
     <message>
-        <location filename="../helpers/ILinksDialog.ui" line="33"/>
-        <source>Uri</source>
-        <translation>URI</translation>
+        <location filename="../units/ICoordFormatSetup.ui" line="36"/>
+        <source>N48° 53.660 E013° 31.113</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../helpers/ILinksDialog.ui" line="43"/>
-        <location filename="../helpers/ILinksDialog.ui" line="63"/>
-        <source>...</source>
+        <location filename="../units/ICoordFormatSetup.ui" line="29"/>
+        <source>N48.8943° E013.51855°</source>
         <translation></translation>
     </message>
-</context>
-<context>
-    <name>IMainWindow</name>
     <message>
-        <location filename="../IMainWindow.ui" line="17"/>
-        <source>QMapShack</source>
+        <location filename="../units/ICoordFormatSetup.ui" line="22"/>
+        <source>N48° 53' 39.6" E13° 31' 6.78"</source>
         <translation></translation>
     </message>
+</context>
+<context>
+    <name>ICreateRouteFromWpt</name>
     <message>
-        <location filename="../IMainWindow.ui" line="63"/>
-        <source>File</source>
-        <translation>Datei</translation>
+        <location filename="../gis/rte/ICreateRouteFromWpt.ui" line="14"/>
+        <source>Create Route from Waypoints</source>
+        <translation>Route aus Wegpunkten erstellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="80"/>
-        <source>View</source>
-        <translation>Ansicht</translation>
+        <location filename="../gis/rte/ICreateRouteFromWpt.ui" line="30"/>
+        <location filename="../gis/rte/ICreateRouteFromWpt.ui" line="50"/>
+        <source>...</source>
+        <translation></translation>
     </message>
+</context>
+<context>
+    <name>ICutTrk</name>
     <message>
-        <location filename="../IMainWindow.ui" line="102"/>
-        <source>Window</source>
-        <translation>Fenster</translation>
+        <location filename="../gis/trk/ICutTrk.ui" line="14"/>
+        <source>Cut Track</source>
+        <translation>Track teilen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="107"/>
-        <source>?</source>
-        <translation>?</translation>
+        <location filename="../gis/trk/ICutTrk.ui" line="20"/>
+        <source>Delete first part of the track and keep second one</source>
+        <translation>Löscht den ersten Teil des Tracks und behält den zweiten</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="114"/>
-        <source>Project</source>
-        <translation>Projekt</translation>
+        <location filename="../gis/trk/ICutTrk.ui" line="27"/>
+        <source>Keep both parts of the track</source>
+        <translation>Behält beide Teile des Tracks</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="124"/>
-        <source>Tool</source>
-        <translation>Werkzeug</translation>
+        <location filename="../gis/trk/ICutTrk.ui" line="37"/>
+        <source>Keep first part of the track and delete second one</source>
+        <translation>Behält den ersten Teil des Tracks und löscht den zweiten</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="149"/>
-        <source>Maps</source>
-        <translation>Karten</translation>
+        <location filename="../gis/trk/ICutTrk.ui" line="60"/>
+        <source>Check this to store the result into a new track. 
+
+If you keep both parts of the track you have to create new ones. 
+
+If you want to keep just one half you can simply remove the points, or check this to create a new track.</source>
+        <translation>Wählen Sie das aus, wenn das Ergebnis ein neuer Track sein soll.
+
+Wenn Sie beide Teile des Tracks behalten wollen, müssen neue Tracks erstellt werden.
+
+Wenn Sie nur die eine Hälfte behalten wollen, können Sie einfach die Punkte löschen, oder wählen SIe das, um einen neuen Track zu erstellen.</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="192"/>
-        <source>Dig. Elev. Model (DEM)</source>
-        <translation>Dig. Höhenmodell (DEM)</translation>
+        <location filename="../gis/trk/ICutTrk.ui" line="67"/>
+        <source>Create a new track</source>
+        <translation>Neuen Track erstellen</translation>
     </message>
+</context>
+<context>
+    <name>IDB</name>
     <message>
-        <location filename="../IMainWindow.ui" line="231"/>
-        <source>Data</source>
-        <translation>Daten</translation>
+        <location filename="../gis/db/IDB.cpp" line="60"/>
+        <source>The internal database format of '%1'' has changed. QMapShack will migrate your database, now. After the migration the database won't be usable with older versions of QMapShack. It is recommended to backup the database first.</source>
+        <translation>Das interne Datenbankformat von '%1' wurde geändert. QMapShack wird ihre Datenbank nun migrieren. Nach der Migration kann die Datenbank mit älteren QMapShack Versionen nicht mehr verwendet werden. Es wird empfohlen, zuerst ein Backup der Datenbank zu erstellen.</translation>
     </message>
     <message>
-        <source>Add Map Workspace</source>
-        <translation type="obsolete">Ansicht hinzufügen</translation>
+        <location filename="../gis/db/IDB.cpp" line="64"/>
+        <source>Migrate database...</source>
+        <translation>Datenbank wird migiriert...</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="249"/>
-        <source>Route</source>
-        <translation></translation>
+        <location filename="../gis/db/IDB.cpp" line="74"/>
+        <source>Failed to migrate '%1'.</source>
+        <translation>Migrieren von '%1' fehlgeschlagen.</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="283"/>
-        <location filename="../IMainWindow.ui" line="286"/>
-        <source>Add Map View</source>
-        <translation>Kartenansicht hinzufügen</translation>
+        <location filename="../gis/db/IDB.cpp" line="76"/>
+        <location filename="../gis/db/IDB.cpp" line="100"/>
+        <source>Error...</source>
+        <translation>Fehler...</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="289"/>
-        <source>Ctrl+T</source>
-        <translation></translation>
+        <location filename="../gis/db/IDB.cpp" line="85"/>
+        <source>The database version of '%1'' is more advanced as the one understood by your QMapShack installation. This won't work.</source>
+        <translation>Die Datenbankversion von '%1' ist fortschrittlicher als die ihrer QMapShack Installation. Dies wird nicht funktionieren.</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="301"/>
-        <source>Show Scale</source>
-        <translation>Maßstab</translation>
+        <location filename="../gis/db/IDB.cpp" line="88"/>
+        <source>Wrong database version...</source>
+        <translation>Falsche Datenbankversion...</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="310"/>
-        <source>Setup Map Font</source>
-        <translation>Kartenfont einstellen</translation>
+        <location filename="../gis/db/IDB.cpp" line="98"/>
+        <source>Failed to initialize '%1'.</source>
+        <translation>Initialisieren von '%1' fehlgeschlagen.</translation>
     </message>
+</context>
+<context>
+    <name>IDBMysql</name>
     <message>
-        <location filename="../IMainWindow.ui" line="322"/>
-        <source>Show Grid</source>
-        <translation>Gitter</translation>
+        <location filename="../gis/db/IDBMysql.cpp" line="54"/>
+        <source>Password...</source>
+        <translation>Passwort...</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="325"/>
-        <source>Ctrl+G</source>
-        <translation></translation>
+        <location filename="../gis/db/IDBMysql.cpp" line="54"/>
+        <source>Password for database '%1':</source>
+        <translation>Passwort für Datenbank '%1':</translation>
     </message>
+</context>
+<context>
+    <name>IDemPathSetup</name>
     <message>
-        <location filename="../IMainWindow.ui" line="334"/>
-        <source>Setup Grid</source>
-        <translation>Gitter einstellen</translation>
+        <location filename="../dem/IDemPathSetup.ui" line="14"/>
+        <source>Setup DEM file paths</source>
+        <translation>Pfad für DEM Dateien setzen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="337"/>
-        <source>Ctrl+Alt+G</source>
+        <location filename="../dem/IDemPathSetup.ui" line="31"/>
+        <location filename="../dem/IDemPathSetup.ui" line="51"/>
+        <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="349"/>
-        <source>Flip Mouse Wheel</source>
-        <translation>Mausrad umdrehen</translation>
+        <location filename="../dem/IDemPathSetup.ui" line="112"/>
+        <source>-</source>
+        <translation></translation>
     </message>
+</context>
+<context>
+    <name>IDemPropSetup</name>
     <message>
-        <location filename="../IMainWindow.ui" line="358"/>
-        <location filename="../IMainWindow.ui" line="361"/>
-        <source>Setup Map Paths</source>
-        <translation>Kartenverzeichnisse angeben</translation>
+        <location filename="../dem/IDemPropSetup.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="373"/>
-        <source>POI Text</source>
-        <translation>POI Text</translation>
+        <location filename="../dem/IDemPropSetup.ui" line="35"/>
+        <source><html><head/><body><p>Change opacity of map</p></body></html></source>
+        <translation><html><head/><body><p>Ändert die Deckkraft der Karte</p></body></html></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="385"/>
-        <source>Night / Day</source>
-        <translation>Nacht / Tag</translation>
+        <location filename="../dem/IDemPropSetup.ui" line="50"/>
+        <source><html><head/><body><p>Click to use current scale as minimum scale to display the map.</p></body></html></source>
+        <translation><html><head/><body><p>Klicken, um die aktuelle Skalierung als minimale Skalierung zu benutzen.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="397"/>
-        <source>Map Tool Tip</source>
-        <translation>Kartentooltip</translation>
+        <location filename="../dem/IDemPropSetup.ui" line="53"/>
+        <location filename="../dem/IDemPropSetup.ui" line="90"/>
+        <source>...</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="400"/>
-        <source>Ctrl+I</source>
-        <translation></translation>
+        <location filename="../dem/IDemPropSetup.ui" line="74"/>
+        <source><html><head/><body><p>Control the range of scale the map is displayed. Use the two buttons left and right to define the actual scale as either minimum or maximum scale.</p></body></html></source>
+        <translation><html><head/><body><p>Stellt den Skalierungsbereich ein, in dem die Karte sichtbar ist. Benutzen Sie die beiden Knöpfe links und rechts um die minimale und maximale Skalierung einzustellen.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="409"/>
-        <source>Setup DEM Paths</source>
-        <translation>DEM Verzeichnisse angeben</translation>
+        <location filename="../dem/IDemPropSetup.ui" line="87"/>
+        <source><html><head/><body><p>Click to use current scale as maximum scale to display the map.</p></body></html></source>
+        <translation><html><head/><body><p>Klicken um die aktuelle Skalierung als maximale Skalierung zu benutzen.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="418"/>
-        <source>About</source>
-        <translation>Über</translation>
+        <location filename="../dem/IDemPropSetup.ui" line="118"/>
+        <source>Hillshading</source>
+        <translation>Schummerung</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="427"/>
-        <source>Help</source>
-        <translation>Hilfe</translation>
+        <location filename="../dem/IDemPropSetup.ui" line="144"/>
+        <source>Slope </source>
+        <translation>Hangneigung </translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="436"/>
-        <location filename="../IMainWindow.ui" line="439"/>
-        <source>Setup Map View</source>
-        <translation>Kartenansicht einstellen</translation>
+        <location filename="../dem/IDemPropSetup.ui" line="226"/>
+        <location filename="../dem/IDemPropSetup.ui" line="326"/>
+        <location filename="../dem/IDemPropSetup.ui" line="410"/>
+        <location filename="../dem/IDemPropSetup.ui" line="494"/>
+        <location filename="../dem/IDemPropSetup.ui" line="578"/>
+        <source>°</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="553"/>
-        <source>VRT Builder</source>
-        <translation>VRT Builder</translation>
+        <location filename="../dem/IDemPropSetup.ui" line="229"/>
+        <location filename="../dem/IDemPropSetup.ui" line="329"/>
+        <location filename="../dem/IDemPropSetup.ui" line="413"/>
+        <location filename="../dem/IDemPropSetup.ui" line="497"/>
+        <location filename="../dem/IDemPropSetup.ui" line="581"/>
+        <source>> </source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="556"/>
-        <source>GUI front end to gdalbuildvrt</source>
-        <translation>Eine graphische Benutzerschnittstelle zu gdalbuildvrt </translation>
+        <location filename="../dem/IDemPropSetup.ui" line="251"/>
+        <location filename="../dem/IDemPropSetup.ui" line="270"/>
+        <location filename="../dem/IDemPropSetup.ui" line="354"/>
+        <location filename="../dem/IDemPropSetup.ui" line="438"/>
+        <location filename="../dem/IDemPropSetup.ui" line="522"/>
+        <source>TextLabel</source>
+        <translation>Bezeichnung</translation>
     </message>
+</context>
+<context>
+    <name>IDemsList</name>
     <message>
-        <location filename="../IMainWindow.ui" line="565"/>
-        <source>Store Map View</source>
-        <translation>Kartenansicht speichern</translation>
+        <location filename="../dem/IDemList.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="568"/>
-        <source>Write current active map and DEM list including the properties to a file</source>
-        <translation>Speichert die aktive Karten und DEM Dateien inklusive der Eigenschaften in einer Datei</translation>
+        <location filename="../dem/IDemList.ui" line="118"/>
+        <source>To add files with elevation data use File->Setup DEM Paths. </source>
+        <translation>Um Dateien mit Höhendaten zuzufügen -> Menü Datei - DEM Verzeichnisse angeben.</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="577"/>
-        <source>Load Map View</source>
-        <translation>Kartenansicht laden</translation>
+        <location filename="../dem/IDemList.ui" line="131"/>
+        <source>Use the context menu (right mouse button click on entry) to activate a file. Use drag-n-drop to move the activated file in the process order. </source>
+        <translation>Nutze das Kontextmenü (Klick mit rechter Maustaste auf Eintrag), um eine Datei zu aktivieren. Nutze Ziehen u. Ablegen, um die aktivierte Datei in der Reihenfolge der Ansicht zu verschieben.</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="580"/>
-        <source>Restore view with active map and DEM list including the properties from a file</source>
-        <translation>Stellt die aktive Karten und DEM Dateien inklusive der Eigenschaften aus einer Datei wieder her</translation>
+        <location filename="../dem/IDemList.ui" line="156"/>
+        <source>Activate</source>
+        <translation>Aktivieren</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="592"/>
-        <source>Ext. Profile</source>
-        <translation>Erw. Profil</translation>
+        <location filename="../dem/IDemList.ui" line="165"/>
+        <source>Move Up</source>
+        <translation>Nach oben verschieben</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="595"/>
-        <source>Ctrl+E</source>
-        <translation></translation>
+        <location filename="../dem/IDemList.ui" line="168"/>
+        <source>Hide DEM behind previous one</source>
+        <translation>Versteckt DEM hinter dem vorherigen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="604"/>
-        <source>Close</source>
-        <translation>Schließen</translation>
+        <location filename="../dem/IDemList.ui" line="177"/>
+        <source>Move down</source>
+        <translation>Nach unten verschieben</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="607"/>
-        <source>Ctrl+Q</source>
-        <translation></translation>
+        <location filename="../dem/IDemList.ui" line="180"/>
+        <source>Show DEM on top of next one</source>
+        <translation>DEM überlagert das nächste</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="616"/>
-        <source>Clone Map View</source>
-        <translation>Kartenansicht klonen</translation>
+        <location filename="../dem/IDemList.ui" line="189"/>
+        <source>Reload DEM</source>
+        <translation>DEM erneut laden</translation>
     </message>
+</context>
+<context>
+    <name>IDetailsGeoCache</name>
     <message>
-        <location filename="../IMainWindow.ui" line="619"/>
-        <source>Ctrl+Shift+T</source>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="20"/>
+        <source>Dialog</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="628"/>
-        <source>Create Routino Database</source>
-        <translation>Routino Datenbank erstellen</translation>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="47"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="73"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="86"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="99"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="112"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="125"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="151"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="164"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="177"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="190"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="203"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="252"/>
+        <source>-</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="637"/>
-        <source>Save(Print) Map Screenshot</source>
-        <translation>Kartenansicht speichern(drucken)</translation>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="267"/>
+        <source>about:blank</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="640"/>
-        <source>Print a selected area of the map</source>
-        <translation>Einen ausgewählten Bereich der Karte drucken</translation>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="40"/>
+        <source>Position:</source>
+        <translation>Position:</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="643"/>
-        <source>Ctrl+P</source>
-        <translation></translation>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="60"/>
+        <source>Difficulty</source>
+        <translation>Schwierigkeit</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="652"/>
-        <source>Setup Coord. Format</source>
-        <translation>Koordinatenformat einstellen</translation>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="138"/>
+        <source>Terrain</source>
+        <translation>Gelände</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="655"/>
-        <source>Change the format coordinates are displayed</source>
-        <translation>Ändert das Format der angezeigten Koordianten</translation>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="214"/>
+        <source>Update spoilers</source>
+        <translation>Spoiler erneut laden</translation>
     </message>
     <message>
-        <source>Setup Map Workspace</source>
-        <translation type="obsolete">Arbeitsplatz einstellen</translation>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="217"/>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="275"/>
+        <source>...</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="448"/>
-        <source>Load GIS Data</source>
-        <translation>GIS Daten laden</translation>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="293"/>
+        <source>Hint:</source>
+        <translation>Hinweis:</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="451"/>
-        <source>Load projects from file</source>
-        <translation>Lade Datei als Projekt</translation>
+        <location filename="../gis/wpt/IDetailsGeoCache.ui" line="324"/>
+        <source>TextLabel</source>
+        <translation>Bezeichnung</translation>
     </message>
+</context>
+<context>
+    <name>IDetailsOvlArea</name>
     <message>
-        <location filename="../IMainWindow.ui" line="454"/>
-        <source>Ctrl+L</source>
-        <translation></translation>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="14"/>
+        <source>Dialog</source>
+        <translation>Dialog</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="463"/>
-        <source>Save All GIS Data</source>
-        <translation>Alle GIS Daten speichern</translation>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="132"/>
+        <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
+        <translation><html><head/><body><p>Der Wegpunkt wurde in QMapShack importiert und geändert. Die ursprünglichen Daten werden nicht mehr angezeigt. Näheres siehe Änderungshistorie.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="466"/>
-        <source>Save all projects in the workspace</source>
-        <translation>Alle Projekte die sich auf dem Arbeitsplatz befinden, speichern</translation>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="148"/>
+        <source>Toggle read only mode. You have to open the lock to edit the item.</source>
+        <translation>Den Schreibschutz ändern. Das Schloss muss offen sein um das Element zu bearbeiten.</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="469"/>
-        <source>Ctrl+S</source>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="151"/>
+        <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="478"/>
-        <source>Setup Time Zone</source>
-        <translation>Zeitzone einstellen</translation>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="181"/>
+        <source>Color</source>
+        <translation>Farbe</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="487"/>
-        <source>Add empty project</source>
-        <translation>Leeres Projekt hinzufügen</translation>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="202"/>
+        <source>Border width</source>
+        <translation>Rahmenbreite</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="499"/>
-        <source>Search Google</source>
-        <translation>Mit Google suchen</translation>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="216"/>
+        <source>Style</source>
+        <translation>Stil</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="508"/>
-        <source>Close all projects</source>
-        <translation>Alle Projekte schließen</translation>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="235"/>
+        <source>Opacity</source>
+        <translation>Deckkraft</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="511"/>
-        <source>F8</source>
-        <translation></translation>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="248"/>
+        <source>Info</source>
+        <translation>Info</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="520"/>
-        <source>Setup Units</source>
-        <translation>Einheiten einstellen</translation>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="277"/>
+        <source>Points</source>
+        <translation>Punkte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="529"/>
-        <source>Setup Workspace</source>
-        <translation>Arbeitsplatz konfigurieren</translation>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="304"/>
+        <source>Position</source>
+        <translation>Position</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="532"/>
-        <source>Setup save on exit.</source>
-        <translation>Speichert Einstellungen beim Beenden.</translation>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="313"/>
+        <source>Hist.</source>
+        <translation>Historie</translation>
     </message>
+</context>
+<context>
+    <name>IDetailsPrj</name>
     <message>
-        <location filename="../IMainWindow.ui" line="541"/>
-        <source>Import Database from QLandkarte</source>
-        <translation>Datenbankimport aus QLandkarte</translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Setup Database</source>
-        <translation type="obsolete">Datenbank einrichten</translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="50"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="57"/>
+        <source>-</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Import Database</source>
-        <translation type="obsolete">Datenbank importieren</translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="115"/>
+        <source>Print diary</source>
+        <translation>Tagebuch drucken</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="544"/>
-        <source>Import QLandkarte GT database</source>
-        <translation>QLandkarte GT Datenbank importieren</translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="94"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="118"/>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="138"/>
+        <source>...</source>
+        <translation></translation>
     </message>
-</context>
-<context>
-    <name>IMapList</name>
     <message>
-        <location filename="../map/IMapList.ui" line="14"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="71"/>
+        <source>Keep order of project</source>
+        <translation>Reihenfolge beibehalten</translation>
     </message>
     <message>
-        <source>To add maps use File->Setup Map Pathss. </source>
-        <translation type="obsolete">Um Karten zuzufügen -> Menü Datei - Kartenverzeichnisse angeben.</translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="76"/>
+        <source>Sort by time</source>
+        <translation>Sortieren nach Zeit</translation>
     </message>
     <message>
-        <location filename="../map/IMapList.ui" line="103"/>
-        <source>To add maps use File->Setup Map Paths. </source>
-        <translation>Um Karten zuzufügen: Menü - Datei - Kartenverzeichnisse angeben.</translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="81"/>
+        <source>Sort along track (multiple)</source>
+        <translation>Sort. entl. d. Tracks (mehrfach)</translation>
     </message>
     <message>
-        <location filename="../map/IMapList.ui" line="116"/>
-        <source>Use the context menu (right mouse button click on entry) to activate a map. Use drag-n-drop to move the activated map in the draw order. </source>
-        <translation>Nutze das Kontextmenü ( Klick mit rechter Maustaste auf Eintrag), um eine Karte zu aktivieren. Nutze Ziehen u. Ablegen um die aktivierte Datei in der Reihenfolge der Ansicht zu verschieben.</translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="86"/>
+        <source>Sort along track (single)</source>
+        <translation>Sort. entl. d. Tracks (einmalig)</translation>
     </message>
     <message>
-        <location filename="../map/IMapList.ui" line="129"/>
-        <source>Help! I want maps!
-I don't want to read the documentation!</source>
-        <translation>Hilfe! Ich will Karten!
-Keine Lust die Anleitung zu lesen!</translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="135"/>
+        <source>Rebuild diary.</source>
+        <translation>Tagebuch aktualisieren.</translation>
     </message>
     <message>
-        <location filename="../map/IMapList.ui" line="149"/>
-        <source>Activate</source>
-        <translation>Aktivieren</translation>
+        <location filename="../gis/prj/IDetailsPrj.ui" line="43"/>
+        <source>Keywords:</source>
+        <translation>Stichwörter:</translation>
     </message>
 </context>
 <context>
-    <name>IMapPathSetup</name>
+    <name>IDetailsRte</name>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="14"/>
-        <source>Setup map paths</source>
-        <translation>Kartenpfad einstellen</translation>
+        <location filename="../gis/rte/IDetailsRte.ui" line="36"/>
+        <source>Info</source>
+        <translation>Info</translation>
     </message>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="20"/>
-        <source>Root path of tile cache for online maps:</source>
-        <translation>Hauptverzeichnis für den Kachelspeicher von Onlinekarten:</translation>
+        <location filename="../gis/rte/IDetailsRte.ui" line="205"/>
+        <source>-</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="36"/>
-        <location filename="../map/IMapPathSetup.ui" line="73"/>
-        <location filename="../map/IMapPathSetup.ui" line="93"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../gis/rte/IDetailsRte.ui" line="154"/>
+        <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
+        <translation><html><head/><body><p>Der Wegpunkt wurde in QMapShack importiert und geändert. Die ursprünglichen Daten werden nicht mehr angezeigt. Näheres siehe Änderungshistorie.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="185"/>
-        <source>Help! I want maps!
-I don't want to read the documentation!</source>
-        <translation>Hilfe! Ich will Karten!
-Keine Lust die Anleitung zu lesen!</translation>
+        <location filename="../gis/rte/IDetailsRte.ui" line="170"/>
+        <source>Toggle read only mode. You have to open the lock to edit the item.</source>
+        <translation>Den Schreibschutz ändern. Das Schloss muss offen sein um das Element zu bearbeiten.</translation>
     </message>
     <message>
-        <location filename="../map/IMapPathSetup.ui" line="29"/>
-        <location filename="../map/IMapPathSetup.ui" line="154"/>
-        <source>-</source>
+        <location filename="../gis/rte/IDetailsRte.ui" line="173"/>
+        <source>...</source>
         <translation></translation>
     </message>
+    <message>
+        <location filename="../gis/rte/IDetailsRte.ui" line="229"/>
+        <source>Hist.</source>
+        <translation>Historie</translation>
+    </message>
 </context>
 <context>
-    <name>IMapPropSetup</name>
+    <name>IDetailsTrk</name>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="14"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="14"/>
         <source>Form</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="35"/>
-        <source><html><head/><body><p>Change opacity of map</p></body></html></source>
-        <translation><html><head/><body><p>Ändert die Transparenz der Karte</p></body></html></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="56"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="77"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="98"/>
+        <source>-
+-</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="50"/>
-        <source><html><head/><body><p>Click to use current scale as minimum scale to display the map.</p></body></html></source>
-        <translation><html><head/><body><p>Klicken um die aktuelle Skalierung als minimale Skalierung zu benutzen.</p></body></html></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1019"/>
+        <source>Profile</source>
+        <translation>Profil</translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="53"/>
-        <location filename="../map/IMapPropSetup.ui" line="90"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1460"/>
+        <source>Speed</source>
+        <translation>Geschw.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="277"/>
+        <source>Toggle read only mode. You have to open the lock to edit the item.</source>
+        <translation>Den Schreibschutz ändern. Das Schloss muss offen sein um das Element zu bearbeiten.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="280"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="444"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="473"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="538"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="564"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="593"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="682"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="711"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1040"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1069"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1101"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1137"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1166"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1198"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1234"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1263"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1295"/>
         <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="74"/>
-        <source><html><head/><body><p>Control the range of scale the map is displayed. Use the two buttons left and right to define the actual scale as either minimum or maximum scale.</p></body></html></source>
-        <translation><html><head/><body><p>Stellt den Skalierungsbereich ein, in dem die Karte sichtbar ist. Benutzen Sie die beiden Knöpfe links und rechts um die minimale und maximale Skalierung einzustellen.</p></body></html></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="255"/>
+        <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
+        <translation><html><head/><body><p>Der Wegpunkt wurde in QMapShack importiert und geändert. Die ursprünglichen Daten werden nicht mehr angezeigt. Näheres siehe Änderungshistorie.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="87"/>
-        <source><html><head/><body><p>Click to use current scale as maximum scale to display the map.</p></body></html></source>
-        <translation><html><head/><body><p>Klicken um die aktuelle Skalierung als maximale Skalierung zu benutzen.</p></body></html></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="377"/>
+        <source>Style</source>
+        <translation>Stil</translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="137"/>
-        <source>Areas</source>
-        <translation>Gebiete</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="419"/>
+        <source>Source</source>
+        <translation>Quelle</translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="144"/>
-        <source>Lines</source>
-        <translation>Linien</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="624"/>
+        <source>Maximum</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="151"/>
-        <source>Points</source>
-        <translation>Punkte</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="764"/>
+        <source>Minimum</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="233"/>
-        <source>-</source>
-        <translation></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="426"/>
+        <source>Width</source>
+        <translation>Breite</translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="240"/>
-        <source>Cache Path</source>
-        <translation>Speicherpfad</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="631"/>
+        <source>with arrows</source>
+        <translation>mit Richtungspfeilen</translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="196"/>
-        <source>Cache Size (MB)</source>
-        <translation>Cache (MB)</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="832"/>
+        <source>Graphs</source>
+        <translation>Diagramme</translation>
     </message>
     <message>
-        <location filename="../map/IMapPropSetup.ui" line="216"/>
-        <source>Expiration (Days)</source>
-        <translation>Verfallzeit (Tage)</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1324"/>
+        <source>Activity</source>
+        <translation>Aktivität</translation>
     </message>
-</context>
-<context>
-    <name>IMapVrtBuilder</name>
     <message>
-        <location filename="../tool/IMapVrtBuilder.ui" line="14"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1365"/>
+        <source>To differentiate the track statistics select an activity from the list for the complete track. Or select a part of the track to assign an activity.</source>
+        <translation>Um Trackstatistiken zu differenzieren, wählen Sie für den gesamten Track eine Aktivität aus der Liste. Oder wählen Sie einen Teil des Track aus und weisen diesem eine Aktivität zu.</translation>
     </message>
     <message>
-        <location filename="../tool/IMapVrtBuilder.ui" line="22"/>
-        <location filename="../tool/IMapVrtBuilder.ui" line="56"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1392"/>
+        <source>Points</source>
+        <translation>Punkte</translation>
     </message>
     <message>
-        <location filename="../tool/IMapVrtBuilder.ui" line="39"/>
-        <source>Select source files:</source>
-        <translation>Quelldateien auswählen:</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1440"/>
+        <source>Time</source>
+        <translation>Zeit</translation>
     </message>
     <message>
-        <location filename="../tool/IMapVrtBuilder.ui" line="79"/>
-        <source>Target Filename:</source>
-        <translation>Zieldatei auswählen:</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1445"/>
+        <source>Ele.</source>
+        <translation>Höhe</translation>
     </message>
     <message>
-        <location filename="../tool/IMapVrtBuilder.ui" line="86"/>
-        <source>-</source>
-        <translation></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1450"/>
+        <source>Delta</source>
+        <translation>Delta</translation>
     </message>
     <message>
-        <location filename="../tool/IMapVrtBuilder.ui" line="95"/>
-        <source>Start</source>
-        <translation></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1455"/>
+        <source>Dist.</source>
+        <translation>Entf.</translation>
     </message>
-</context>
-<context>
-    <name>IMouseEditLine</name>
     <message>
-        <source>Add points?</source>
-        <translation type="obsolete">Punkte hinzufügen?</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1465"/>
+        <source>Slope</source>
+        <translation>Neigung</translation>
     </message>
     <message>
-        <source>Add points to temporary line?</source>
-        <translation type="obsolete">Punkte zur temporären Linie hinzufügen?</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1470"/>
+        <source>Ascend</source>
+        <translation>Anstieg</translation>
     </message>
     <message>
-        <source>Warning!</source>
-        <translation type="obsolete">Warnung!</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1475"/>
+        <source>Descend</source>
+        <translation>Abstieg</translation>
     </message>
     <message>
-        <source>This will replace all data of the orignal by a simple line of coordinates. All other data will be lost permanently.</source>
-        <translation type="obsolete">Alle ursprünglichen Daten werden durch eine einfache Koordinatenlinie ersetzt. Alle anderen Daten sind dauerhaft verloren.</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1480"/>
+        <source>Position</source>
+        <translation>Position</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="255"/>
-        <source><b>New Line</b><br/>Move the mouse and use the left mouse button to drop points. When done use the right mouse button to stop.<br/></source>
-        <translation><b>Neue Linie</b><br/>Erstellen Sie Punkte durch Verschieben des Mauscursors und Drücken der linken Maustaste. Mit der rechten Maustaste beenden Sie den Vorgang.<br/></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="345"/>
+        <source>Info</source>
+        <translation>Info</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="302"/>
-        <source><b>Delete Point</b><br/>Move the mouse close to a point and press the left button to delete it.<br/></source>
-        <translation><b>Punkt löschen</b><br/>Bewegen Sie den Mauscursor nahe an einen Punkt und drücken Sie die linke Maustaste um ihn zu löschen. <br/></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="306"/>
+        <source>-</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="311"/>
-        <source><b>Select Range of Points</b><br/>Left click on first point to start selection. Left click second point to complete selection and choose from options. Use the right mouse button to cancel.<br/></source>
-        <translation><b>Punktebereich auswählen</b><br/>Mit der linken Maustaste wählen Sie den ersten Punkt aus. Mit einem erneuten Drücken der linken Maustaste wählen Sie den zweiten Punkt aus und dann wählen Sie eine der Optionen. Zum Abbrechen nutzen Sie die rechte Maustaste.<br/></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="441"/>
+        <source>Use/edit user defined visibility of arrows for this track</source>
+        <translation>Benutzt die benutzerdefinierte Sichtbarkeit der Richtungspfeile für diesen Track</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="320"/>
-        <source><b>Move Point</b><br/>Move the mouse close to a point and press the left button to make it stick to the cursor. Move the mouse to move the point. Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
-        <translation><b>Punkt verschieben</b><br/>Bewegen Sie den Mauscursor nahe an einen Punkt und drücken die linke Maustaste, um ihn mit dem Cursor zu fangen. Verschieben Sie den Punkt mit der Maus. Setzen Sie den Punkt mit einem Linksklick. Zum Abbrechen nutzen Sie die rechte Maustaste.<br/></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="470"/>
+        <source>Use/edit system's visibility of arrows for all tracks</source>
+        <translation>Benutzet die vorgegebene Sichtbarkeit der Richtungspfeile für alle Tracks</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="329"/>
-        <source><b>Add Point</b><br/>Move the mouse close to a line segment and press the left button to add a point. The point will stick to the cursor and you can move it.  Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
-        <translation><b>Punkt hinzufügen</b><br/>Bewegen Sie den Mauscursor nahe an ein Liniensegment und drücken die linke Maustaste, um einen Punkt hinzuzufügen. Der Punkt wird durch den Cursor gefangen und kann verschoben werden. Setzen Sie den Punkt mit einem Linksklick. Zum Abbrechen nutzen Sie die rechte Maustaste.<br/></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="679"/>
+        <source>Use/edit user defined scale factor for this track</source>
+        <translation>Benutzt den benutzerdefinierten Skalierungsfaktor für diesen Track</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="338"/>
-        <source><b>No Routing</b><br/>All points will be connected with a straight line.<br/></source>
-        <translation><b>Kein Routing</b><br/>Alle Punkte werden mittles einer geraden Linie verbunden.<br/></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="708"/>
+        <source>Use/edit system's default factor for all tracks</source>
+        <translation>Benutzt den vorgegebenen Skalierungsfaktor für alle Tracks</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="343"/>
-        <source><b>Auto Routing</b><br/>The current router setup is used to derive a route between points. <b>Note:</b> The selected router must be able to route on-the-fly. Offline routers usually can do, online routers can't.<br/></source>
-        <translation><b>Auto Routing</b><br/>Die aktuellen Router Einstellungen erstellen eine Route zwischen Punkten. <b>Hinweis:</b> Der gewählte Router muss schnell routen können. Offline Router können dies gewöhnlich, Online Router nicht.<br/></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="638"/>
+        <source>x </source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="348"/>
-        <source><b>Vector Routing</b><br/>Connect points with a line from a loaded vector map if possible.<br/></source>
-        <translation><b>Vektor Routing</b><br/>Verbindet Punkte mit einer Linie einer geladenen Vektorkarte, soweit möglich.<br/></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="845"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="865"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="951"/>
+        <source>max.</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="517"/>
-        <source><b>%1 Metrics</b></source>
-        <translation><b>%1maße</b></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="984"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="991"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1005"/>
+        <source>min.</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="520"/>
-        <source>Distance:</source>
-        <translation>Entfernung:</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="535"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1037"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1134"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1231"/>
+        <source>User defined limits for this track</source>
+        <translation>Benutzerdefinierte Grenzwerte für diesen Track</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="522"/>
-        <source>Ascend:</source>
-        <translation>Anstieg:</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="561"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1066"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1163"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1260"/>
+        <source>Automatic limits</source>
+        <translation>Automatische Grenzwerte</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="524"/>
-        <source>Descend:</source>
-        <translation>Abstieg:</translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="590"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1098"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1195"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1292"/>
+        <source>User defined limits for all tracks</source>
+        <translation>Benutzerdefinierte Grenzwerte für alle Tracks</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="784"/>
+        <source>Color</source>
+        <translation>Farbe</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1489"/>
+        <source>Filter</source>
+        <translation>Filter</translation>
     </message>
     <message>
-        <source><b>No Routing</b><br/>Connect points with a line from a loaded vector map if possible.<br/></source>
-        <translation type="obsolete"><b>Keun Routing</b><br/>Verbindet Punkte mit einer Linie einer geladenen Vektorkarte, soweit möglich.<br/></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1526"/>
+        <source>Hist.</source>
+        <translation>Historie</translation>
     </message>
 </context>
 <context>
-    <name>IPhotoAlbum</name>
+    <name>IDetailsWpt</name>
     <message>
-        <location filename="../widgets/IPhotoAlbum.ui" line="20"/>
-        <source>Form</source>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="14"/>
+        <source>Dialog</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../widgets/IPhotoAlbum.ui" line="50"/>
-        <location filename="../widgets/IPhotoAlbum.ui" line="77"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="287"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="342"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="362"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="394"/>
         <source>...</source>
         <translation></translation>
     </message>
-</context>
-<context>
-    <name>IPlot</name>
     <message>
-        <location filename="../plot/IPlot.cpp" line="91"/>
-        <source>Reset Zoom</source>
-        <translation>Zoom zurücksetzen</translation>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="268"/>
+        <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
+        <translation><html><head/><body><p>Der Wegpunkt wurde in QMapShack importiert und geändert. Die ursprünglichen Daten werden nicht mehr angezeigt. Näheres siehe Änderungshistorie.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="92"/>
-        <source>Stop Range</source>
-        <translation>Bereichsauswahl beenden</translation>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="43"/>
+        <source>Info</source>
+        <translation>Info</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="93"/>
-        <source>Save...</source>
-        <translation>Speichern ...</translation>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="77"/>
+        <source>Position:</source>
+        <translation>Position:</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="613"/>
-        <source>No or bad data.</source>
-        <translation>Keine oder schlechte Daten.</translation>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="84"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="110"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="136"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="328"/>
+        <source>-</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="1200"/>
-        <source>Select output file</source>
-        <translation>Ausgabedatei auswählen</translation>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="97"/>
+        <source>Ele.</source>
+        <translation>Höhe</translation>
     </message>
-</context>
-<context>
-    <name>IPositionDialog</name>
     <message>
-        <location filename="../helpers/IPositionDialog.ui" line="14"/>
-        <source>Position ...</source>
-        <translation>Position...</translation>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="123"/>
+        <source>Proximity:</source>
+        <translation>Abstand:</translation>
     </message>
     <message>
-        <location filename="../helpers/IPositionDialog.ui" line="20"/>
-        <source>Enter new position</source>
-        <translation>Neue Position eingeben</translation>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="284"/>
+        <source>Toggle read only mode. You have to open the lock to edit the item.</source>
+        <translation>Den Schreibschutz ändern. Das Schloss muss offen sein um das Element zu bearbeiten.</translation>
     </message>
     <message>
-        <location filename="../helpers/IPositionDialog.ui" line="30"/>
-        <source>Bad position format. Must be: 
-"[N|S] ddd mm.sss [W|E] ddd mm.sss"
-or
-"[N|S] ddd.ddd [W|E] ddd.ddd"</source>
-        <translation>Falsches Positionsformat. Muss entweder 
-"[N|S] ddd mm.sss [W|E] ddd mm.sss"
-oder
-"[N|S] ddd.ddd [W|E] ddd.ddd"
-sein</translation>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="413"/>
+        <source>Hist.</source>
+        <translation>Historie</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="339"/>
+        <source>Add images.</source>
+        <translation>Bilder hinzufügen.</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="359"/>
+        <source>Delete selected image.</source>
+        <translation>Ausgewähltes Bild löschen.</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="321"/>
+        <source>Date/Time:</source>
+        <translation>Datum/Zeit:</translation>
     </message>
 </context>
 <context>
-    <name>IPrintDialog</name>
+    <name>IDevice</name>
     <message>
-        <location filename="../print/IPrintDialog.ui" line="20"/>
-        <source>Print map...</source>
-        <translation>Karte drucken...</translation>
+        <location filename="../device/IDevice.cpp" line="247"/>
+        <source>There is another project with the same name. If you press 'ok' it will be removed and replaced.</source>
+        <translation>Es gibt schon ein Projekt mit dem selben Namen. Wenn Sie 'ok' drücken wird dieses entfernt und ersetzt.</translation>
     </message>
+</context>
+<context>
+    <name>IElevationDialog</name>
     <message>
-        <location filename="../print/IPrintDialog.ui" line="50"/>
-        <source>Save</source>
-        <translation>Speichern</translation>
+        <location filename="../helpers/IElevationDialog.ui" line="14"/>
+        <source>Edit elevation...</source>
+        <translation>Höhe bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../print/IPrintDialog.ui" line="69"/>
-        <location filename="../print/IPrintDialog.ui" line="82"/>
-        <location filename="../print/IPrintDialog.ui" line="131"/>
-        <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <location filename="../helpers/IElevationDialog.ui" line="22"/>
+        <source>Elevation</source>
+        <translation>Höhe</translation>
     </message>
     <message>
-        <location filename="../print/IPrintDialog.ui" line="98"/>
-        <source>Print</source>
-        <translation>Drucken</translation>
+        <location filename="../helpers/IElevationDialog.ui" line="32"/>
+        <source>-</source>
+        <translation></translation>
     </message>
-</context>
-<context>
-    <name>IProgressDialog</name>
     <message>
-        <location filename="../helpers/IProgressDialog.ui" line="14"/>
-        <source>Please wait...</source>
-        <translation>Bitte warten...</translation>
+        <location filename="../helpers/IElevationDialog.ui" line="39"/>
+        <source>Get elevation from active digital elevation model.</source>
+        <translation>Höhe aus aktivem digitalen Höhenmodell entnehmen.</translation>
     </message>
     <message>
-        <location filename="../helpers/IProgressDialog.ui" line="20"/>
-        <location filename="../helpers/IProgressDialog.ui" line="27"/>
-        <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <location filename="../helpers/IElevationDialog.ui" line="42"/>
+        <source>...</source>
+        <translation></translation>
     </message>
 </context>
 <context>
-    <name>IProjWizard</name>
+    <name>IFilterDelete</name>
     <message>
-        <location filename="../grid/IProjWizard.ui" line="14"/>
-        <source>Proj4 Wizzard</source>
-        <translation>Proj4 Wizard</translation>
+        <location filename="../gis/trk/filter/IFilterDelete.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../grid/IProjWizard.ui" line="29"/>
-        <source>Mercator</source>
+        <location filename="../gis/trk/filter/IFilterDelete.ui" line="51"/>
+        <source><b>Remove Track Points</b></source>
+        <translation><b>Trackpunkte entfernen</b></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDelete.ui" line="63"/>
+        <source>Remove all hidden track points permanently.</source>
+        <translation>Alle ausgeblendeten Trackpunkte werden dauerhaft entfernt.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDelete.ui" line="70"/>
+        <source>...</source>
         <translation></translation>
     </message>
+</context>
+<context>
+    <name>IFilterDeleteExtension</name>
     <message>
-        <location filename="../grid/IProjWizard.ui" line="38"/>
-        <source>UTM</source>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="14"/>
+        <source>Form</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../grid/IProjWizard.ui" line="45"/>
-        <source>zone</source>
-        <translation>Zone</translation>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="51"/>
+        <source><b>Remove Extension from all Track Points</b></source>
+        <translation><b>Erweiterung von allen Trackpunkten entfernen</b></translation>
     </message>
     <message>
-        <location filename="../grid/IProjWizard.ui" line="82"/>
-        <source>user defined</source>
-        <translation>Benutzer definiert</translation>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="63"/>
+        <source>Remove </source>
+        <translation>Entfernt </translation>
     </message>
     <message>
-        <location filename="../grid/IProjWizard.ui" line="94"/>
-        <source>Datum</source>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="83"/>
+        <source>from all Track Points</source>
+        <translation>von allen Trackpunkten</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="103"/>
+        <source>...</source>
         <translation></translation>
     </message>
+</context>
+<context>
+    <name>IFilterDouglasPeuker</name>
     <message>
-        <location filename="../grid/IProjWizard.ui" line="104"/>
-        <source>World Mercator (OSM)</source>
+        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="14"/>
+        <source>Form</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../grid/IProjWizard.ui" line="124"/>
-        <source>Result:</source>
-        <translation>Ergebnis:</translation>
+        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="45"/>
+        <source><b>Hide Points (Douglas Peuker)</b></source>
+        <translation><b>Trackpunkte ausblenden (Douglas Peuker)</b></translation>
     </message>
     <message>
-        <location filename="../grid/IProjWizard.ui" line="138"/>
-        <source>UPS North (North Pole)</source>
-        <translation>UPS Nord (Nordpol)</translation>
+        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="57"/>
+        <source>Hide track points if the distance to a line between neighboring points is less than</source>
+        <translation>Trackpunkte werden ausgeblendet, wenn der Abstand zu einer Linie zwischen benachbarten Punkten kleiner ist als</translation>
     </message>
     <message>
-        <location filename="../grid/IProjWizard.ui" line="145"/>
-        <source>UPS South (South Pole)</source>
-        <translation>UPS Süd (Südpol)</translation>
+        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="70"/>
+        <source>m</source>
+        <translation> m</translation>
     </message>
     <message>
-        <location filename="../grid/IProjWizard.ui" line="152"/>
-        <source>Projection</source>
-        <translation>Projektion</translation>
+        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="93"/>
+        <source>Apply filter now.</source>
+        <translation>Den Filter jetzt anwenden.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="96"/>
+        <source>...</source>
+        <translation></translation>
     </message>
 </context>
 <context>
-    <name>IProjWpt</name>
+    <name>IFilterInvalid</name>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="14"/>
-        <source>Waypoint Projection</source>
-        <translation>Wegpunkt Projektion</translation>
+        <location filename="../gis/trk/filter/IFilterInvalid.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="22"/>
+        <location filename="../gis/trk/filter/IFilterInvalid.ui" line="41"/>
+        <source>Hide Invalid Points</source>
+        <translation>Ungültige Punkte ausblenden</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterInvalid.ui" line="56"/>
+        <source>Hide points with invalid coordinates at the beginning of the track.</source>
+        <translation>Blendet Punkte mit ungültigen Koordinaten am Anfang vom Track aus.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterInvalid.ui" line="63"/>
         <source>...</source>
         <translation></translation>
     </message>
+</context>
+<context>
+    <name>IFilterMedian</name>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="45"/>
-        <source>-</source>
+        <location filename="../gis/trk/filter/IFilterMedian.ui" line="14"/>
+        <source>Form</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="54"/>
-        <source>Clone waypoint and move by:</source>
-        <translation>Wegpunkt kopieren und verschieben um:</translation>
+        <location filename="../gis/trk/filter/IFilterMedian.ui" line="51"/>
+        <source><b>Smooth Profile (Median Method)</b></source>
+        <translation><b>Profil glätten (Median-Methode) </b></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="66"/>
-        <source>m</source>
-        <translation> m</translation>
+        <location filename="../gis/trk/filter/IFilterMedian.ui" line="63"/>
+        <source>Smooth deviation of the track points elevation with a Median filter of size </source>
+        <translation>Glättet die Abweichung der Höhe von Trackpunkten mit einem Median-Filter der Größe </translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IProjWpt.ui" line="76"/>
-        <source>°</source>
+        <location filename="../gis/trk/filter/IFilterMedian.ui" line="76"/>
+        <source>points</source>
+        <translation> Pkt.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterMedian.ui" line="105"/>
+        <source>...</source>
         <translation></translation>
     </message>
 </context>
 <context>
-    <name>IRouterMapQuest</name>
+    <name>IFilterNewDate</name>
     <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="14"/>
+        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="14"/>
         <source>Form</source>
         <translation></translation>
     </message>
     <message>
-        <source>Lim. Access</source>
-        <translation type="obsolete">Eingeschr. Zugang</translation>
+        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="35"/>
+        <source><b>Change Time</b></source>
+        <translation><b>Zeit ändern</b></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="22"/>
-        <source>Highways</source>
-        <translation>Autobahnen</translation>
+        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="44"/>
+        <source>Change start of track to </source>
+        <translation>Ändert den Trackbeginn auf </translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="74"/>
-        <source>Toll Road</source>
-        <translation>Mautstraßen</translation>
+        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="51"/>
+        <source>dd.MM.yy HH:mm:ss</source>
+        <translation>dd.MM.yy HH:mm:ss</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="29"/>
-        <source>Seasonal</source>
-        <translation>saisonale Straßen</translation>
+        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="61"/>
+        <source>-</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="84"/>
-        <source>Unpaved</source>
-        <translation>unbefestigte Straßen</translation>
+        <location filename="../gis/trk/filter/IFilterNewDate.ui" line="81"/>
+        <source>...</source>
+        <translation></translation>
     </message>
+</context>
+<context>
+    <name>IFilterObscureDate</name>
     <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="67"/>
-        <source>Ferry</source>
-        <translation>Fähren</translation>
+        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="36"/>
-        <source>Language</source>
-        <translation>Sprache</translation>
+        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="45"/>
+        <source><b>Obscure Timestamps</b></source>
+        <translation><b>Zeitstempel verschleiern</b></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="43"/>
-        <source>Country Border</source>
-        <translation>Landesgrenzen</translation>
+        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="54"/>
+        <source>Increase timestamp by</source>
+        <translation>Erhöht den Zeitstempel um </translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="53"/>
-        <source>Profile</source>
-        <translation>Profil</translation>
+        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="61"/>
+        <source> sec.</source>
+        <translation> s</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="60"/>
-        <source>Avoid:</source>
-        <translation>Vermeide:</translation>
+        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="68"/>
+        <source>with each track point. 0 sec. will remove timestamps.</source>
+        <translation>für jeden Trackpunkt. 0 s entfernt alle Zeitstempel.</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="106"/>
-        <source><p>Directions Courtesy of <a href="http://www.mapquest.com/" target="_blank">MapQuest</a> </p></source>
-        <translation><p>Mit freundlicher Genehmigung von <a href="http://www.mapquest.com/" target="_blank">MapQuest</a> </p></translation>
+        <location filename="../gis/trk/filter/IFilterObscureDate.ui" line="88"/>
+        <source>...</source>
+        <translation></translation>
     </message>
 </context>
 <context>
-    <name>IRouterRoutino</name>
+    <name>IFilterOffsetElevation</name>
     <message>
-        <location filename="../gis/rte/router/IRouterRoutino.ui" line="14"/>
+        <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="14"/>
         <source>Form</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterRoutino.ui" line="31"/>
-        <source>Profile</source>
-        <translation>Profil</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/IRouterRoutino.ui" line="38"/>
-        <source>Mode</source>
-        <translation>Modus</translation>
+        <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="51"/>
+        <source><b>Offset Elevation</b></source>
+        <translation><b>Höhenversatz</b></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterRoutino.ui" line="45"/>
-        <source>Database</source>
-        <translation>Datenbank</translation>
+        <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="69"/>
+        <source>Add offset of</source>
+        <translation>Fügt einen Versatz von </translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterRoutino.ui" line="52"/>
-        <source>Add paths with Routino database.</source>
-        <translation>Fügt Pfade mit Routino Datenbanken hinzu.</translation>
+        <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="95"/>
+        <source>to track points elevation.</source>
+        <translation>zur Höhe der Trackpunkte hinzu.</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterRoutino.ui" line="55"/>
+        <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="115"/>
         <source>...</source>
         <translation></translation>
     </message>
+</context>
+<context>
+    <name>IFilterReplaceElevation</name>
     <message>
-        <location filename="../gis/rte/router/IRouterRoutino.ui" line="66"/>
-        <source>Language</source>
-        <translation>Sprache</translation>
+        <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterRoutino.ui" line="131"/>
-        <source>To use offline routing you need to define paths to local routing data. Use the setup tool button to register a path.</source>
-        <translation>Um Offline-Routing zu nutzen, müssen Pfade zu lokalen Routendaten definiert sein. Benutzen Sie den Werkzeugbutton, um einen Pfad zu registrieren.</translation>
+        <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="51"/>
+        <source><b>Replace Elevation Data</b></source>
+        <translation><b>Höhendaten ersetzen</b></translation>
     </message>
-</context>
-<context>
-    <name>IRouterRoutinoPathSetup</name>
     <message>
-        <location filename="../gis/rte/router/IRouterRoutinoPathSetup.ui" line="14"/>
-        <source>Setup Routino database...</source>
-        <translation>Routino Datenbank einrichten...</translation>
+        <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="63"/>
+        <source>Replace elevation of track points with the values from loaded DEM files.</source>
+        <translation>Ersetzt die Höhendaten durch Daten aus den geladenen DEM Dateien.</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/IRouterRoutinoPathSetup.ui" line="27"/>
-        <location filename="../gis/rte/router/IRouterRoutinoPathSetup.ui" line="47"/>
+        <location filename="../gis/trk/filter/IFilterReplaceElevation.ui" line="70"/>
         <source>...</source>
         <translation></translation>
     </message>
-    <message>
-        <location filename="../gis/rte/router/IRouterRoutinoPathSetup.ui" line="99"/>
-        <source>-</source>
-        <translation></translation>
-    </message>
 </context>
 <context>
-    <name>IRouterSetup</name>
+    <name>IFilterReset</name>
     <message>
-        <location filename="../gis/rte/router/IRouterSetup.ui" line="14"/>
+        <location filename="../gis/trk/filter/IFilterReset.ui" line="14"/>
         <source>Form</source>
         <translation></translation>
     </message>
-</context>
-<context>
-    <name>IRoutinoDatabaseBuilder</name>
     <message>
-        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="14"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="../gis/trk/filter/IFilterReset.ui" line="35"/>
+        <source><b>Reset Hidden Track Points</b></source>
+        <translation><b>Ausgeblendete Trackpunkte wiederherstellen</b></translation>
     </message>
     <message>
-        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="22"/>
-        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="63"/>
+        <location filename="../gis/trk/filter/IFilterReset.ui" line="47"/>
+        <source>Make all trackpoints visible again.</source>
+        <translation>Alle Trackpunkte werden wieder sichtbar.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterReset.ui" line="54"/>
         <source>...</source>
         <translation></translation>
     </message>
+</context>
+<context>
+    <name>IFilterSpeed</name>
     <message>
-        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="39"/>
-        <source>Select source files:</source>
-        <translation>Quelldateien auswählen:</translation>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="54"/>
-        <source>Start</source>
-        <translation>Starten</translation>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="35"/>
+        <source><b>Change Speed</b></source>
+        <translation><b>Geschwindigkeit ändern</b></translation>
     </message>
     <message>
-        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="86"/>
-        <source>Target Path:</source>
-        <translation>Zielpfad:</translation>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="44"/>
+        <source>Set speed to </source>
+        <translation>Ändert Geschwindigkeit auf </translation>
     </message>
     <message>
-        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="93"/>
-        <source>-</source>
-        <translation></translation>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="51"/>
+        <source> km/h</source>
+        <translation> km/h</translation>
     </message>
     <message>
-        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="100"/>
-        <source>File Prefix</source>
-        <translation>Dateipräfix</translation>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="102"/>
+        <source>...</source>
+        <translation></translation>
     </message>
 </context>
 <context>
-    <name>IScrOptEditLine</name>
+    <name>IFilterSplitSegment</name>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="32"/>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="14"/>
         <source>Form</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="53"/>
-        <source>Save to orignal</source>
-        <translation>Ins Original speichern</translation>
-    </message>
-    <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="60"/>
-        <source>Save as new</source>
-        <translation>Als neu speichern</translation>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="51"/>
+        <source><html><head/><body><p><span style=" font-weight:600;">Split Segments into Tracks</span></p></body></html></source>
+        <translation><html><head/><body><p><span style=" font-weight:600;">Teilt Segmente in Tracks</span></p></body></html></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="67"/>
-        <source>Abort</source>
-        <translation>Abbrechen</translation>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="63"/>
+        <source>Creates a new track for every segment within this track.</source>
+        <translation>Für jedes Segment in diesem Track wird eine neuer Track erstellt.</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="102"/>
-        <source>Move points. (Ctrl+M)</source>
-        <translation>Punkte verschieben. (Ctrl+M)</translation>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="70"/>
+        <source>...</source>
+        <translation></translation>
     </message>
+</context>
+<context>
+    <name>IFitDecoderState</name>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="112"/>
-        <source>Ctrl+M</source>
-        <translation></translation>
+        <location filename="../gis/fit/decoder/IFitDecoderState.cpp" line="32"/>
+        <source>FIT decoding error: Decoder not in correct state %1 after last data byte in file.</source>
+        <translation>FIT Dekodierfehler: Nicht zutreffender Dekoderstatus %1 nach dem letzten Datenbyte der Datei.</translation>
     </message>
+</context>
+<context>
+    <name>IGisItem</name>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="128"/>
-        <source>Add new points. (Ctrl++)</source>
-        <translation>Punkte hinzufügen. (Ctrl++)</translation>
+        <location filename="../gis/IGisItem.cpp" line="42"/>
+        <source>[no name]</source>
+        <translation>[kein Name]</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="138"/>
-        <source>Ctrl++</source>
-        <translation></translation>
+        <location filename="../gis/IGisItem.cpp" line="301"/>
+        <source>The item is not part of the project in the database.</source>
+        <translation>Das Element ist nicht Teil des Projektes in der Datenbank.</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="151"/>
-        <source>Select a range of points. (Ctrl+R)</source>
-        <translation>Einen Punktebereich wälen (Ctrl+R)</translation>
+        <location filename="../gis/IGisItem.cpp" line="307"/>
+        <source>The item is not in the database.</source>
+        <translation>Das Element ist nicht in der Datenbank.</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="161"/>
-        <source>Ctrl+R</source>
-        <translation></translation>
+        <location filename="../gis/IGisItem.cpp" line="313"/>
+        <source>The item might need to be saved</source>
+        <translation>Es könnte notwendig sein, das Element zu speichern.</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="174"/>
-        <source>Delete a point. (Ctrl+D)</source>
-        <translation>Einen Punkt löschen (Ctrl+D)</translation>
+        <location filename="../gis/IGisItem.cpp" line="397"/>
+        <source>Initial version.</source>
+        <translation>Erstversion.</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="184"/>
-        <source>Ctrl+D</source>
-        <translation></translation>
+        <location filename="../gis/IGisItem.cpp" line="505"/>
+        <source><h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press 'Ok'.</source>
+        <translation><h3>%1</h3> Diese Element ist vermutlich schreibgeschützt, da nicht mit QMapShack erstellt. Normalerweise sollten importierte Daten nicht geändert werden. Wenn doch, drücken Sie 'OK'.</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="228"/>
-        <source>No auto-routing or line snapping (Ctrl+O)</source>
-        <translation>Kein Auto-Routing oder Fangen an Linie (Ctrl+O)</translation>
+        <location filename="../gis/IGisItem.cpp" line="506"/>
+        <source>Read Only Mode...</source>
+        <translation>Schreibgeschützt...</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="238"/>
-        <source>Ctrl+O</source>
-        <translation></translation>
+        <location filename="../gis/IGisItem.cpp" line="670"/>
+        <location filename="../gis/IGisItem.cpp" line="729"/>
+        <source><h4>Description:</h4></source>
+        <translation><h4>Beschreibung:</h4></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="251"/>
-        <source>Use auto-routing to between points. (Ctrl+A)</source>
-        <translation>Auto-Routing zwischen Punkten benutzen. (Ctrl+A)</translation>
+        <location filename="../gis/IGisItem.cpp" line="673"/>
+        <location filename="../gis/IGisItem.cpp" line="732"/>
+        <source><p>--- no description ---</p></source>
+        <translation><p>--- keine Beschreibung ---</p></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="261"/>
-        <source>Ctrl+A</source>
-        <translation></translation>
+        <location filename="../gis/IGisItem.cpp" line="684"/>
+        <source><h4>Comment:</h4></source>
+        <translation><h4>Kommentar:</h4></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="274"/>
-        <source>Snap line along lines of a vector map. (Ctrl+V)</source>
-        <translation>Fängt die Linie entlang Linien einer Vektorkarte. (Ctrl+V)</translation>
+        <location filename="../gis/IGisItem.cpp" line="687"/>
+        <source><p>--- no comment ---</p></source>
+        <translation><p>--- kein Kommentar ---</p></translation>
     </message>
     <message>
-        <source>Move points.</source>
-        <translation type="obsolete">Punkte verschieben.</translation>
+        <location filename="../gis/IGisItem.cpp" line="698"/>
+        <location filename="../gis/IGisItem.cpp" line="743"/>
+        <source><h4>Links:</h4></source>
+        <translation><h4>Verknüpfungen:</h4></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="105"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="131"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="154"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="177"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="313"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="330"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../gis/IGisItem.cpp" line="701"/>
+        <location filename="../gis/IGisItem.cpp" line="746"/>
+        <source><p>--- no links ---</p></source>
+        <translation><p>--- keine Verknüpfungen---</p></translation>
     </message>
+</context>
+<context>
+    <name>IGisProject</name>
     <message>
-        <source>Add new points.</source>
-        <translation type="obsolete">Punkte hinzufügen.</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="109"/>
+        <source>Save project?</source>
+        <translation>Projekt speichern?</translation>
     </message>
     <message>
-        <source>Select a range of points.</source>
-        <translation type="obsolete">Einen Punktebereich wählen.</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="109"/>
+        <source><h3>%1</h3>The project was changed. Save before closing it?</source>
+        <translation><h3>%1</h3>Das Projekt wurde geändert. Speichern, bevor es geschlossen wird?</translation>
     </message>
     <message>
-        <source>Delete a point.</source>
-        <translation type="obsolete">Einen Punkt löschen.</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="261"/>
+        <source>%1: Correlate tracks and waypoints.</source>
+        <translation>%1: Tracks und Wegpunkte verknüpfen.</translation>
     </message>
     <message>
-        <source>No auto-routing or line snapping</source>
-        <translation type="obsolete">Kein Auto-Routing oder Fangen an Linie</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="271"/>
+        <source><h3>%1</h3>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project in the future?</source>
+        <translation><h3>%1</h3>Hat das zu lange gedauert? Wollen Sie die Verknüpfung von Tracks und Wegpunkten auch in Zukunft für dieses Projekt überspringen?</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="231"/>
-        <source>0</source>
-        <translation></translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="272"/>
+        <source>Canceled correlation...</source>
+        <translation>Verknüpfung abgebrochen...</translation>
     </message>
     <message>
-        <source>Use auto-routing to between points.</source>
-        <translation type="obsolete">Auto-Routing zwischen Punkten benutzen.</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="312"/>
+        <source>Save "%1" to...</source>
+        <translation>Speichere "%1" nach...</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="254"/>
-        <source>A</source>
-        <translation></translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="423"/>
+        <source><br/>
+Filename: %1</source>
+        <translation><br/>
+Dateiname: %1</translation>
     </message>
     <message>
-        <source>Snap line along lines of a vector map.</source>
-        <translation type="obsolete">Fängt die Linie längs Linien einer Vektorkarte.</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="428"/>
+        <source>Waypoints: %1</source>
+        <translation>Wegpunkte: %1</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="277"/>
-        <source>V</source>
-        <translation></translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="432"/>
+        <source>Tracks: %1</source>
+        <translation>Tracks: %1</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="284"/>
-        <source>Ctrl+V</source>
-        <translation></translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="436"/>
+        <source>Routes: %1</source>
+        <translation>Routen: %1</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="310"/>
-        <source>Undo last change</source>
-        <translation>Letzte Änderung rückgängig machen</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="440"/>
+        <source>Areas: %1</source>
+        <translation>Gebiete: %1</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="327"/>
-        <source>Redo last change</source>
-        <translation>Letzte Änderung wiederherstellen</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="520"/>
+        <source>Are you sure you want to delete '%1' from project '%2'?</source>
+        <translation>Sind Sie sicher, dass Sie '%1' aus dem Projekt '%2' löschen wollen? </translation>
     </message>
     <message>
-        <source>Redo next change</source>
-        <translation type="obsolete">Letzte Änderung wiederherstellen</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="521"/>
+        <source>Delete...</source>
+        <translation>Löschen...</translation>
     </message>
 </context>
 <context>
-    <name>IScrOptOvlArea</name>
+    <name>IGisWidget</name>
     <message>
-        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="14"/>
+        <location filename="../gis/IGisWidget.ui" line="14"/>
         <source>Form</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="40"/>
-        <source>View details and edit.</source>
-        <translation>Details anzeigen und bearbeiten.</translation>
+        <location filename="../gis/IGisWidget.ui" line="69"/>
+        <location filename="../gis/IGisWidget.ui" line="99"/>
+        <source>Name</source>
+        <translation>Name</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="43"/>
-        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="57"/>
-        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="71"/>
-        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="92"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../gis/IGisWidget.ui" line="104"/>
+        <source>Age</source>
+        <translation>Alter</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="54"/>
-        <source>Copy area into another project.</source>
-        <translation>Gebiet in ein anderes Projekt kopieren.</translation>
+        <location filename="../gis/IGisWidget.ui" line="138"/>
+        <source>To add a database do a right click on the database list above.</source>
+        <translation>Um eine Datenbank hinzuzufügen rechtsklicken Sie oben auf die Datenbankliste.</translation>
+    </message>
+</context>
+<context>
+    <name>IGridSetup</name>
+    <message>
+        <location filename="../grid/IGridSetup.ui" line="14"/>
+        <source>Setup Grid...</source>
+        <translation>Gitter einstellen...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="68"/>
-        <source>Delete area from project.</source>
-        <translation>Gebiet aus einem Projekt entfernen.</translation>
+        <location filename="../grid/IGridSetup.ui" line="22"/>
+        <source>Projection</source>
+        <translation>Projektion</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="89"/>
-        <source>Edit shape of the area.</source>
-        <translation>Form eines Gebietes ändern.</translation>
+        <location filename="../grid/IGridSetup.ui" line="37"/>
+        <source>restore default</source>
+        <translation>Grundeinstellung wiederherstellen</translation>
+    </message>
+    <message>
+        <location filename="../grid/IGridSetup.ui" line="40"/>
+        <location filename="../grid/IGridSetup.ui" line="66"/>
+        <location filename="../grid/IGridSetup.ui" line="92"/>
+        <location filename="../grid/IGridSetup.ui" line="146"/>
+        <source>...</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../grid/IGridSetup.ui" line="63"/>
+        <source>Get projection from current map.</source>
+        <translation>Projektion aus der aktuellen Karte nehmen.</translation>
+    </message>
+    <message>
+        <location filename="../grid/IGridSetup.ui" line="89"/>
+        <source>projection wizzard</source>
+        <translation>Projektionshilfe</translation>
     </message>
     <message>
-        <source>Toggle read only mode. You have to open the lock to edit the item.</source>
-        <translation type="obsolete">Den Schreibschutz ändern. Das Schloss muss offen sein um das Element zu bearbeiten.</translation>
+        <location filename="../grid/IGridSetup.ui" line="130"/>
+        <source>Grid color</source>
+        <translation>Gitterfarbe</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="121"/>
-        <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <location filename="../grid/IGridSetup.ui" line="143"/>
+        <source>setup grid color</source>
+        <translation>Gitterfarbe einstellen</translation>
     </message>
 </context>
 <context>
-    <name>IScrOptPoint</name>
+    <name>IImportDatabase</name>
+    <message>
+        <location filename="../tool/IImportDatabase.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
+    </message>
     <message>
-        <source>Delete point.</source>
-        <translation type="obsolete">Punkt löschen.</translation>
+        <location filename="../tool/IImportDatabase.ui" line="45"/>
+        <source>Source Database:</source>
+        <translation>Quelldatenbank:</translation>
     </message>
     <message>
-        <source>Select a range of points.</source>
-        <translation type="obsolete">Einen Punktebereich auswählen.</translation>
+        <location filename="../tool/IImportDatabase.ui" line="52"/>
+        <location filename="../tool/IImportDatabase.ui" line="93"/>
+        <source>-</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Move selected point.</source>
-        <translation type="obsolete">Ausgewählten Punkt verschieben.</translation>
+        <location filename="../tool/IImportDatabase.ui" line="102"/>
+        <source>Start</source>
+        <translation>Starten</translation>
     </message>
     <message>
-        <source>Add points before the selected point.</source>
-        <translation type="obsolete">Punkte vor dem ausgewählten Punkt einfügen.</translation>
+        <location filename="../tool/IImportDatabase.ui" line="22"/>
+        <location filename="../tool/IImportDatabase.ui" line="63"/>
+        <source>...</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Add points after the selected point.</source>
-        <translation type="obsolete">Punkte nach dem ausgewählten Punkt einfügen.</translation>
+        <location filename="../tool/IImportDatabase.ui" line="86"/>
+        <source>Target Database:</source>
+        <translation>Zieldatenbank:</translation>
     </message>
 </context>
 <context>
-    <name>IScrOptRange</name>
+    <name>IInputDialog</name>
+    <message>
+        <location filename="../helpers/IInputDialog.ui" line="14"/>
+        <source>Edit...</source>
+        <translation>Bearbeiten...</translation>
+    </message>
     <message>
-        <source>Delete selected range of points.</source>
-        <translation type="obsolete">Löscht gewählten Punktebereich.</translation>
+        <location filename="../helpers/IInputDialog.ui" line="20"/>
+        <source>TextLabel</source>
+        <translation>Bezeichnung</translation>
     </message>
 </context>
 <context>
-    <name>IScrOptRangeLine</name>
+    <name>ILinksDialog</name>
     <message>
-        <location filename="../mouse/line/IScrOptRangeLine.ui" line="14"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="../helpers/ILinksDialog.ui" line="14"/>
+        <source>Links...</source>
+        <translation>Verknüpfungen...</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptRangeLine.ui" line="20"/>
-        <source>Delete all points between the first and last one.</source>
-        <translation>Alle Punkte zwischen dem ersten und dem letzten Punkt löschen.</translation>
+        <location filename="../helpers/ILinksDialog.ui" line="23"/>
+        <source>Type</source>
+        <translation>Typ</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptRangeLine.ui" line="23"/>
-        <location filename="../mouse/line/IScrOptRangeLine.ui" line="37"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../helpers/ILinksDialog.ui" line="28"/>
+        <source>Text</source>
+        <translation>Text</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptRangeLine.ui" line="34"/>
-        <source><html><head/><body><p>Calculate a route between the first and last selected point.</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <location filename="../helpers/ILinksDialog.ui" line="33"/>
+        <source>Uri</source>
+        <translation>URI</translation>
     </message>
     <message>
-        <source>Caclculate a route between the first and last selected point.</source>
-        <translation type="vanished">Eine Route zwischen dem ersten und dem letzten Punkt berechnen.</translation>
+        <location filename="../helpers/ILinksDialog.ui" line="43"/>
+        <location filename="../helpers/ILinksDialog.ui" line="63"/>
+        <source>...</source>
+        <translation></translation>
     </message>
 </context>
 <context>
-    <name>IScrOptRangeTrk</name>
+    <name>IMainWindow</name>
     <message>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../IMainWindow.ui" line="17"/>
+        <source>QMapShack</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="40"/>
-        <source>Hide all points.</source>
-        <translation>Blendet alle Punkte aus.</translation>
+        <location filename="../IMainWindow.ui" line="63"/>
+        <source>File</source>
+        <translation>Datei</translation>
     </message>
     <message>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="54"/>
-        <source>Show all points.</source>
-        <translation>Blendet alle Punkte ein.</translation>
+        <location filename="../IMainWindow.ui" line="80"/>
+        <source>View</source>
+        <translation>Ansicht</translation>
     </message>
     <message>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="68"/>
-        <source>Select an activity for the selected range.</source>
-        <translation>Wählen Sie eine Aktivität für den ausgewählten Bereich.</translation>
+        <location filename="../IMainWindow.ui" line="102"/>
+        <source>Window</source>
+        <translation>Fenster</translation>
     </message>
     <message>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="82"/>
-        <source>Copy track points as new track.</source>
-        <translation>Kopiert Trackpunkte in neuen Track.</translation>
+        <location filename="../IMainWindow.ui" line="107"/>
+        <source>?</source>
+        <translation>?</translation>
     </message>
     <message>
-        <source>Hide points.</source>
-        <translation type="obsolete">Pukte ausblenden.</translation>
+        <location filename="../IMainWindow.ui" line="114"/>
+        <source>Project</source>
+        <translation>Projekt</translation>
     </message>
     <message>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="43"/>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="57"/>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="71"/>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="85"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../IMainWindow.ui" line="124"/>
+        <source>Tool</source>
+        <translation>Werkzeug</translation>
     </message>
     <message>
-        <source>Show points.</source>
-        <translation type="obsolete">Punkte anzeigen.</translation>
+        <location filename="../IMainWindow.ui" line="149"/>
+        <source>Maps</source>
+        <translation>Karten</translation>
     </message>
     <message>
-        <source>Copy track points to clipboard</source>
-        <translation type="obsolete">Trackpunkte in die Zwischenablage kopieren</translation>
+        <location filename="../IMainWindow.ui" line="192"/>
+        <source>Dig. Elev. Model (DEM)</source>
+        <translation>Dig. Höhenmodell (DEM)</translation>
     </message>
     <message>
-        <location filename="../mouse/IScrOptRangeTrk.ui" line="117"/>
-        <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <location filename="../IMainWindow.ui" line="231"/>
+        <source>Data</source>
+        <translation>Daten</translation>
     </message>
-</context>
-<context>
-    <name>IScrOptRte</name>
     <message>
-        <location filename="../gis/rte/IScrOptRte.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../IMainWindow.ui" line="249"/>
+        <source>Route</source>
         <translation></translation>
     </message>
     <message>
-        <source><html><head/><body><p>View details &amp; Edit</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Details anzeigen & Bearbeiten</p></body></html></translation>
+        <location filename="../IMainWindow.ui" line="283"/>
+        <location filename="../IMainWindow.ui" line="286"/>
+        <source>Add Map View</source>
+        <translation>Kartenansicht hinzufügen</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IScrOptRte.ui" line="40"/>
-        <source>View details and edit.</source>
-        <translation>Details anzeigen und bearbeiten.</translation>
+        <location filename="../IMainWindow.ui" line="289"/>
+        <source>Ctrl+T</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/rte/IScrOptRte.ui" line="43"/>
-        <location filename="../gis/rte/IScrOptRte.ui" line="57"/>
-        <location filename="../gis/rte/IScrOptRte.ui" line="71"/>
-        <location filename="../gis/rte/IScrOptRte.ui" line="89"/>
-        <location filename="../gis/rte/IScrOptRte.ui" line="106"/>
-        <location filename="../gis/rte/IScrOptRte.ui" line="120"/>
-        <location filename="../gis/rte/IScrOptRte.ui" line="134"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../IMainWindow.ui" line="301"/>
+        <source>Show Scale</source>
+        <translation>Maßstab</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IScrOptRte.ui" line="54"/>
-        <source>Copy route into another project.</source>
-        <translation>Kopiert die Route in ein anderes Projekt.</translation>
+        <location filename="../IMainWindow.ui" line="310"/>
+        <source>Setup Map Font</source>
+        <translation>Kartenfont einstellen</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IScrOptRte.ui" line="68"/>
-        <source>Delete route from project.</source>
-        <translation>Route aus einem Projekt entfernen.</translation>
+        <location filename="../IMainWindow.ui" line="322"/>
+        <source>Show Grid</source>
+        <translation>Gitter</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IScrOptRte.ui" line="117"/>
-        <source>Reset route calculation.</source>
-        <translation>Routenberechnung zurücksetzen.</translation>
+        <location filename="../IMainWindow.ui" line="325"/>
+        <source>Ctrl+G</source>
+        <translation></translation>
     </message>
     <message>
-        <source><html><head/><body><p>Delete</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Löschen</p></body></html></translation>
+        <location filename="../IMainWindow.ui" line="334"/>
+        <source>Setup Grid</source>
+        <translation>Gitter einstellen</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IScrOptRte.ui" line="103"/>
-        <source>Calculate route.</source>
-        <translation>Route berechnen.</translation>
+        <location filename="../IMainWindow.ui" line="337"/>
+        <source>Ctrl+Alt+G</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="349"/>
+        <source>Flip Mouse Wheel</source>
+        <translation>Mausrad umdrehen</translation>
     </message>
     <message>
-        <source>Reset route caclulation.</source>
-        <translatorcomment>??? calculation statt caclulation - ja :)</translatorcomment>
-        <translation type="obsolete">Routenberechnung zurücksetzen.</translation>
+        <location filename="../IMainWindow.ui" line="358"/>
+        <location filename="../IMainWindow.ui" line="361"/>
+        <source>Setup Map Paths</source>
+        <translation>Kartenverzeichnisse angeben</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IScrOptRte.ui" line="131"/>
-        <source>Move route points.</source>
-        <translation>Routenpunkte verschieben.</translation>
+        <location filename="../IMainWindow.ui" line="373"/>
+        <source>POI Text</source>
+        <translation>POI Text</translation>
     </message>
     <message>
-        <source>Toggle read only mode. You have to open the lock to edit the item.</source>
-        <translation type="obsolete">Den Schreibschutz ändern. Das Schloss muss offen sein um das Element zu bearbeiten.</translation>
+        <location filename="../IMainWindow.ui" line="385"/>
+        <source>Night / Day</source>
+        <translation>Nacht / Tag</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IScrOptRte.ui" line="160"/>
-        <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <location filename="../IMainWindow.ui" line="397"/>
+        <source>Map Tool Tip</source>
+        <translation>Kartentooltip</translation>
     </message>
-</context>
-<context>
-    <name>IScrOptTrk</name>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../IMainWindow.ui" line="400"/>
+        <source>Ctrl+I</source>
         <translation></translation>
     </message>
     <message>
-        <source>View details &amp; Edit properties of track.</source>
-        <translation type="obsolete">Detailansicht & Trackeigenschaften bearbeiten.</translation>
+        <location filename="../IMainWindow.ui" line="409"/>
+        <source>Setup DEM Paths</source>
+        <translation>DEM Verzeichnisse angeben</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="54"/>
-        <source>Copy track into another project.</source>
-        <translation>Track in ein anderes Projekt kopieren.</translation>
+        <location filename="../IMainWindow.ui" line="418"/>
+        <source>About</source>
+        <translation>Über</translation>
     </message>
     <message>
-        <source>Delete</source>
-        <translation type="obsolete">Löschen</translation>
+        <location filename="../IMainWindow.ui" line="427"/>
+        <source>Help</source>
+        <translation>Hilfe</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="89"/>
-        <source>Show on-screen profile and detailed information about points.</source>
-        <translation>Zeigt das Profil und detaillierte Informationen der Punkte.</translation>
+        <location filename="../IMainWindow.ui" line="430"/>
+        <source>F1</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Cut track at selected point into two tracks.</source>
-        <translation type="vanished">Teilt den Track am selektierten Punkt in zwei Teile.</translation>
+        <location filename="../IMainWindow.ui" line="439"/>
+        <location filename="../IMainWindow.ui" line="442"/>
+        <source>Setup Map View</source>
+        <translation>Kartenansicht einstellen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="120"/>
-        <source>Edit position of track points.</source>
-        <translation>Position von Trackpunkten bearbeiten.</translation>
+        <location filename="../IMainWindow.ui" line="556"/>
+        <source>VRT Builder</source>
+        <translation>VRT Builder</translation>
     </message>
     <message>
-        <source>Toggle read only mode. You have to open the lock to edit the item.</source>
-        <translation type="obsolete">Den Schreibschutz ändern. Das Schloss muss offen sein um das Element zu bearbeiten.</translation>
+        <location filename="../IMainWindow.ui" line="559"/>
+        <source>GUI front end to gdalbuildvrt</source>
+        <translation>Eine graphische Benutzerschnittstelle zu gdalbuildvrt </translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="40"/>
-        <source>View details and edit properties of track.</source>
-        <translation>Details anzeigen und Trackeigenschaften bearbeiten.</translation>
+        <location filename="../IMainWindow.ui" line="568"/>
+        <source>Store Map View</source>
+        <translation>Kartenansicht speichern</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="68"/>
-        <source>Delete track from project.</source>
-        <translation>Track aus einem Projekt entfernen.</translation>
+        <location filename="../IMainWindow.ui" line="571"/>
+        <source>Write current active map and DEM list including the properties to a file</source>
+        <translation>Speichert die aktive Karten und DEM Dateien inklusive der Eigenschaften in einer Datei</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="106"/>
-        <source>Select a range of points.</source>
-        <translation>Wähle einen Punktebereich.</translation>
+        <location filename="../IMainWindow.ui" line="580"/>
+        <source>Load Map View</source>
+        <translation>Kartenansicht laden</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="134"/>
-        <source>Reverse track.</source>
-        <translation>Track umkehren.</translation>
+        <location filename="../IMainWindow.ui" line="583"/>
+        <source>Restore view with active map and DEM list including the properties from a file</source>
+        <translation>Stellt die aktive Karten und DEM Dateien inklusive der Eigenschaften aus einer Datei wieder her</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="148"/>
-        <source>Combine tracks.</source>
-        <translation>Tracks verbinden.</translation>
+        <location filename="../IMainWindow.ui" line="595"/>
+        <source>Ext. Profile</source>
+        <translation>Erw. Profil</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="162"/>
-        <source>Cut track at selected point. You can use this to:
-
-* remove bad points at the start or end of the track
-* use the track parts to plan a new tour
-* cut a long track into stages
-</source>
-        <translation>Zerteilt den Track am ausgewählten Punkt. Damit kann man:
-
-* schlechte Punkte am Anfang oder Ende eines Tracks entfernen
-* die Teile zum Planen neuer Touren verwenden
-* einen langen Track in Etappen zerteilen</translation>
+        <location filename="../IMainWindow.ui" line="598"/>
+        <source>Ctrl+E</source>
+        <translation></translation>
     </message>
     <message>
-        <source><html><head/><body><p>View details &amp; Edit</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Details anzeigen &amp; Bearbeiten</p></body></html></translation>
+        <location filename="../IMainWindow.ui" line="607"/>
+        <source>Close</source>
+        <translation>Schließen</translation>
     </message>
     <message>
-        <source><html><head/><body><p>View details &amp; Edit properties of track.</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Detailansicht &amp; Trackeigenschaften bearbeiten..</p></body></html></translation>
+        <location filename="../IMainWindow.ui" line="610"/>
+        <source>Ctrl+Q</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="43"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="57"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="71"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="92"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="109"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="123"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="137"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="151"/>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="170"/>
-        <source>...</source>
+        <location filename="../IMainWindow.ui" line="619"/>
+        <source>Clone Map View</source>
+        <translation>Kartenansicht klonen</translation>
+    </message>
+    <message>
+        <location filename="../IMainWindow.ui" line="622"/>
+        <source>Ctrl+Shift+T</source>
         <translation></translation>
     </message>
     <message>
-        <source><html><head/><body><p>Delete</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Löschen</p></body></html></translation>
+        <location filename="../IMainWindow.ui" line="631"/>
+        <source>Create Routino Database</source>
+        <translation>Routino Datenbank erstellen</translation>
     </message>
     <message>
-        <source><html><head/><body><p>Show on-screen profile and detailed information about points.</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Zeigt das Profil und detaillierte Informationen der Punkte.</p></body></html></translation>
+        <location filename="../IMainWindow.ui" line="640"/>
+        <source>Save(Print) Map Screenshot</source>
+        <translation>Kartenausschnitt speichern (drucken)</translation>
     </message>
     <message>
-        <source><html><head/><body><p>Cut track at selected point into two tracks.</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Teilt den Track am selektierten Punkt in zwei Teile.</p></body></html></translation>
+        <location filename="../IMainWindow.ui" line="643"/>
+        <source>Print a selected area of the map</source>
+        <translation>Einen ausgewählten Bereich der Karte drucken</translation>
     </message>
     <message>
-        <source><html><head/><body><p>Edit position of track points.</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Bearbeiten der Position von Trackpunkten.</p></body></html></translation>
+        <location filename="../IMainWindow.ui" line="646"/>
+        <source>Ctrl+P</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IScrOptTrk.ui" line="196"/>
-        <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <location filename="../IMainWindow.ui" line="655"/>
+        <source>Setup Coord. Format</source>
+        <translation>Koordinatenformat einstellen</translation>
     </message>
-</context>
-<context>
-    <name>IScrOptWpt</name>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="20"/>
-        <source>Form</source>
-        <translation></translation>
+        <location filename="../IMainWindow.ui" line="658"/>
+        <source>Change the format coordinates are displayed</source>
+        <translation>Ändert das Format der angezeigten Koordianten</translation>
     </message>
     <message>
-        <source><html><head/><body><p>View details &amp; Edit</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Details anzeigen &amp; Bearbeiten</p></body></html></translation>
+        <location filename="../IMainWindow.ui" line="451"/>
+        <source>Load GIS Data</source>
+        <translation>GIS Daten laden</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="49"/>
-        <source>View details and edit.</source>
-        <translation>Details anzeigen und editieren.</translation>
+        <location filename="../IMainWindow.ui" line="454"/>
+        <source>Load projects from file</source>
+        <translation>Lade Datei als Projekt</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="52"/>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="66"/>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="80"/>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="101"/>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="118"/>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="132"/>
-        <source>...</source>
+        <location filename="../IMainWindow.ui" line="457"/>
+        <source>Ctrl+L</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="63"/>
-        <source>Copy waypoint into another project.</source>
-        <translation>Wegpunkt in ein anderes Projekt kopieren.</translation>
+        <location filename="../IMainWindow.ui" line="466"/>
+        <source>Save All GIS Data</source>
+        <translation>Alle GIS Daten speichern</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="77"/>
-        <source>Delete waypoint from project.</source>
-        <translation>Wegpunkt aus einem Projekt entfernen.</translation>
+        <location filename="../IMainWindow.ui" line="469"/>
+        <source>Save all projects in the workspace</source>
+        <translation>Alle Projekte die sich auf dem Arbeitsplatz befinden, speichern</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="98"/>
-        <source>Show content as static bubble.</source>
-        <translation>Inhalt als statische Legende zeigen.</translation>
+        <location filename="../IMainWindow.ui" line="472"/>
+        <source>Ctrl+S</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="115"/>
-        <source>Move waypoint to a new location.</source>
-        <translation>Wegpunkt an einen neuen Ort verschieben.</translation>
+        <location filename="../IMainWindow.ui" line="481"/>
+        <source>Setup Time Zone</source>
+        <translation>Zeitzone einstellen</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="129"/>
-        <source>Clone waypoint and move clone a given distance and angle.</source>
-        <translation>Wegpunkt klonen und um eine bestimmte Entfernung und einen bestimmten Winkel verschieben.</translation>
+        <location filename="../IMainWindow.ui" line="490"/>
+        <source>Add empty project</source>
+        <translation>Leeres Projekt hinzufügen</translation>
     </message>
     <message>
-        <source><html><head/><body><p>Delete</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Löschen</p></body></html></translation>
+        <location filename="../IMainWindow.ui" line="502"/>
+        <source>Search Google</source>
+        <translation>Mit Google suchen</translation>
     </message>
     <message>
-        <source>Toggle read only mode. You have to open the lock to edit the item.</source>
-        <translation type="obsolete">Den Schreibschutz ändern. Das Schloss muss offen sein um das Element zu bearbeiten.</translation>
+        <location filename="../IMainWindow.ui" line="511"/>
+        <source>Close all projects</source>
+        <translation>Alle Projekte schließen</translation>
     </message>
     <message>
-        <source><html><head/><body><p>Move waypoint to a new location.</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Wegpunkt verschieben.</p></body></html></translation>
+        <location filename="../IMainWindow.ui" line="514"/>
+        <source>F8</source>
+        <translation></translation>
     </message>
     <message>
-        <source><html><head/><body><p>Clone waypoint and move clone a given distance and angle.</p></body></html></source>
-        <translation type="obsolete"><html><head/><body><p>Wegpunkt kopieren und unter Angabe von Entfernung und Winkel verschieben.</p></body></html></translation>
+        <location filename="../IMainWindow.ui" line="523"/>
+        <source>Setup Units</source>
+        <translation>Einheiten einstellen</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IScrOptWpt.ui" line="176"/>
-        <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <location filename="../IMainWindow.ui" line="532"/>
+        <source>Setup Workspace</source>
+        <translation>Arbeitsplatz konfigurieren</translation>
     </message>
-</context>
-<context>
-    <name>ISelDevices</name>
     <message>
-        <location filename="../gis/ISelDevices.ui" line="14"/>
-        <source>Select devices...</source>
-        <translation>Geräte auswählen...</translation>
+        <location filename="../IMainWindow.ui" line="535"/>
+        <source>Setup save on exit.</source>
+        <translation>Speichert Einstellungen beim Beenden.</translation>
     </message>
-</context>
-<context>
-    <name>ISelectActivity</name>
     <message>
-        <location filename="../gis/trk/ISelectActivity.ui" line="14"/>
-        <source>Activities...</source>
-        <translation>Aktivitäten...</translation>
+        <location filename="../IMainWindow.ui" line="544"/>
+        <source>Import Database from QLandkarte</source>
+        <translation>Datenbankimport aus QLandkarte</translation>
     </message>
     <message>
-        <location filename="../gis/trk/ISelectActivity.ui" line="20"/>
-        <source>Select one:</source>
-        <translation>Wählen Sie eine aus:</translation>
+        <location filename="../IMainWindow.ui" line="547"/>
+        <source>Import QLandkarte GT database</source>
+        <translation>QLandkarte GT Datenbank importieren</translation>
     </message>
 </context>
 <context>
-    <name>ISelectCopyAction</name>
+    <name>IMapList</name>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="14"/>
-        <source>Copy item...</source>
-        <translation>Element kopieren...</translation>
+        <location filename="../map/IMapList.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="23"/>
-        <source>Replace existing item</source>
-        <translation>Ersetzt vorhandenes Element</translation>
+        <location filename="../map/IMapList.ui" line="103"/>
+        <source>To add maps use File->Setup Map Paths. </source>
+        <translation>Um Karten zuzufügen: Menü - Datei - Kartenverzeichnisse angeben.</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="30"/>
-        <location filename="../helpers/ISelectCopyAction.ui" line="40"/>
-        <location filename="../helpers/ISelectCopyAction.ui" line="67"/>
-        <location filename="../helpers/ISelectCopyAction.ui" line="77"/>
-        <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <location filename="../map/IMapList.ui" line="116"/>
+        <source>Use the context menu (right mouse button click on entry) to activate a map. Use drag-n-drop to move the activated map in the draw order. </source>
+        <translation>Nutze das Kontextmenü (Klick mit rechter Maustaste auf Eintrag), um eine Karte zu aktivieren. Nutze Ziehen u. Ablegen, um die aktivierte Karte in der Reihenfolge der Ansicht zu verschieben.</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="60"/>
-        <source>Do not copy item</source>
-        <translation>Element nicht kopieren</translation>
+        <location filename="../map/IMapList.ui" line="129"/>
+        <source>Help! I want maps!
+I don't want to read the documentation!</source>
+        <translation>Hilfe! Ich will Karten!
+Keine Lust die Anleitung zu lesen!</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="97"/>
-        <source>Create a clone</source>
-        <translation>Abbild erstellen</translation>
+        <location filename="../map/IMapList.ui" line="149"/>
+        <source>Activate</source>
+        <translation>Aktivieren</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="104"/>
-        <source>Replace with:</source>
-        <translation>Ersetzen mit:</translation>
+        <location filename="../map/IMapList.ui" line="158"/>
+        <source>Move Up</source>
+        <translation>Nach oben verschieben</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="111"/>
-        <source>Keep item:</source>
-        <translation>Element behalten:</translation>
+        <location filename="../map/IMapList.ui" line="161"/>
+        <source>Hide map behind previous map</source>
+        <translation>Versteckt die Karte hinter der vorherigen</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="118"/>
-        <source>The clone's name will be appended with '_Clone'</source>
-        <translation>Der Name das Abbildes wird mit '_Klon' erweitert</translation>
+        <location filename="../map/IMapList.ui" line="170"/>
+        <source>Move down</source>
+        <translation>Nach unten verschieben</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="135"/>
-        <source>And for all other items, too.</source>
-        <translation>Auch für alle anderen Elemente anwenden.</translation>
+        <location filename="../map/IMapList.ui" line="173"/>
+        <source>Show map on top of next map</source>
+        <translation>Die Karte überlagert die nächste</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="182"/>
+        <source>Reload Maps</source>
+        <translation>Karten erneut laden</translation>
     </message>
 </context>
 <context>
-    <name>ISelectDBFolder</name>
+    <name>IMapPathSetup</name>
     <message>
-        <location filename="../gis/db/ISelectDBFolder.ui" line="14"/>
-        <source>Select Parent Folder...</source>
-        <translation>Übergeordneten Ordner auswählen...</translation>
+        <location filename="../map/IMapPathSetup.ui" line="14"/>
+        <source>Setup map paths</source>
+        <translation>Kartenpfad einstellen</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectDBFolder.ui" line="26"/>
-        <source>Name</source>
-        <translation>Name</translation>
+        <location filename="../map/IMapPathSetup.ui" line="20"/>
+        <source>Root path of tile cache for online maps:</source>
+        <translation>Hauptverzeichnis für den Kachelspeicher von Onlinekarten:</translation>
     </message>
-</context>
-<context>
-    <name>ISelectProjectDialog</name>
     <message>
-        <source>Dialog</source>
-        <translation type="obsolete">Dialog</translation>
+        <location filename="../map/IMapPathSetup.ui" line="36"/>
+        <location filename="../map/IMapPathSetup.ui" line="73"/>
+        <location filename="../map/IMapPathSetup.ui" line="93"/>
+        <source>...</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectProjectDialog.ui" line="14"/>
-        <source>Select a project...</source>
-        <translation>Ein Projekt auswählen...</translation>
+        <location filename="../map/IMapPathSetup.ui" line="185"/>
+        <source>Help! I want maps!
+I don't want to read the documentation!</source>
+        <translation>Hilfe! Ich will Karten!
+Keine Lust die Anleitung zu lesen!</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectProjectDialog.ui" line="20"/>
-        <source>Select project from list or enter new project name.</source>
-        <translation>Wähle ein Projekt aus der Liste oder gib einen neuen Projektnamen ein.</translation>
+        <location filename="../map/IMapPathSetup.ui" line="29"/>
+        <location filename="../map/IMapPathSetup.ui" line="154"/>
+        <source>-</source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>IMapPropSetup</name>
+    <message>
+        <location filename="../map/IMapPropSetup.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectProjectDialog.ui" line="33"/>
-        <source>New project's name</source>
-        <translation>Neuer Projektname</translation>
+        <location filename="../map/IMapPropSetup.ui" line="35"/>
+        <source><html><head/><body><p>Change opacity of map</p></body></html></source>
+        <translation><html><head/><body><p>Ändert die Transparenz der Karte</p></body></html></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectProjectDialog.ui" line="43"/>
-        <source>New project is created as:</source>
-        <translation>Das neue Projekt wird erstellt als:</translation>
+        <location filename="../map/IMapPropSetup.ui" line="50"/>
+        <source><html><head/><body><p>Click to use current scale as minimum scale to display the map.</p></body></html></source>
+        <translation><html><head/><body><p>Klicken um die aktuelle Skalierung als minimale Skalierung zu benutzen.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectProjectDialog.ui" line="93"/>
-        <source>*.qms</source>
+        <location filename="../map/IMapPropSetup.ui" line="53"/>
+        <location filename="../map/IMapPropSetup.ui" line="90"/>
+        <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectProjectDialog.ui" line="103"/>
-        <source>*.gpx</source>
-        <translation></translation>
+        <location filename="../map/IMapPropSetup.ui" line="74"/>
+        <source><html><head/><body><p>Control the range of scale the map is displayed. Use the two buttons left and right to define the actual scale as either minimum or maximum scale.</p></body></html></source>
+        <translation><html><head/><body><p>Stellt den Skalierungsbereich ein, in dem die Karte sichtbar ist. Benutzen Sie die beiden Knöpfe links und rechts um die minimale und maximale Skalierung einzustellen.</p></body></html></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectProjectDialog.ui" line="110"/>
-        <source>Database</source>
-        <translation>Datenbank</translation>
+        <location filename="../map/IMapPropSetup.ui" line="87"/>
+        <source><html><head/><body><p>Click to use current scale as maximum scale to display the map.</p></body></html></source>
+        <translation><html><head/><body><p>Klicken um die aktuelle Skalierung als maximale Skalierung zu benutzen.</p></body></html></translation>
     </message>
-</context>
-<context>
-    <name>ISelectSaveAction</name>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="14"/>
-        <source>Copy item...</source>
-        <translation>Element kopieren...</translation>
+        <location filename="../map/IMapPropSetup.ui" line="137"/>
+        <source>Areas</source>
+        <translation>Gebiete</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="23"/>
-        <source>Replace existing item</source>
-        <translation>Ersetzt vorhandenes Element</translation>
+        <location filename="../map/IMapPropSetup.ui" line="144"/>
+        <source>Lines</source>
+        <translation>Linien</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="30"/>
-        <source>Replace with:</source>
-        <translation>Ersetzen mit:</translation>
+        <location filename="../map/IMapPropSetup.ui" line="151"/>
+        <source>Points</source>
+        <translation>Punkte</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="37"/>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="47"/>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="81"/>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="91"/>
-        <source>TextLabel</source>
-        <translation>Bezeichnung</translation>
+        <location filename="../map/IMapPropSetup.ui" line="233"/>
+        <source>-</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="67"/>
-        <source>Do not replace item</source>
-        <translation>Das Element nicht ersetzen</translation>
+        <location filename="../map/IMapPropSetup.ui" line="240"/>
+        <source>Cache Path</source>
+        <translation>Speicherpfad</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="74"/>
-        <source>Use item:</source>
-        <translation>Element verwenden:</translation>
+        <location filename="../map/IMapPropSetup.ui" line="196"/>
+        <source>Cache Size (MB)</source>
+        <translation>Cache (MB)</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="111"/>
-        <source>And for all other items, too.</source>
-        <translation>Auch für alle anderen Elemente anwenden.</translation>
+        <location filename="../map/IMapPropSetup.ui" line="216"/>
+        <source>Expiration (Days)</source>
+        <translation>Verfallzeit (Tage)</translation>
     </message>
 </context>
 <context>
-    <name>ISetupDB</name>
+    <name>IMapVrtBuilder</name>
     <message>
-        <source>Setup database...</source>
-        <translation type="obsolete">Datenbank einrichten...</translation>
+        <location filename="../tool/IMapVrtBuilder.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <source>save workspace on exit, and every</source>
-        <translation type="obsolete">Ansicht beim Beenden speichern, und alle</translation>
+        <location filename="../tool/IMapVrtBuilder.ui" line="22"/>
+        <location filename="../tool/IMapVrtBuilder.ui" line="56"/>
+        <source>...</source>
+        <translation></translation>
     </message>
     <message>
-        <source>minutes</source>
-        <translation type="obsolete">Minuten</translation>
+        <location filename="../tool/IMapVrtBuilder.ui" line="39"/>
+        <source>Select source files:</source>
+        <translation>Quelldateien auswählen:</translation>
+    </message>
+    <message>
+        <location filename="../tool/IMapVrtBuilder.ui" line="79"/>
+        <source>Target Filename:</source>
+        <translation>Zieldatei auswählen:</translation>
+    </message>
+    <message>
+        <location filename="../tool/IMapVrtBuilder.ui" line="86"/>
+        <source>-</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Database path</source>
-        <translation type="obsolete">Datenbankpfad</translation>
+        <location filename="../tool/IMapVrtBuilder.ui" line="95"/>
+        <source>Start</source>
+        <translation></translation>
     </message>
 </context>
 <context>
-    <name>ISetupDatabase</name>
+    <name>IMouseEditLine</name>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="14"/>
-        <source>Add database...</source>
-        <translation>Datenbank hinzufügen...</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="269"/>
+        <source><b>New Line</b><br/>Move the mouse and use the left mouse button to drop points. When done use the right mouse button to stop.<br/></source>
+        <translation><b>Neue Linie</b><br/>Erstellen Sie Punkte durch Verschieben des Mauscursors und Drücken der linken Maustaste. Mit der rechten Maustaste beenden Sie den Vorgang.<br/></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="25"/>
-        <source>File</source>
-        <translation>Datei</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="316"/>
+        <source><b>Delete Point</b><br/>Move the mouse close to a point and press the left button to delete it.<br/></source>
+        <translation><b>Punkt löschen</b><br/>Bewegen Sie den Mauscursor nahe an einen Punkt und drücken Sie die linke Maustaste um ihn zu löschen. <br/></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="32"/>
-        <source>-</source>
-        <translation></translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="325"/>
+        <source><b>Select Range of Points</b><br/>Left click on first point to start selection. Left click second point to complete selection and choose from options. Use the right mouse button to cancel.<br/></source>
+        <translation><b>Punktebereich auswählen</b><br/>Mit der linken Maustaste wählen Sie den ersten Punkt aus. Mit einem erneuten Drücken der linken Maustaste wählen Sie den zweiten Punkt aus und dann wählen Sie eine der Optionen. Zum Abbrechen nutzen Sie die rechte Maustaste.<br/></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="39"/>
-        <source>Name</source>
-        <translation>Name</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="334"/>
+        <source><b>Move Point</b><br/>Move the mouse close to a point and press the left button to make it stick to the cursor. Move the mouse to move the point. Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
+        <translation><b>Punkt verschieben</b><br/>Bewegen Sie den Mauscursor nahe an einen Punkt und drücken die linke Maustaste, um ihn mit dem Cursor zu fangen. Verschieben Sie den Punkt mit der Maus. Setzen Sie den Punkt mit einem Linksklick. Zum Abbrechen nutzen Sie die rechte Maustaste.<br/></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="46"/>
-        <source>Add new database.</source>
-        <translation>Fügt eine neue Datenbank hinzu.</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="343"/>
+        <source><b>Add Point</b><br/>Move the mouse close to a line segment and press the left button to add a point. The point will stick to the cursor and you can move it.  Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
+        <translation><b>Punkt hinzufügen</b><br/>Bewegen Sie den Mauscursor nahe an ein Liniensegment und drücken Sie die linke Maustaste, um einen Punkt hinzuzufügen. Der Punkt wird durch den Cursor gefangen und kann verschoben werden. Setzen Sie den Punkt mit einem Linksklick. Zum Abbrechen nutzen Sie die rechte Maustaste.<br/></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="49"/>
-        <location filename="../gis/db/ISetupDatabase.ui" line="63"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="352"/>
+        <source><b>No Routing</b><br/>All points will be connected with a straight line.<br/></source>
+        <translation><b>Kein Routing</b><br/>Alle Punkte werden mittles einer geraden Linie verbunden.<br/></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="60"/>
-        <source>Open existing database.</source>
-        <translation>Öffnet eine vorhandene Datenbank.</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="357"/>
+        <source><b>Auto Routing</b><br/>The current router setup is used to derive a route between points. <b>Note:</b> The selected router must be able to route on-the-fly. Offline routers usually can do, online routers can't.<br/></source>
+        <translation><b>Auto Routing</b><br/>Die aktuellen Router Einstellungen erstellen eine Route zwischen Punkten. <b>Hinweis:</b> Der gewählte Router muss schnell routen können. Offline Router können dies gewöhnlich, Online Router nicht.<br/></translation>
     </message>
-</context>
-<context>
-    <name>ISetupFolder</name>
     <message>
-        <source>Folder...</source>
-        <translation type="obsolete">Ordner...</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="362"/>
+        <source><b>Vector Routing</b><br/>Connect points with a line from a loaded vector map if possible.<br/></source>
+        <translation><b>Vektor Routing</b><br/>Verbindet Punkte mit einer Linie einer geladenen Vektorkarte, soweit möglich.<br/></translation>
     </message>
     <message>
-        <source>Name</source>
-        <translation type="obsolete">Name</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="542"/>
+        <source><b>%1 Metrics</b></source>
+        <translation><b>%1maße</b></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupFolder.ui" line="14"/>
-        <source>Database Folder...</source>
-        <translation>Datenbankordner...</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="545"/>
+        <source>Distance:</source>
+        <translation>Entfernung:</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupFolder.ui" line="20"/>
-        <source>Folder name</source>
-        <translation>Ordnername</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="547"/>
+        <source>Ascend:</source>
+        <translation>Anstieg:</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupFolder.ui" line="30"/>
-        <source>Group</source>
-        <translation>Gruppe</translation>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="549"/>
+        <source>Descend:</source>
+        <translation>Abstieg:</translation>
     </message>
+</context>
+<context>
+    <name>IPhotoAlbum</name>
     <message>
-        <location filename="../gis/db/ISetupFolder.ui" line="41"/>
-        <source>Project</source>
-        <translation>Projekt</translation>
+        <location filename="../widgets/IPhotoAlbum.ui" line="20"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupFolder.ui" line="55"/>
-        <source>Other</source>
-        <translation>Sonstige</translation>
+        <location filename="../widgets/IPhotoAlbum.ui" line="50"/>
+        <location filename="../widgets/IPhotoAlbum.ui" line="77"/>
+        <source>...</source>
+        <translation></translation>
     </message>
 </context>
 <context>
-    <name>ISetupNewWpt</name>
+    <name>IPlot</name>
     <message>
-        <location filename="../gis/wpt/ISetupNewWpt.ui" line="14"/>
-        <source>New Waypoint...</source>
-        <translation>Neuer Wegpunkt...</translation>
+        <location filename="../plot/IPlot.cpp" line="93"/>
+        <source>Reset Zoom</source>
+        <translation>Zoom zurücksetzen</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/ISetupNewWpt.ui" line="22"/>
-        <source>Symbol</source>
-        <translation>Symbol</translation>
+        <location filename="../plot/IPlot.cpp" line="94"/>
+        <source>Stop Range</source>
+        <translation>Bereichsauswahl beenden</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/ISetupNewWpt.ui" line="29"/>
-        <source>...</source>
-        <translation></translation>
+        <location filename="../plot/IPlot.cpp" line="95"/>
+        <source>Save...</source>
+        <translation>Speichern ...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/ISetupNewWpt.ui" line="39"/>
-        <source>Position</source>
-        <translation>Position</translation>
+        <location filename="../plot/IPlot.cpp" line="638"/>
+        <source>No or bad data.</source>
+        <translation>Keine oder schlechte Daten.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/ISetupNewWpt.ui" line="49"/>
-        <source>Name</source>
-        <translation>Name</translation>
+        <location filename="../plot/IPlot.cpp" line="1230"/>
+        <source>Select output file</source>
+        <translation>Ausgabedatei auswählen</translation>
+    </message>
+</context>
+<context>
+    <name>IPositionDialog</name>
+    <message>
+        <location filename="../helpers/IPositionDialog.ui" line="14"/>
+        <source>Position ...</source>
+        <translation>Position...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/ISetupNewWpt.ui" line="59"/>
+        <location filename="../helpers/IPositionDialog.ui" line="20"/>
+        <source>Enter new position</source>
+        <translation>Neue Position eingeben</translation>
+    </message>
+    <message>
+        <location filename="../helpers/IPositionDialog.ui" line="30"/>
         <source>Bad position format. Must be: 
 "[N|S] ddd mm.sss [W|E] ddd mm.sss"
 or
@@ -5927,1331 +5957,1374 @@ sein</translation>
     </message>
 </context>
 <context>
-    <name>ISetupWorkspace</name>
-    <message>
-        <source>Setup database...</source>
-        <translation type="obsolete">Datenbank einrichten...</translation>
-    </message>
-    <message>
-        <location filename="../gis/db/ISetupWorkspace.ui" line="14"/>
-        <source>Setup workspace...</source>
-        <translation>Arbeitsplatz konfigurieren...</translation>
-    </message>
-    <message>
-        <location filename="../gis/db/ISetupWorkspace.ui" line="35"/>
-        <source>save workspace on exit, and every</source>
-        <translation>Arbeitsplatz beim Beenden speichern, und alle</translation>
-    </message>
-    <message>
-        <location filename="../gis/db/ISetupWorkspace.ui" line="45"/>
-        <source>minutes</source>
-        <translation>Minuten</translation>
-    </message>
-</context>
-<context>
-    <name>ITextEditWidget</name>
-    <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="14"/>
-        <source>Edit text...</source>
-        <translation>Text bearbeiten...</translation>
-    </message>
-    <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="25"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="38"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="51"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="64"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="77"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="97"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="110"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="123"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="136"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="169"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="182"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="195"/>
-        <location filename="../widgets/ITextEditWidget.ui" line="208"/>
-        <source>...</source>
-        <translation></translation>
-    </message>
+    <name>IPrintDialog</name>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="256"/>
-        <source>Undo</source>
-        <translation>Rückgängig</translation>
+        <location filename="../print/IPrintDialog.ui" line="20"/>
+        <source>Print map...</source>
+        <translation>Karte drucken...</translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="259"/>
-        <source>Ctrl+Z</source>
-        <translation></translation>
+        <location filename="../print/IPrintDialog.ui" line="79"/>
+        <source>When printing online maps make sure that the map has been loaded into the cache for the extent to be printed.</source>
+        <translation>Um einen Ausschnitt einer Online Karte zu drucken, müssen Sie sicherstellen, dass die Karte in den Cache geladen wurde.</translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="268"/>
-        <source>Redo</source>
-        <translation>Wiederherstellen</translation>
+        <location filename="../print/IPrintDialog.ui" line="60"/>
+        <source>Save</source>
+        <translation>Speichern</translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="271"/>
-        <source>Ctrl+Shift+Z</source>
-        <translation></translation>
+        <location filename="../print/IPrintDialog.ui" line="37"/>
+        <source>When saving online maps make sure that the map has been loaded into the cache for the extent to be saved.</source>
+        <translation>Um einen Ausschnitt einer Online Karte zu speichern, müssen Sie sicherstellen, dass die Karte in den Cache geladen wurde.</translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="280"/>
-        <source>Cut</source>
-        <translation>Ausschneiden</translation>
+        <location filename="../print/IPrintDialog.ui" line="89"/>
+        <location filename="../print/IPrintDialog.ui" line="102"/>
+        <location filename="../print/IPrintDialog.ui" line="151"/>
+        <source>TextLabel</source>
+        <translation>Bezeichnung</translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="283"/>
-        <source>Ctrl+X</source>
-        <translation></translation>
+        <location filename="../print/IPrintDialog.ui" line="118"/>
+        <source>Print</source>
+        <translation>Drucken</translation>
     </message>
+</context>
+<context>
+    <name>IProgressDialog</name>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="292"/>
-        <source>Copy</source>
-        <translation>Kopieren</translation>
+        <location filename="../helpers/IProgressDialog.ui" line="14"/>
+        <source>Please wait...</source>
+        <translation>Bitte warten...</translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="295"/>
-        <source>Ctrl+C</source>
-        <translation></translation>
+        <location filename="../helpers/IProgressDialog.ui" line="20"/>
+        <location filename="../helpers/IProgressDialog.ui" line="27"/>
+        <source>TextLabel</source>
+        <translation>Bezeichnung</translation>
     </message>
+</context>
+<context>
+    <name>IProjWizard</name>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="304"/>
-        <source>Paste</source>
-        <translation>Einfügen</translation>
+        <location filename="../grid/IProjWizard.ui" line="14"/>
+        <source>Proj4 Wizzard</source>
+        <translation>Proj4 Wizard</translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="307"/>
-        <source>Ctrl+V</source>
+        <location filename="../grid/IProjWizard.ui" line="29"/>
+        <source>Mercator</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="319"/>
-        <source>Align Left</source>
-        <translation>Linksbündig</translation>
+        <location filename="../grid/IProjWizard.ui" line="38"/>
+        <source>UTM</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="322"/>
-        <source>Ctrl+L</source>
-        <translation></translation>
+        <location filename="../grid/IProjWizard.ui" line="45"/>
+        <source>zone</source>
+        <translation>Zone</translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="334"/>
-        <source>Align Right</source>
-        <translation>Rechtsbündig</translation>
+        <location filename="../grid/IProjWizard.ui" line="82"/>
+        <source>user defined</source>
+        <translation>Benutzer definiert</translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="337"/>
-        <source>Ctrl+R</source>
+        <location filename="../grid/IProjWizard.ui" line="94"/>
+        <source>Datum</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="349"/>
-        <source>Align Center</source>
-        <translation>Zentriert</translation>
+        <location filename="../grid/IProjWizard.ui" line="104"/>
+        <source>World Mercator (OSM)</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="352"/>
-        <source>Ctrl+E</source>
-        <translation></translation>
+        <location filename="../grid/IProjWizard.ui" line="124"/>
+        <source>Result:</source>
+        <translation>Ergebnis:</translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="364"/>
-        <source>Align Block</source>
-        <translation>Blocksatz</translation>
+        <location filename="../grid/IProjWizard.ui" line="138"/>
+        <source>UPS North (North Pole)</source>
+        <translation>UPS Nord (Nordpol)</translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="367"/>
-        <source>Ctrl+J</source>
-        <translation></translation>
+        <location filename="../grid/IProjWizard.ui" line="145"/>
+        <source>UPS South (South Pole)</source>
+        <translation>UPS Süd (Südpol)</translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="379"/>
-        <source>Underline</source>
-        <translation>Unterstreichen</translation>
+        <location filename="../grid/IProjWizard.ui" line="152"/>
+        <source>Projection</source>
+        <translation>Projektion</translation>
+    </message>
+</context>
+<context>
+    <name>IProjWpt</name>
+    <message>
+        <location filename="../gis/wpt/IProjWpt.ui" line="14"/>
+        <source>Waypoint Projection</source>
+        <translation>Wegpunkt Projektion</translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="382"/>
-        <source>Ctrl+U</source>
+        <location filename="../gis/wpt/IProjWpt.ui" line="22"/>
+        <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="394"/>
-        <source>Bold</source>
-        <translation>Fett</translation>
+        <location filename="../gis/wpt/IProjWpt.ui" line="45"/>
+        <source>-</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="397"/>
-        <source>Ctrl+B</source>
-        <translation></translation>
+        <location filename="../gis/wpt/IProjWpt.ui" line="54"/>
+        <source>Clone waypoint and move by:</source>
+        <translation>Wegpunkt kopieren und verschieben um:</translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="409"/>
-        <source>Italic</source>
-        <translation>Kursiv</translation>
+        <location filename="../gis/wpt/IProjWpt.ui" line="66"/>
+        <source>m</source>
+        <translation> m</translation>
     </message>
     <message>
-        <location filename="../widgets/ITextEditWidget.ui" line="412"/>
-        <source>Ctrl+I</source>
+        <location filename="../gis/wpt/IProjWpt.ui" line="76"/>
+        <source>°</source>
         <translation></translation>
     </message>
 </context>
 <context>
-    <name>ITimeZoneSetup</name>
+    <name>IRouterMapQuest</name>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="14"/>
-        <source>Setup Time Zone ...</source>
-        <translation>Zeitzone einstellen...</translation>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="22"/>
-        <source>UTC</source>
-        <translation></translation>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="22"/>
+        <source>Highways</source>
+        <translation>Autobahnen</translation>
     </message>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="32"/>
-        <source>Local</source>
-        <translation>Lokal</translation>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="74"/>
+        <source>Toll Road</source>
+        <translation>Mautstraßen</translation>
     </message>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="42"/>
-        <source>Automatic</source>
-        <translation>Automatisch</translation>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="29"/>
+        <source>Seasonal</source>
+        <translation>saisonale Straßen</translation>
     </message>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="75"/>
-        <source>Print date/time in </source>
-        <translation>Datum/Uhrzeit in</translation>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="84"/>
+        <source>Unpaved</source>
+        <translation>unbefestigte Straßen</translation>
     </message>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="82"/>
-        <source>long format, or</source>
-        <translation>langem Format, oder</translation>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="67"/>
+        <source>Ferry</source>
+        <translation>Fähren</translation>
     </message>
     <message>
-        <location filename="../units/ITimeZoneSetup.ui" line="92"/>
-        <source>short format</source>
-        <translation>kurzem Format ausgeben</translation>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="36"/>
+        <source>Language</source>
+        <translation>Sprache</translation>
     </message>
-</context>
-<context>
-    <name>IToolShell</name>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="44"/>
-        <source>Execution of external program `%1` failed: </source>
-        <translation>Ausführen des externen Programms `%1` ist fehlgeschlagen: </translation>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="43"/>
+        <source>Country Border</source>
+        <translation>Landesgrenzen</translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="48"/>
-        <source>Process cannot be started.
-</source>
-        <translation>Der Prozess konnte nicht gestartet werden.</translation>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="53"/>
+        <source>Profile</source>
+        <translation>Profil</translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="49"/>
-        <source>Make sure the required packages are installed, `%1` exists and is executable.
-</source>
-        <translation>Stellen Sie sicher, dass die erforderlichen Pakete installiert sind, `%1` existiert und ist ausführbar.</translation>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="60"/>
+        <source>Avoid:</source>
+        <translation>Vermeide:</translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="53"/>
-        <source>External process crashed.
-</source>
-        <translation>Der externe Prozess ist abgestürzt.</translation>
+        <location filename="../gis/rte/router/IRouterMapQuest.ui" line="106"/>
+        <source><p>Directions Courtesy of <a href="http://www.mapquest.com/" target="_blank">MapQuest</a> </p></source>
+        <translation><p>Mit freundlicher Genehmigung von <a href="http://www.mapquest.com/" target="_blank">MapQuest</a> </p></translation>
     </message>
+</context>
+<context>
+    <name>IRouterRoutino</name>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="57"/>
-        <source>An unknown error occurred.
-</source>
-        <translation>Ein unbekannter Fehler ist aufgetreten.</translation>
+        <location filename="../gis/rte/router/IRouterRoutino.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="148"/>
-        <source>!!! failed !!!
-</source>
-        <translation>!!! fehlgeschlagen !!!</translation>
+        <location filename="../gis/rte/router/IRouterRoutino.ui" line="31"/>
+        <source>Profile</source>
+        <translation>Profil</translation>
     </message>
-</context>
-<context>
-    <name>IUnitsSetup</name>
     <message>
-        <location filename="../units/IUnitsSetup.ui" line="14"/>
-        <source>Setup units...</source>
-        <translation>Einheiten einrichten...</translation>
+        <location filename="../gis/rte/router/IRouterRoutino.ui" line="38"/>
+        <source>Mode</source>
+        <translation>Modus</translation>
     </message>
     <message>
-        <location filename="../units/IUnitsSetup.ui" line="38"/>
-        <source>Metric</source>
-        <translation>metrisch</translation>
+        <location filename="../gis/rte/router/IRouterRoutino.ui" line="45"/>
+        <source>Database</source>
+        <translation>Datenbank</translation>
     </message>
     <message>
-        <location filename="../units/IUnitsSetup.ui" line="47"/>
-        <source><b>Note:</b> For some GUI elements changing the units will not take effect until you restart QMapShack.</source>
-        <translation><b>Anmerkung:</b> Das Ändern der Einheiten wird bei einigen GUI-Elementen erst nach einem Neustart von QMapShack wirksam.</translation>
+        <location filename="../gis/rte/router/IRouterRoutino.ui" line="52"/>
+        <source>Add paths with Routino database.</source>
+        <translation>Fügt Pfade mit Routino Datenbanken hinzu.</translation>
     </message>
     <message>
-        <location filename="../units/IUnitsSetup.ui" line="31"/>
-        <source>Imperial</source>
-        <translation>imperial</translation>
+        <location filename="../gis/rte/router/IRouterRoutino.ui" line="55"/>
+        <source>...</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../units/IUnitsSetup.ui" line="24"/>
-        <source>Nautic</source>
-        <translation>nautisch</translation>
+        <location filename="../gis/rte/router/IRouterRoutino.ui" line="66"/>
+        <source>Language</source>
+        <translation>Sprache</translation>
     </message>
-</context>
-<context>
-    <name>IWptIconDialog</name>
     <message>
-        <location filename="../helpers/IWptIconDialog.ui" line="14"/>
-        <source>Icons...</source>
-        <translation>Symbole...</translation>
+        <location filename="../gis/rte/router/IRouterRoutino.ui" line="131"/>
+        <source>To use offline routing you need to define paths to local routing data. Use the setup tool button to register a path.</source>
+        <translation>Um Offline-Routing zu nutzen, müssen Pfade zu lokalen Routendaten definiert sein. Benutzen Sie den Werkzeugbutton, um einen Pfad zu registrieren.</translation>
     </message>
 </context>
 <context>
-    <name>QObject</name>
+    <name>IRouterRoutinoPathSetup</name>
     <message>
-        <location filename="../units/IUnit.cpp" line="745"/>
-        <location filename="../units/IUnit.cpp" line="751"/>
-        <source>Error</source>
-        <translation>Fehler</translation>
+        <location filename="../gis/rte/router/IRouterRoutinoPathSetup.ui" line="14"/>
+        <source>Setup Routino database...</source>
+        <translation>Routino Datenbank einrichten...</translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="745"/>
-        <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
-        <translation>Falsches Positionsformat. Muss entweder "[N|S] ddd mm.sss [W|E] ddd mm.sss" oder "[N|S] ddd.ddd [W|E] ddd.ddd" sein.</translation>
+        <location filename="../gis/rte/router/IRouterRoutinoPathSetup.ui" line="27"/>
+        <location filename="../gis/rte/router/IRouterRoutinoPathSetup.ui" line="47"/>
+        <source>...</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="751"/>
-        <source>Position values out of bounds. </source>
-        <translation>Position außerhalb der gültigen Werte.</translation>
+        <location filename="../gis/rte/router/IRouterRoutinoPathSetup.ui" line="99"/>
+        <source>-</source>
+        <translation></translation>
     </message>
+</context>
+<context>
+    <name>IRouterSetup</name>
     <message>
-        <source>Bad position format. Must be: [N|S] ddd mm.sss [W|E] ddd mm.sss</source>
-        <translation type="obsolete">Falsches Positionsformat. Richtig: [N|S] ddd mm.sss [W|E] ddd mm.sss </translation>
+        <location filename="../gis/rte/router/IRouterSetup.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
+</context>
+<context>
+    <name>IRoutinoDatabaseBuilder</name>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="111"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="120"/>
-        <source>Failed to read...</source>
-        <translation>Lesen fehlgeschlagen...</translation>
+        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="111"/>
-        <source>Failed to read: %1
-line %2, column %3:
- %4</source>
-        <translation>Lesen fehlgeschlagen: %1
-Zeile %2, Spalte %3:
-%4</translation>
+        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="22"/>
+        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="63"/>
+        <source>...</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="120"/>
-        <source>Not a GPX file: </source>
-        <translation>Keine GPX Datei:</translation>
+        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="39"/>
+        <source>Select source files:</source>
+        <translation>Quelldateien auswählen:</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="410"/>
-        <source>Saving GIS data failed...</source>
-        <translation>Das Speichern der GIS Daten ist fehlgeschlagen...</translation>
+        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="54"/>
+        <source>Start</source>
+        <translation>Starten</translation>
     </message>
     <message>
-        <source>
-Filename: %1</source>
-        <translation type="obsolete">Dateiname: %1</translation>
+        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="86"/>
+        <source>Target Path:</source>
+        <translation>Zielpfad:</translation>
     </message>
     <message>
-        <source>
-Waypoints: %1</source>
-        <translation type="obsolete">Wegpunkte: %1</translation>
+        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="93"/>
+        <source>-</source>
+        <translation></translation>
     </message>
     <message>
-        <source>
-Tracks: %1</source>
-        <translation type="obsolete">Tracks: %1</translation>
+        <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="100"/>
+        <source>File Prefix</source>
+        <translation>Dateipräfix</translation>
     </message>
+</context>
+<context>
+    <name>IScrOptEditLine</name>
     <message>
-        <source>
-Routes: %1</source>
-        <translation type="obsolete">Routen: %1</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="32"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <source>
-Areas: %1</source>
-        <translation type="obsolete">Fläche: %1</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="40"/>
+        <source>Save to original</source>
+        <translation>Ins Original speichern</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="97"/>
-        <source>Save project?</source>
-        <translation>Projekt speichern?</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="47"/>
+        <source>Save as new</source>
+        <translation>Als neu speichern</translation>
     </message>
     <message>
-        <source>The project "%1" was changed. Save befor closing it?</source>
-        <translation type="obsolete">Das Projekt "%1" wurde geändert. Speichern bevor es geschlossen wird?</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="54"/>
+        <source>Abort</source>
+        <translation>Abbrechen</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="237"/>
-        <source>%1: Correlate tracks and waypoints.</source>
-        <translation>%1: Tracks und Wegpunkte verknüpfen.</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="89"/>
+        <source>Move points. (Ctrl+M)</source>
+        <translation>Punkte verschieben. (Ctrl+M)</translation>
     </message>
     <message>
-        <source>Abort</source>
-        <translation type="obsolete">Abbrechen</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="99"/>
+        <source>Ctrl+M</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project (%1) in the future?</source>
-        <translation type="obsolete">Hat das zu lange gedauert? Wollen Sie die Verknüpfung von Tracks und Wegpunkten auch in Zukunft für das Projekt (%1) überspringen?</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="115"/>
+        <source>Add new points. (Ctrl++)</source>
+        <translation>Punkte hinzufügen. (Ctrl++)</translation>
     </message>
     <message>
-        <source><h3>%1</h3>The project was changed. Save befor closing it?</source>
-        <translation type="vanished"><h3>%1</h3>Das Projekt wurde geändert. Speichern bevor es geschlossen wird?</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="125"/>
+        <source>Ctrl++</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="97"/>
-        <source><h3>%1</h3>The project was changed. Save before closing it?</source>
-        <translation><h3>%1</h3>Das Projekt wurde geändert. Speichern, bevor es geschlossen wird?</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="138"/>
+        <source>Select a range of points. (Ctrl+R)</source>
+        <translation>Einen Punktebereich wählen (Ctrl+R)</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="247"/>
-        <source><h3>%1</h3>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project in the future?</source>
-        <translation><h3>%1</h3>Hat das zu lange gedauert? Wollen Sie die Verknüpfung von Tracks und Wegpunkten auch in Zukunft für dieses Projekt überspringen?</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="148"/>
+        <source>Ctrl+R</source>
+        <translation></translation>
     </message>
     <message>
-        <source>Cancelled correlation...</source>
-        <translation type="vanished">Verknüpfung abgebrochen...</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="161"/>
+        <source>Delete a point. (Ctrl+D)</source>
+        <translation>Einen Punkt löschen (Ctrl+D)</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="248"/>
-        <source>Canceled correlation...</source>
-        <translation>Verknüpfung abgebrochen...</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="171"/>
+        <source>Ctrl+D</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="326"/>
-        <source><br/>
-Filename: %1</source>
-        <translation><br/>
-Dateiname: %1</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="215"/>
+        <source>No auto-routing or line snapping (Ctrl+O)</source>
+        <translation>Kein Auto-Routing oder Fangen an Linie (Ctrl+O)</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="331"/>
-        <source>Waypoints: %1</source>
-        <translation>Wegpunkte: %1</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="225"/>
+        <source>Ctrl+O</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="335"/>
-        <source>Tracks: %1</source>
-        <translation>Tracks: %1</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="238"/>
+        <source>Use auto-routing to between points. (Ctrl+A)</source>
+        <translation>Auto-Routing zwischen Punkten benutzen. (Ctrl+A)</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="339"/>
-        <source>Routes: %1</source>
-        <translation>Routen: %1</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="248"/>
+        <source>Ctrl+A</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="343"/>
-        <source>Areas: %1</source>
-        <translation>Gebiete: %1</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="261"/>
+        <source>Snap line along lines of a vector map. (Ctrl+V)</source>
+        <translation>Fängt die Linie entlang Linien einer Vektorkarte. (Ctrl+V)</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="423"/>
-        <source>Are you sure you want to delete '%1' from project '%2'?</source>
-        <translation>Sind Sie sicher, dass Sie '%1' aus dem Projekt '%2' löschen wollen? </translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="92"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="118"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="141"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="164"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="300"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="317"/>
+        <source>...</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="436"/>
-        <source>Are you sure you want to delete '%1' from folder '%2'?</source>
-        <translation>Sind Sie sicher, dass Sie '%1' aus dem Ordner '%2' löschen wollen? </translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="218"/>
+        <source>0</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="437"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="424"/>
-        <source>Delete...</source>
-        <translation>Löschen...</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="241"/>
+        <source>A</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="98"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="144"/>
-        <source>Failed to open...</source>
-        <translation>Öffnen fehlgeschlagen...</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="264"/>
+        <source>V</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="98"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="144"/>
-        <source>Failed to open %1</source>
-        <translation>Öffnen fehlgeschlagen: %1</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="271"/>
+        <source>Ctrl+V</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="158"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="222"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="95"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="159"/>
-        <source>Save GIS data to...</source>
-        <translation>GIS Daten speichern in...</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="297"/>
+        <source>Undo last change</source>
+        <translation>Letzte Änderung rückgängig machen</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="262"/>
-        <source>Save ...</source>
-        <translation>Speichern ...</translation>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="314"/>
+        <source>Redo last change</source>
+        <translation>Letzte Änderung wiederherstellen</translation>
     </message>
+</context>
+<context>
+    <name>IScrOptOvlArea</name>
     <message>
-        <source>Abort save</source>
-        <translation type="obsolete">Speichern abbrechen</translation>
+        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="286"/>
-        <source>File exists ...</source>
-        <translation>Datei existiert...</translation>
+        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="40"/>
+        <source>View details and edit.</source>
+        <translation>Details anzeigen und bearbeiten.</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="287"/>
-        <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
-        <translation>Diese Datei wurde nicht mit QMapShack erstellt. Wenn Sie 'Ja' drücken werden alle Daten dieser Datei gelöscht. Selbst wenn diese Datei GPX Daten enthält und mit QMapShack geladen wurde, können nicht alle Elemente dieser Datei durch QMapShack geladen und gespeichert werden. Diese Elemente sind verloren. Ich empfehle die Nutzung einer anderen Datei. <b>Wollen Sie die Datei wirklich überschreiben?</b></translation>
+        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="43"/>
+        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="57"/>
+        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="71"/>
+        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="92"/>
+        <source>...</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="395"/>
-        <source>Failed to create file '%1'</source>
-        <translation>Datei %1' konnte nicht erstellt werden</translation>
+        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="54"/>
+        <source>Copy area into another project.</source>
+        <translation>Gebiet in ein anderes Projekt kopieren.</translation>
     </message>
     <message>
-        <source>Saveing GIS data failed...</source>
-        <translation type="vanished">Speichern der GIS Daten fehlgeschlagen...</translation>
+        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="68"/>
+        <source>Delete area from project.</source>
+        <translation>Gebiet aus einem Projekt entfernen.</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="405"/>
-        <source>Failed to write file '%1'</source>
-        <translation>Datei %1' konnte nicht gespeichert werden</translation>
+        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="89"/>
+        <source>Edit shape of the area.</source>
+        <translation>Form eines Gebietes ändern.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="249"/>
-        <source>Changed trackpoints, sacrificed all previous data.</source>
-        <translation>Wegpunkte geändert, alle vorherigen Daten sind verloren.</translation>
+        <location filename="../gis/ovl/IScrOptOvlArea.ui" line="121"/>
+        <source>TextLabel</source>
+        <translation>Bezeichnung</translation>
+    </message>
+</context>
+<context>
+    <name>IScrOptRangeLine</name>
+    <message>
+        <location filename="../mouse/line/IScrOptRangeLine.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="262"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="371"/>
-        <source>Length: %1 %2</source>
-        <translation>Länge: %1 %2</translation>
+        <location filename="../mouse/line/IScrOptRangeLine.ui" line="20"/>
+        <source>Delete all points between the first and last one.</source>
+        <translation>Alle Punkte zwischen dem ersten und dem letzten Punkt löschen.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="378"/>
-        <source>, %1%2 %3, %4%5 %6</source>
+        <location filename="../mouse/line/IScrOptRangeLine.ui" line="23"/>
+        <location filename="../mouse/line/IScrOptRangeLine.ui" line="37"/>
+        <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="386"/>
-        <source>Time: %1</source>
-        <translation>Gesamtzeit: %1</translation>
+        <location filename="../mouse/line/IScrOptRangeLine.ui" line="34"/>
+        <source><html><head/><body><p>Calculate a route between the first and last selected point.</p></body></html></source>
+        <translation><html><head/><body><p>Eine Route zwischen dem ersten und dem letzten gewählten Punkt berechnen.</p></body></html></translation>
     </message>
+</context>
+<context>
+    <name>IScrOptRangeTrk</name>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="389"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="399"/>
-        <source>, Speed: %1 %2</source>
-        <translation>, Geschw.: %1 %2</translation>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="396"/>
-        <source>Moving: %1</source>
-        <translation>Zeit in Bew.: %1</translation>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="40"/>
+        <source>Hide all points.</source>
+        <translation>Blendet alle Punkte aus.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="405"/>
-        <source>Start: %1</source>
-        <translation>Beginn: %1</translation>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="54"/>
+        <source>Show all points.</source>
+        <translation>Blendet alle Punkte ein.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="410"/>
-        <source>End: %1</source>
-        <translation>Ende: %1</translation>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="68"/>
+        <source>Select an activity for the selected range.</source>
+        <translation>Wählen Sie eine Aktivität für den ausgewählten Bereich.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="414"/>
-        <source>Points: %1 (%2)</source>
-        <translation>Punkte: %1 von %2</translation>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="82"/>
+        <source>Copy track points as new track.</source>
+        <translation>Kopiert Trackpunkte in neuen Track.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="523"/>
-        <source>Ele.: %1 %2</source>
-        <translation>Höhe: %1 %2</translation>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="43"/>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="57"/>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="71"/>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="85"/>
+        <source>...</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="526"/>
-        <source> slope: %1%3 (%2%)</source>
-        <translation>, Steigung: %1%3 (%2%)</translation>
+        <location filename="../mouse/IScrOptRangeTrk.ui" line="117"/>
+        <source>TextLabel</source>
+        <translation>Bezeichnung</translation>
     </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="559"/>
-        <source>... and %1 tags not displayed</source>
-        <translation>... und %1 Tags werden nicht angezeigt</translation>
+</context>
+<context>
+    <name>IScrOptRte</name>
+    <message>
+        <location filename="../gis/rte/IScrOptRte.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="625"/>
-        <source>Ascend: %1%2</source>
-        <translation>Anstieg: %1 %2</translation>
+        <location filename="../gis/rte/IScrOptRte.ui" line="40"/>
+        <source>View details and edit.</source>
+        <translation>Details anzeigen und bearbeiten.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="630"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="647"/>
-        <source>, %1%2</source>
-        <translation>, %1 %2</translation>
+        <location filename="../gis/rte/IScrOptRte.ui" line="43"/>
+        <location filename="../gis/rte/IScrOptRte.ui" line="57"/>
+        <location filename="../gis/rte/IScrOptRte.ui" line="71"/>
+        <location filename="../gis/rte/IScrOptRte.ui" line="89"/>
+        <location filename="../gis/rte/IScrOptRte.ui" line="106"/>
+        <location filename="../gis/rte/IScrOptRte.ui" line="120"/>
+        <location filename="../gis/rte/IScrOptRte.ui" line="134"/>
+        <source>...</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="635"/>
-        <source>Ascend: -</source>
-        <translation>Anstieg: -</translation>
+        <location filename="../gis/rte/IScrOptRte.ui" line="54"/>
+        <source>Copy route into another project.</source>
+        <translation>Kopiert die Route in ein anderes Projekt.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="642"/>
-        <source> Descend: %1%2</source>
-        <translation> Abstieg: %1 %2</translation>
+        <location filename="../gis/rte/IScrOptRte.ui" line="68"/>
+        <source>Delete route from project.</source>
+        <translation>Route aus einem Projekt entfernen.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="652"/>
-        <source>Descend: -</source>
-        <translation>Abstieg: -</translation>
+        <location filename="../gis/rte/IScrOptRte.ui" line="117"/>
+        <source>Reset route calculation.</source>
+        <translation>Routenberechnung zurücksetzen.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="658"/>
-        <source>Dist.: %1%2</source>
-        <translation>Entf.: %1 %2</translation>
+        <location filename="../gis/rte/IScrOptRte.ui" line="103"/>
+        <source>Calculate route.</source>
+        <translation>Route berechnen.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="663"/>
-        <source> Time: %1%2</source>
-        <translation> Zeit: %1 %2</translation>
+        <location filename="../gis/rte/IScrOptRte.ui" line="131"/>
+        <source>Move route points.</source>
+        <translation>Routenpunkte verschieben.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1307"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1331"/>
-        <source>Permanently removed points %1..%2</source>
-        <translation>Punkte %1..%2 dauerhaft entfernt</translation>
+        <location filename="../gis/rte/IScrOptRte.ui" line="160"/>
+        <source>TextLabel</source>
+        <translation>Bezeichnung</translation>
     </message>
+</context>
+<context>
+    <name>IScrOptTrk</name>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2088"/>
-        <source>Changed activity to '%1' for complete track.</source>
-        <translation>Die Aktivität wurde für den gesamten Track auf '%1' geändert.</translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2163"/>
-        <source>Changed activity to '%1' for range(%2..%3).</source>
-        <translation>Die Aktivität wurde für den Bereich (%2..%3) auf '%1' geändert.</translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="54"/>
+        <source>Copy track into another project.</source>
+        <translation>Track in ein anderes Projekt kopieren.</translation>
     </message>
     <message>
-        <source> slope: %1° (%2%)</source>
-        <translation type="obsolete"> Neigung: %1° (%2%)</translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="89"/>
+        <source>Show on-screen profile and detailed information about points.</source>
+        <translation>Zeigt das Profil und detaillierte Informationen der Punkte.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1513"/>
-        <source>Hide points.</source>
-        <translation>Punkte ausblenden.</translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="120"/>
+        <source>Edit position of track points.</source>
+        <translation>Position von Trackpunkten bearbeiten.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1553"/>
-        <source>Show points.</source>
-        <translation>Punkte einblenden.</translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="40"/>
+        <source>View details and edit properties of track.</source>
+        <translation>Details anzeigen und Trackeigenschaften bearbeiten.</translation>
     </message>
     <message>
-        <source> slope: %1°(%2%)</source>
-        <translation type="obsolete">Neigung: %1°(%2%)</translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="68"/>
+        <source>Delete track from project.</source>
+        <translation>Track aus einem Projekt entfernen.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="531"/>
-        <source> speed: %1%2</source>
-        <translation>, Geschw.: %1 %2</translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="106"/>
+        <source>Select a range of points.</source>
+        <translation>Wähle einen Punktebereich.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="571"/>
-        <source>Ascend: %1%2 (%3%)</source>
-        <translation>Anstieg: %1 %2 (%3%)</translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="134"/>
+        <source>Reverse track.</source>
+        <translation>Track umkehren.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="575"/>
-        <source>Ascend: - (-)</source>
-        <translation>Anstieg: - (-)</translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="148"/>
+        <source>Combine tracks.</source>
+        <translation>Tracks verbinden.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="581"/>
-        <source> Descend: %1%2 (%3%)</source>
-        <translation>, Abstieg: %1 %2 (%3%)</translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="162"/>
+        <source>Cut track at selected point. You can use this to:
+
+* remove bad points at the start or end of the track
+* use the track parts to plan a new tour
+* cut a long track into stages
+</source>
+        <translation>Zerteilt den Track am ausgewählten Punkt. Damit kann man:
+
+* schlechte Punkte am Anfang oder Ende eines Tracks entfernen
+* die Teile zum Planen neuer Touren verwenden
+* einen langen Track in Etappen zerteilen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="585"/>
-        <source> Descend: - (-) </source>
-        <translation>, Abstieg: - (-) </translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="43"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="57"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="71"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="92"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="109"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="123"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="137"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="151"/>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="170"/>
+        <source>...</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="592"/>
-        <source>Dist.: %1%2 (%3%)</source>
-        <translation>Entf.: %1 %2 (%3%)</translation>
+        <location filename="../gis/trk/IScrOptTrk.ui" line="196"/>
+        <source>TextLabel</source>
+        <translation>Bezeichnung</translation>
     </message>
+</context>
+<context>
+    <name>IScrOptWpt</name>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="596"/>
-        <source>Dist.: - (-)</source>
-        <translation>Entf.: - (-)</translation>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="20"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="602"/>
-        <source> Moving: %1%2 (%3%)</source>
-        <translation>, Zeit in Bew.: %1 %2 (%3%)</translation>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="49"/>
+        <source>View details and edit.</source>
+        <translation>Details anzeigen und editieren.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="606"/>
-        <source> Moving: - (-) </source>
-        <translation>, Zeit in Bew.: - (-) </translation>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="52"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="66"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="80"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="101"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="118"/>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="132"/>
+        <source>...</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="96"/>
-        <source>thin</source>
-        <translation>dünn</translation>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="63"/>
+        <source>Copy waypoint into another project.</source>
+        <translation>Wegpunkt in ein anderes Projekt kopieren.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="97"/>
-        <source>normal</source>
-        <translation>normal</translation>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="77"/>
+        <source>Delete waypoint from project.</source>
+        <translation>Wegpunkt aus einem Projekt entfernen.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="98"/>
-        <source>wide</source>
-        <translation>weit</translation>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="98"/>
+        <source>Show content as static bubble.</source>
+        <translation>Inhalt als statische Legende zeigen.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="99"/>
-        <source>strong</source>
-        <translation>stark</translation>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="115"/>
+        <source>Move waypoint to a new location.</source>
+        <translation>Wegpunkt an einen neuen Ort verschieben.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="138"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="63"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="124"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="92"/>
-        <source>_Clone</source>
-        <translation>_Klon</translation>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="129"/>
+        <source>Clone waypoint and move clone a given distance and angle.</source>
+        <translation>Wegpunkt klonen und um eine bestimmte Entfernung und einen bestimmten Winkel verschieben.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="431"/>
-        <source>Area: %1%2</source>
-        <translation>Gebiet: %1 %2</translation>
+        <location filename="../gis/wpt/IScrOptWpt.ui" line="176"/>
+        <source>TextLabel</source>
+        <translation>Bezeichnung</translation>
     </message>
+</context>
+<context>
+    <name>ISelDevices</name>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="493"/>
-        <source>Changed area shape.</source>
-        <translation>Gebietsform geändert.</translation>
+        <location filename="../gis/ISelDevices.ui" line="14"/>
+        <source>Select devices...</source>
+        <translation>Geräte auswählen...</translation>
     </message>
+</context>
+<context>
+    <name>ISelectActivity</name>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="501"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="221"/>
-        <source>Changed name.</source>
-        <translation>Name geändert.</translation>
+        <location filename="../gis/trk/ISelectActivity.ui" line="14"/>
+        <source>Activities...</source>
+        <translation>Aktivitäten...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="507"/>
-        <source>Changed border width.</source>
-        <translation>Umrandungsbreite geändert.</translation>
+        <location filename="../gis/trk/ISelectActivity.ui" line="20"/>
+        <source>Select one:</source>
+        <translation>Wählen Sie eine aus:</translation>
     </message>
+</context>
+<context>
+    <name>ISelectActivityColor</name>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="513"/>
-        <source>Changed fill pattern.</source>
-        <translation>Füllung geändert.</translation>
+        <location filename="../gis/trk/ISelectActivityColor.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
     </message>
+</context>
+<context>
+    <name>ISelectCopyAction</name>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="519"/>
-        <source>Changed opacity.</source>
-        <translation>Durchsichtigkeit geändert.</translation>
+        <location filename="../helpers/ISelectCopyAction.ui" line="14"/>
+        <source>Copy item...</source>
+        <translation>Element kopieren...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="525"/>
-        <source>Changed comment.</source>
-        <translation>Kommentar geändert.</translation>
+        <location filename="../helpers/ISelectCopyAction.ui" line="29"/>
+        <source>Replace existing item</source>
+        <translation>Ersetzt vorhandenes Element</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="531"/>
-        <source>Changed description.</source>
-        <translation>Beschreibung geändert.</translation>
+        <location filename="../helpers/ISelectCopyAction.ui" line="36"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="46"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="79"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="89"/>
+        <source>TextLabel</source>
+        <translation>Bezeichnung</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="537"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="239"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2059"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="366"/>
-        <source>Changed links</source>
-        <translation>Geänderte Verknüpfungen</translation>
+        <location filename="../helpers/ISelectCopyAction.ui" line="72"/>
+        <source>Do not copy item</source>
+        <translation>Element nicht kopieren</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="549"/>
-        <source>Changed color</source>
-        <translation>Farbe geändert</translation>
+        <location filename="../helpers/ISelectCopyAction.ui" line="115"/>
+        <source>Create a clone</source>
+        <translation>Einen Klon erstellen</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1245"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1264"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1340"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1399"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1578"/>
-        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
-        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
-        <source>Edit name...</source>
-        <translation>Name bearbeiten...</translation>
+        <location filename="../helpers/ISelectCopyAction.ui" line="122"/>
+        <source>Replace with:</source>
+        <translation>Ersetzen mit:</translation>
     </message>
     <message>
-        <source>Enter new waypoint name.</source>
-        <translation type="obsolete">Geben Sie einen neuen Namen für den Wegpunkt ein.</translation>
+        <location filename="../helpers/ISelectCopyAction.ui" line="129"/>
+        <source>Keep item:</source>
+        <translation>Element behalten:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="227"/>
-        <source>Elevation: %1 %2</source>
-        <translation>Höhe: %1 %2</translation>
+        <location filename="../helpers/ISelectCopyAction.ui" line="136"/>
+        <source>The clone's name will be appended with '_Clone'</source>
+        <translation>Der Name des Klones wird mit '_Klon' erweitert</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="238"/>
-        <source>Proximity: %1 %2</source>
-        <translation>Abstand: %1 %2</translation>
+        <location filename="../helpers/ISelectCopyAction.ui" line="153"/>
+        <source>And for all other items, too.</source>
+        <translation>Auch für alle anderen Elemente anwenden.</translation>
     </message>
+</context>
+<context>
+    <name>ISelectDBFolder</name>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2041"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="312"/>
-        <source>Changed name</source>
-        <translation>Name geändert</translation>
+        <location filename="../gis/db/ISelectDBFolder.ui" line="14"/>
+        <source>Select Parent Folder...</source>
+        <translation>Übergeordneten Ordner auswählen...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="322"/>
-        <source>Changed position</source>
-        <translation>Position geändert</translation>
+        <location filename="../gis/db/ISelectDBFolder.ui" line="26"/>
+        <source>Name</source>
+        <translation>Name</translation>
     </message>
+</context>
+<context>
+    <name>ISelectProjectDialog</name>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="328"/>
-        <source>Changed elevation</source>
-        <translation>Höhe geändert</translation>
+        <location filename="../helpers/ISelectProjectDialog.ui" line="14"/>
+        <source>Select a project...</source>
+        <translation>Ein Projekt auswählen...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="334"/>
-        <source>Changed proximity</source>
-        <translation>Abstandsalarm geändert</translation>
+        <location filename="../helpers/ISelectProjectDialog.ui" line="20"/>
+        <source>Select project from list or enter new project name.</source>
+        <translation>Wähle ein Projekt aus der Liste oder gib einen neuen Projektnamen ein.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="348"/>
-        <source>Changed icon</source>
-        <translation>Symbol geändert</translation>
+        <location filename="../helpers/ISelectProjectDialog.ui" line="33"/>
+        <source>New project's name</source>
+        <translation>Neuer Projektname</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="372"/>
-        <source>Changed images</source>
-        <translation>Bilder geändert</translation>
+        <location filename="../helpers/ISelectProjectDialog.ui" line="43"/>
+        <source>New project is created as:</source>
+        <translation>Das neue Projekt wird erstellt als:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="378"/>
-        <source>Add image</source>
-        <translation>Bild hinzufügen</translation>
+        <location filename="../helpers/ISelectProjectDialog.ui" line="93"/>
+        <source>*.qms</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="227"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2047"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="354"/>
-        <source>Changed comment</source>
-        <translation>Kommentar geändert</translation>
+        <location filename="../helpers/ISelectProjectDialog.ui" line="103"/>
+        <source>*.gpx</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="233"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2053"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="360"/>
-        <source>Changed description</source>
-        <translation>Beschreibung geändert</translation>
+        <location filename="../helpers/ISelectProjectDialog.ui" line="110"/>
+        <source>Database</source>
+        <translation>Datenbank</translation>
     </message>
+</context>
+<context>
+    <name>ISelectSaveAction</name>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="266"/>
-        <source>Length: -</source>
-        <translation>Länge: -</translation>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="20"/>
+        <source>Copy item...</source>
+        <translation>Element kopieren...</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="273"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="456"/>
-        <source>Time: %1 %2</source>
-        <translation>Gesamtzeit: %1 %2</translation>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="35"/>
+        <source>Replace existing item</source>
+        <translation>Ersetzt vorhandenes Element</translation>
     </message>
     <message>
-        <source>Time: %2 days %1</source>
-        <translation type="obsolete">Gesamtzeit: %2 days %1</translation>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="87"/>
+        <source>Add a clone</source>
+        <translation>Einen Klon hinzufügen</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="277"/>
-        <source>Time: -</source>
-        <translation>Gesamtzeit: -</translation>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="100"/>
+        <source>The clone's name will be appended with '_Clone'</source>
+        <translation>Der Name des Klones wird mit '_Klon' erweitert</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="283"/>
-        <source>Last time routed:<br/>%1</source>
-        <translation>Letzte Routenberechnung: <br/>%1</translation>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="171"/>
+        <source>Replace with:</source>
+        <translation>Ersetzen mit:</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="285"/>
-        <source>with %1</source>
-        <translation>mit %1</translation>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="42"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="68"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="130"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="140"/>
+        <source>TextLabel</source>
+        <translation>Bezeichnung</translation>
     </message>
     <message>
-        <source>Time: %1 </source>
-        <translation type="obsolete">Gesamtzeit: %1 </translation>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="61"/>
+        <source>Do not replace item</source>
+        <translation>Das Element nicht ersetzen</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="458"/>
-        <source>Distance: %1 %2</source>
-        <translation>Entfernung: %1 %2</translation>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="123"/>
+        <source>Use item:</source>
+        <translation>Element verwenden:</translation>
     </message>
     <message>
-        <source>Time: %1 Distance: %2</source>
-        <translation type="obsolete">Zeit: %1 Entfernung: %2</translation>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="116"/>
+        <source>And for all other items, too.</source>
+        <translation>Auch für alle anderen Elemente anwenden.</translation>
     </message>
+</context>
+<context>
+    <name>ISetupDatabase</name>
     <message>
-        <source>
-Turn: %1 Bearing: %2</source>
-        <translation type="obsolete">Abbiegen: %1 Richtung: %2</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="14"/>
+        <source>Add database...</source>
+        <translation>Datenbank hinzufügen...</translation>
     </message>
     <message>
-        <source>Calculation took %1 sec.</source>
-        <translation type="obsolete">Die Berechnung dauerte %1 Sek.</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="68"/>
+        <source>-</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="572"/>
-        <source>Changed route points.</source>
-        <translation>Geänderte Routenpukte.</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="25"/>
+        <source>Name</source>
+        <translation>Name</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="582"/>
-        <source>Archived</source>
-        <translation>Archiviert</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="252"/>
+        <source><p align="justify"><span style=" font-weight:600;">Caution!</span> It is recommended to leave the password blank, as QMapShack will store it as plain text. If you don't give a password you will be asked for it on each startup.</p></source>
+        <translation><p align="justify"><span style=" font-weight:600;">Achtung!</span> Es wird empfohlen, das Passwortfeld leer zulassen, da QMapShack dies als Klartext speichert. Wenn Sie kein Passwort vergeben, werden Sie bei jedem Start danach gefragt.</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="586"/>
-        <source>Available</source>
-        <translation>Verfügbar</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="239"/>
+        <source>Do not use a password.</source>
+        <translation>Kein Passwort benutzen.</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="590"/>
-        <source>Not Available</source>
-        <translation>Nicht verfügbar</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="153"/>
+        <source>SQLite</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
-        <source>Warning...</source>
-        <translation>Warnung...</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="115"/>
+        <source>MySQL</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
-        <source>This is a typ file with unknown polygon encoding. Please report!</source>
-        <translation>Dieser Dateityp hat eine unbekannte Polygon Kodierung. Bitte mitteilen!</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="181"/>
+        <source>Server</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
-        <source>This is a typ file with unknown polyline encoding. Please report!</source>
-        <translation>Dieser Dateityp hat eine unbekannte Polyline Kodierung. Bitte mitteilen!</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="193"/>
+        <source>Port</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="345"/>
-        <source>Initial version.</source>
-        <translation>Erstversion.</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="206"/>
+        <source>00000</source>
+        <translation></translation>
     </message>
     <message>
-        <source>This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press'Ok'.</source>
-        <translation type="obsolete">Diese Element ist vermutlich schreibgeschützt, da nicht mit QMapShack erstellt. Normalerweise sollten importierte Daten nicht geändert werden. Wenn doch, drücken Sie 'OK'.</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="215"/>
+        <source>User</source>
+        <translation>Benutzer</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="453"/>
-        <source><h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press 'Ok'.</source>
-        <translation><h3>%1</h3> Diese Element ist vermutlich schreibgeschützt, da nicht mit QMapShack erstellt. Normalerweise sollten importierte Daten nicht geändert werden. Wenn doch, drücken Sie 'OK'.</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="225"/>
+        <source>Password</source>
+        <translation>Passwort</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="454"/>
-        <source>Read Only Mode...</source>
-        <translation>Schreibgeschützt...</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="275"/>
+        <source><b>Port:</b> Leave the port field empty to use the default port.</source>
+        <translation><b>Port:</b> Um den vorgegebenen Port zu nutzen, lassen Sie das Port-Feld leer.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="615"/>
-        <source><h4>Comment:</h4></source>
-        <translation><h4>Kommentar:</h4></translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="61"/>
+        <source>File:</source>
+        <translation>Datei:</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="618"/>
-        <source><p>--- no comment ---</p></source>
-        <translation><p>--- kein ---</p></translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="75"/>
+        <source>Add new database.</source>
+        <translation>Fügt eine neue Datenbank hinzu.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="601"/>
-        <location filename="../gis/IGisItem.cpp" line="660"/>
-        <source><h4>Description:</h4></source>
-        <translation><h4>Beschreibung:</h4></translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="78"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="92"/>
+        <source>...</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="42"/>
-        <source>[no name]</source>
-        <translation>[kein Name]</translation>
+        <location filename="../gis/db/ISetupDatabase.ui" line="89"/>
+        <source>Open existing database.</source>
+        <translation>Öffnet eine vorhandene Datenbank.</translation>
     </message>
+</context>
+<context>
+    <name>ISetupFolder</name>
     <message>
-        <source><h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press'Ok'.</source>
-        <translation type="vanished"><h3>%1</h3> Dieses Element ist vermutlich schreibgeschützt, da nicht mit QMapShack erstellt. Normalerweise sollten importierte Daten nicht geändert werden. Wenn doch, drücken Sie 'OK'.</translation>
+        <location filename="../gis/db/ISetupFolder.ui" line="14"/>
+        <source>Database Folder...</source>
+        <translation>Datenbankordner...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="604"/>
-        <location filename="../gis/IGisItem.cpp" line="663"/>
-        <source><p>--- no description ---</p></source>
-        <translation><p>--- keine ---</p></translation>
+        <location filename="../gis/db/ISetupFolder.ui" line="20"/>
+        <source>Folder name</source>
+        <translation>Ordnername</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="629"/>
-        <location filename="../gis/IGisItem.cpp" line="674"/>
-        <source><h4>Links:</h4></source>
-        <translation><h4>Verknüpfungen:</h4></translation>
+        <location filename="../gis/db/ISetupFolder.ui" line="30"/>
+        <source>Group</source>
+        <translation>Gruppe</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="632"/>
-        <location filename="../gis/IGisItem.cpp" line="677"/>
-        <source><p>--- no links ---</p></source>
-        <translation><p>--- keine ---</p></translation>
+        <location filename="../gis/db/ISetupFolder.ui" line="41"/>
+        <source>Project</source>
+        <translation>Projekt</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1245"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1264"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1340"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1399"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1578"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
-        <source>Enter new track name.</source>
-        <translation>Geben Sie einen neuen Namen für den Track ein.</translation>
+        <location filename="../gis/db/ISetupFolder.ui" line="55"/>
+        <source>Other</source>
+        <translation>Sonstige</translation>
     </message>
+</context>
+<context>
+    <name>ISetupNewWpt</name>
     <message>
-        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
-        <source>Enter new area name.</source>
-        <translation>Geben Sie einen neuen Namen für das Gebiet ein.</translation>
+        <location filename="../gis/wpt/ISetupNewWpt.ui" line="14"/>
+        <source>New Waypoint...</source>
+        <translation>Neuer Wegpunkt...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderDatabase.cpp" line="28"/>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="30"/>
-        <source>All your data grouped by folders.</source>
-        <translation>Alle Daten nach Ordnern gruppiert.</translation>
+        <location filename="../gis/wpt/ISetupNewWpt.ui" line="22"/>
+        <source>Symbol</source>
+        <translation>Symbol</translation>
     </message>
     <message>
-        <source>Database</source>
-        <translation type="obsolete">Datenbank</translation>
+        <location filename="../gis/wpt/ISetupNewWpt.ui" line="29"/>
+        <source>...</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="66"/>
-        <location filename="../gis/db/CLostFoundProject.cpp" line="39"/>
-        <source>Lost & Found</source>
-        <translation>Verloren & Gefunden</translation>
+        <location filename="../gis/wpt/ISetupNewWpt.ui" line="39"/>
+        <source>Position</source>
+        <translation>Position</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="61"/>
-        <source>Lost & Found (%1)</source>
-        <translation>Verloren & Gefunden (%1)</translation>
+        <location filename="../gis/wpt/ISetupNewWpt.ui" line="49"/>
+        <source>Name</source>
+        <translation>Name</translation>
     </message>
     <message>
-        <location filename="../qlgt/converter.cpp" line="198"/>
-        <source>Copy flag information from QLandkarte GT track</source>
-        <translation>Kopiert das Informationsflag aus dem QLandkarte GT Track</translation>
+        <location filename="../gis/wpt/ISetupNewWpt.ui" line="59"/>
+        <source>Bad position format. Must be: 
+"[N|S] ddd mm.sss [W|E] ddd mm.sss"
+or
+"[N|S] ddd.ddd [W|E] ddd.ddd"</source>
+        <translation>Falsches Positionsformat. Muss entweder 
+"[N|S] ddd mm.sss [W|E] ddd mm.sss"
+oder
+"[N|S] ddd.ddd [W|E] ddd.ddd"
+sein</translation>
     </message>
+</context>
+<context>
+    <name>ISetupWorkspace</name>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="163"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="217"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="264"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="290"/>
-        <source>Corrupt track ...</source>
-        <translation>Beschädigter Track ...</translation>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="14"/>
+        <source>Setup workspace...</source>
+        <translation>Arbeitsplatz konfigurieren...</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="163"/>
-        <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
-        <translation>Anzahl der Trackpunkte entspricht nicht der Anzahl der Trackpunkte der Trainingsdaten.</translation>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="35"/>
+        <source>save workspace on exit, and every</source>
+        <translation>Arbeitsplatz beim Beenden speichern, und alle</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="217"/>
-        <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
-        <translation>Anzahl der Trackpunkte entspricht nicht der Anzahl der erweiterten Trackpunkte.</translation>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="45"/>
+        <source>minutes</source>
+        <translation>Minuten</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="264"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="290"/>
-        <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
-        <translation>Anzahl der Trackpunkte entspricht nicht der Anzahl der ausgeblendeten Trackpunkte.</translation>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="56"/>
+        <source>listen for database changes from other instances of QMapShack. On port</source>
+        <translation>lauscht nach Datenbankänderungen anderer QMapShack Instanzen. Auf Port</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="106"/>
-        <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
-        <translation>Punkte ausblenden mit dem Douglas-Peuker Algorithmus (%1 %2)</translation>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="63"/>
+        <source>00000</source>
+        <translation></translation>
     </message>
+</context>
+<context>
+    <name>ITextEditWidget</name>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="141"/>
-        <source>Hide points with invalid coordinates at the beginning of the track</source>
-        <translation>Punkte mit ungültigen Koordinaten wurden ausgeblendet.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="14"/>
+        <source>Edit text...</source>
+        <translation>Text bearbeiten...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="157"/>
-        <source>Reset all hidden track points to visible</source>
-        <translation>Alle verborgenen Trackpunkte zurücksetzen</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="25"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="38"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="51"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="64"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="77"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="97"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="110"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="123"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="136"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="169"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="182"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="195"/>
+        <location filename="../widgets/ITextEditWidget.ui" line="208"/>
+        <source>...</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="191"/>
-        <source>Permanently removed all hidden track points</source>
-        <translation>Alle verborgenen Trackpunkte wurden dauerhaft entfernt</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="256"/>
+        <source>Undo</source>
+        <translation>Rückgängig</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="241"/>
-        <source>Smoothed profile with a Median filter of size %1</source>
-        <translation>Mit einem Median-Filter der Größe %1 geglättetes Profil</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="259"/>
+        <source>Ctrl+Z</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../widgets/ITextEditWidget.ui" line="268"/>
+        <source>Redo</source>
+        <translation>Wiederherstellen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="277"/>
-        <source>Replaced elevation data with data from DEM files.</source>
-        <translation>Höhendaten durch Daten von DEM Dateien ersetzt.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="271"/>
+        <source>Ctrl+Shift+Z</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="300"/>
-        <source>Offset elevation data by %1%2.</source>
-        <translation>Versatz der Höhendaten um %1 %2.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="280"/>
+        <source>Cut</source>
+        <translation>Ausschneiden</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="319"/>
-        <source>Changed start of track to %1.</source>
-        <translation>Trackanfang auf %1 verschoben.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="283"/>
+        <source>Ctrl+X</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="338"/>
-        <source>Remove timestamps.</source>
-        <translation>Zeitstempel entfernt.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="292"/>
+        <source>Copy</source>
+        <translation>Kopieren</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="361"/>
-        <source>Set artificial timestamps with delta of %1 sec.</source>
-        <translation>Künstliche Zeitstempel mit einem Abstand von %1 Sek. gesetzt.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="295"/>
+        <source>Ctrl+C</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="394"/>
-        <source>Changed speed to %1%2.</source>
-        <translation>Geschwindigkeit auf %1 %2 geändert.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="304"/>
+        <source>Paste</source>
+        <translation>Einfügen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1098"/>
-        <source>Delete project...</source>
-        <translation>Projekt löschen...</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="307"/>
+        <source>Ctrl+V</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1098"/>
-        <source>Do you really want to delete %1?</source>
-        <translation>Sind Sie sicher, dass sie %1? löschen wollen?</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="319"/>
+        <source>Align Left</source>
+        <translation>Linksbündig</translation>
     </message>
     <message>
-        <source>Do you really want to delete %1</source>
-        <translation type="obsolete">Sind Sie sicher, dass sie %1 löschen wollen?</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="322"/>
+        <source>Ctrl+L</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
-        <location filename="../gis/tnv/serialization.cpp" line="211"/>
-        <location filename="../gis/tnv/serialization.cpp" line="347"/>
-        <location filename="../gis/tnv/serialization.cpp" line="376"/>
-        <location filename="../gis/tnv/serialization.cpp" line="387"/>
-        <location filename="../gis/tnv/serialization.cpp" line="420"/>
-        <location filename="../gis/tnv/serialization.cpp" line="560"/>
-        <location filename="../gis/tnv/serialization.cpp" line="588"/>
-        <location filename="../gis/tnv/serialization.cpp" line="599"/>
-        <location filename="../gis/tnv/serialization.cpp" line="617"/>
-        <location filename="../gis/tnv/serialization.cpp" line="645"/>
-        <location filename="../gis/tnv/serialization.cpp" line="719"/>
-        <source>Error...</source>
-        <translation>Fehler...</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="334"/>
+        <source>Align Right</source>
+        <translation>Rechtsbündig</translation>
     </message>
     <message>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
-        <location filename="../gis/tnv/serialization.cpp" line="211"/>
-        <location filename="../gis/tnv/serialization.cpp" line="347"/>
-        <location filename="../gis/tnv/serialization.cpp" line="560"/>
-        <source>Failed to open %1.</source>
-        <translation>Die Datei %1 konnte nicht geöffnet werden.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="337"/>
+        <source>Ctrl+R</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/tnv/serialization.cpp" line="376"/>
-        <location filename="../gis/tnv/serialization.cpp" line="387"/>
-        <location filename="../gis/tnv/serialization.cpp" line="588"/>
-        <location filename="../gis/tnv/serialization.cpp" line="599"/>
-        <source>Only support lon/lat WGS 84 format.</source>
-        <translation>Es wird nur lon/lat WGS 84 als Format unterstützt.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="349"/>
+        <source>Align Center</source>
+        <translation>Zentriert</translation>
     </message>
     <message>
-        <location filename="../gis/tnv/serialization.cpp" line="420"/>
-        <location filename="../gis/tnv/serialization.cpp" line="617"/>
-        <location filename="../gis/tnv/serialization.cpp" line="645"/>
-        <location filename="../gis/tnv/serialization.cpp" line="719"/>
-        <source>Failed to read data.</source>
-        <translation>Lesen der Daten fehlgeschlagen.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="352"/>
+        <source>Ctrl+E</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../device/CDeviceGarmin.cpp" line="204"/>
-        <source>Picture%1</source>
-        <translation>Bild %1</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="364"/>
+        <source>Align Block</source>
+        <translation>Blocksatz</translation>
     </message>
     <message>
-        <location filename="../device/IDevice.cpp" line="204"/>
-        <source>There is another project with the same name. If you press 'ok' it will be removed and replaced.</source>
-        <translation>Es gibt schon ein Projekt mit dem selben Namen. Wenn Sie 'ok' drücken wird dieses entfernt und ersetzt.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="367"/>
+        <source>Ctrl+J</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
-        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
-        <source>Enter new route name.</source>
-        <translation>Geben Sie einen neuen Namen für die Route ein.</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="379"/>
+        <source>Underline</source>
+        <translation>Unterstreichen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="28"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="94"/>
-        <source>Foot</source>
-        <translation>Fußgänger</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="382"/>
+        <source>Ctrl+U</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="35"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="95"/>
-        <source>Bicycle</source>
-        <translation>Fahrrad</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="394"/>
+        <source>Bold</source>
+        <translation>Fett</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="42"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="96"/>
-        <source>Motor Bike</source>
-        <translation>Motorrad</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="397"/>
+        <source>Ctrl+B</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="49"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="97"/>
-        <source>Car</source>
-        <translation>Auto</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="409"/>
+        <source>Italic</source>
+        <translation>Kursiv</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="56"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="98"/>
-        <source>Cable Car</source>
-        <translation>Seilbahn</translation>
+        <location filename="../widgets/ITextEditWidget.ui" line="412"/>
+        <source>Ctrl+I</source>
+        <translation></translation>
     </message>
+</context>
+<context>
+    <name>ITimeZoneSetup</name>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="63"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="99"/>
-        <source>Swim</source>
-        <translation>Schwimmen</translation>
+        <location filename="../units/ITimeZoneSetup.ui" line="14"/>
+        <source>Setup Time Zone ...</source>
+        <translation>Zeitzone einstellen...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="70"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="100"/>
-        <source>Ship</source>
-        <translation>Schiff</translation>
+        <location filename="../units/ITimeZoneSetup.ui" line="22"/>
+        <source>UTC</source>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="77"/>
-        <source>Aeronautik</source>
-        <translation>Luftfahrt</translation>
+        <location filename="../units/ITimeZoneSetup.ui" line="32"/>
+        <source>Local</source>
+        <translation>Lokal</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="101"/>
-        <source>Aeronautics</source>
-        <translation>Aeronautik</translation>
+        <location filename="../units/ITimeZoneSetup.ui" line="42"/>
+        <source>Automatic</source>
+        <translation>Automatisch</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="210"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="254"/>
-        <source>Distance:</source>
-        <translation>Entfernung:</translation>
+        <location filename="../units/ITimeZoneSetup.ui" line="75"/>
+        <source>Print date/time in </source>
+        <translation>Datum/Uhrzeit in</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="212"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="276"/>
-        <source>Ascend:</source>
-        <translation>Anstieg:</translation>
+        <location filename="../units/ITimeZoneSetup.ui" line="82"/>
+        <source>long format, or</source>
+        <translation>langem Format, oder</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="214"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="298"/>
-        <source>Descend:</source>
-        <translation>Abstieg:</translation>
+        <location filename="../units/ITimeZoneSetup.ui" line="92"/>
+        <source>short format</source>
+        <translation>kurzem Format ausgeben</translation>
     </message>
+</context>
+<context>
+    <name>IToolShell</name>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="216"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="320"/>
-        <source>Speed Moving:</source>
-        <translation>Geschwindigkeit in Bewegung:</translation>
+        <location filename="../tool/IToolShell.cpp" line="45"/>
+        <source>Execution of external program `%1` failed: </source>
+        <translation>Ausführen des externen Programms `%1` ist fehlgeschlagen: </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="218"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="342"/>
-        <source>Speed Total:</source>
-        <translation>Geschwindigkeit insgesamt:</translation>
+        <location filename="../tool/IToolShell.cpp" line="49"/>
+        <source>Process cannot be started.
+</source>
+        <translation>Der Prozess konnte nicht gestartet werden.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="220"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="364"/>
-        <source>Time Moving:</source>
-        <translation>Zeit in Bewegung:</translation>
+        <location filename="../tool/IToolShell.cpp" line="50"/>
+        <source>Make sure the required packages are installed, `%1` exists and is executable.
+</source>
+        <translation>Stellen Sie sicher, dass die erforderlichen Pakete installiert sind, `%1` existiert und ist ausführbar.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="222"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="386"/>
-        <source>Time Total:</source>
-        <translation>Zeit insgesamt:</translation>
+        <location filename="../tool/IToolShell.cpp" line="54"/>
+        <source>External process crashed.
+</source>
+        <translation>Der externe Prozess ist abgestürzt.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="53"/>
-        <source>Progress</source>
-        <translation>Verlauf</translation>
+        <location filename="../tool/IToolShell.cpp" line="58"/>
+        <source>An unknown error occurred.
+</source>
+        <translation>Ein unbekannter Fehler ist aufgetreten.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="56"/>
-        <source>time</source>
-        <translation>Uhrzeit</translation>
+        <location filename="../tool/IToolShell.cpp" line="149"/>
+        <source>!!! failed !!!
+</source>
+        <translation>!!! fehlgeschlagen !!!</translation>
     </message>
+</context>
+<context>
+    <name>IUnit</name>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="57"/>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="82"/>
-        <source>distance [%1]</source>
-        <translation>Entfernung [%1]</translation>
+        <location filename="../units/IUnit.cpp" line="735"/>
+        <location filename="../units/IUnit.cpp" line="741"/>
+        <source>Error</source>
+        <translation>Fehler</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="57"/>
-        <source>Slope (directed)</source>
-        <translation>Neigung (mit Vorzeichen)</translation>
+        <location filename="../units/IUnit.cpp" line="735"/>
+        <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
+        <translation>Falsches Positionsformat. Muss entweder "[N|S] ddd mm.sss [W|E] ddd mm.sss" oder "[N|S] ddd.ddd [W|E] ddd.ddd" sein.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="62"/>
-        <source>Speed</source>
-        <translation>Geschwindigkeit</translation>
+        <location filename="../units/IUnit.cpp" line="741"/>
+        <source>Position values out of bounds. </source>
+        <translation>Position außerhalb der gültigen Werte.</translation>
     </message>
+</context>
+<context>
+    <name>IUnitsSetup</name>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="67"/>
-        <source>Elevation</source>
-        <translation>Höhe</translation>
+        <location filename="../units/IUnitsSetup.ui" line="14"/>
+        <source>Setup units...</source>
+        <translation>Einheiten einrichten...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="74"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="100"/>
-        <source>Heart Rate</source>
-        <translation>Pulsrate</translation>
+        <location filename="../units/IUnitsSetup.ui" line="38"/>
+        <source>Metric</source>
+        <translation>metrisch</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="79"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="105"/>
-        <source>Cadence</source>
-        <translation>Trittfrequenz</translation>
+        <location filename="../units/IUnitsSetup.ui" line="47"/>
+        <source><b>Note:</b> For some GUI elements changing the units will not take effect until you restart QMapShack.</source>
+        <translation><b>Anmerkung:</b> Das Ändern der Einheiten wird bei einigen GUI-Elementen erst nach einem Neustart von QMapShack wirksam.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="84"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="110"/>
-        <source>Air Temperature</source>
-        <translation>Lufttemperatur</translation>
+        <location filename="../units/IUnitsSetup.ui" line="31"/>
+        <source>Imperial</source>
+        <translation>imperial</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="89"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="115"/>
-        <source>Water Temperature</source>
-        <translation>Wassertemperatur</translation>
+        <location filename="../units/IUnitsSetup.ui" line="24"/>
+        <source>Nautic</source>
+        <translation>nautisch</translation>
     </message>
+</context>
+<context>
+    <name>IWptIconDialog</name>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="94"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="120"/>
-        <source>Depth</source>
-        <translation>Tiefe</translation>
+        <location filename="../helpers/IWptIconDialog.ui" line="14"/>
+        <source>Icons...</source>
+        <translation>Symbole...</translation>
     </message>
 </context>
 </TS>
diff --git a/src/locale/qmapshack_es.ts b/src/locale/qmapshack_es.ts
index ea968bb..08d8153 100644
--- a/src/locale/qmapshack_es.ts
+++ b/src/locale/qmapshack_es.ts
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.1" language="es_ES">
+<TS version="2.0" language="es_ES">
 <context>
     <name>CAbout</name>
     <message>
@@ -15,6 +15,109 @@
     </message>
 </context>
 <context>
+    <name>CActivityTrk</name>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="29"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="117"/>
+        <source>Foot</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="37"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="118"/>
+        <source>Bicycle</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="45"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="119"/>
+        <source>Motor Bike</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="53"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="120"/>
+        <source>Car</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="61"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="121"/>
+        <source>Cable Car</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="69"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="122"/>
+        <source>Swim</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="77"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="123"/>
+        <source>Ship</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="85"/>
+        <source>Aeronautik</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="93"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="125"/>
+        <source>Ski/Winter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="124"/>
+        <source>Aeronautics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="261"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="305"/>
+        <source>Distance:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="263"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="327"/>
+        <source>Ascend:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="265"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="349"/>
+        <source>Descend:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="267"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="371"/>
+        <source>Speed Moving:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="269"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="393"/>
+        <source>Speed Total:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="271"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="415"/>
+        <source>Time Moving:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="273"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="437"/>
+        <source>Time Total:</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CCanvas</name>
     <message>
         <source>Workspace %1</source>
@@ -27,6 +130,14 @@
     </message>
 </context>
 <context>
+    <name>CColorChooser</name>
+    <message>
+        <location filename="../widgets/CColorChooser.cpp" line="51"/>
+        <source>Esc.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CCommandProcessor</name>
     <message>
         <location filename="../helpers/CCommandProcessor.cpp" line="31"/>
@@ -60,14 +171,177 @@
     </message>
 </context>
 <context>
+    <name>CCreateRouteFromWpt</name>
+    <message>
+        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
+        <source>Edit name...</source>
+        <translation type="unfinished">Editar nombre...</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
+        <source>Enter new route name.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CDBFolderLostFound</name>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="30"/>
+        <source>All your data grouped by folders.</source>
+        <translation type="unfinished">Todos tus datos agrupados en carpetas.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="59"/>
+        <source>Lost & Found (%1)</source>
+        <translation type="unfinished">Objetos Perdidos (%1)</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="64"/>
+        <source>Lost & Found</source>
+        <translation type="unfinished">Objetos Perdidos</translation>
+    </message>
+</context>
+<context>
+    <name>CDBFolderMysql</name>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="32"/>
+        <source>All your data grouped by folders.</source>
+        <translation type="unfinished">Todos tus datos agrupados en carpetas.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="53"/>
+        <source>MySQL Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="56"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="60"/>
+        <source>Server: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="65"/>
+        <source> (No PW)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="73"/>
+        <source>Error: </source>
+        <translation type="unfinished">Error: </translation>
+    </message>
+</context>
+<context>
+    <name>CDBFolderSqlite</name>
+    <message>
+        <location filename="../gis/db/CDBFolderSqlite.cpp" line="28"/>
+        <source>All your data grouped by folders.</source>
+        <translation type="unfinished">Todos tus datos agrupados en carpetas.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderSqlite.cpp" line="46"/>
+        <source>SQLite Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderSqlite.cpp" line="56"/>
+        <source>File: </source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CDBItem</name>
+    <message>
+        <location filename="../gis/db/CDBItem.cpp" line="87"/>
+        <source>%1 min.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBItem.cpp" line="91"/>
+        <source>%1 h</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBItem.cpp" line="95"/>
+        <source>%1 days</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CDBProject</name>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="195"/>
+        <source>The item %1 has been changed by %2 (%3). 
+
+To solve this conflict you can create and save a clone, force your version or drop your version and take the one from the database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="201"/>
+        <source>Conflict with database...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="202"/>
+        <source>Clone && Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="203"/>
+        <source>Force Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="204"/>
+        <source>Take remote</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="507"/>
+        <source>Missing folder...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="508"/>
+        <source>Failed to save project. The folder has been deleted in the database.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="517"/>
+        <source>Save ...</source>
+        <translation type="unfinished">Guardar...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <source>Error</source>
+        <translation type="unfinished">Error</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <source>There was an unexpected database error:
+
+%1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="704"/>
+        <source>The project '%1' is about to update itself from the database. However there are changes not saved.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="705"/>
+        <source>Save changes?</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CDemList</name>
     <message>
-        <location filename="../dem/CDemList.cpp" line="145"/>
+        <location filename="../dem/CDemList.cpp" line="198"/>
         <source>Deactivate</source>
         <translation>Desactivar</translation>
     </message>
     <message>
-        <location filename="../dem/CDemList.cpp" line="145"/>
+        <location filename="../dem/CDemList.cpp" line="198"/>
         <source>Activate</source>
         <translation>Activar</translation>
     </message>
@@ -89,7 +363,7 @@
     <name>CDemPropSetup</name>
     <message>
         <source><b>Grade %1</b></source>
-        <translation type="vanished">Nivel %1</translation>
+        <translation type="obsolete">Nivel %1</translation>
     </message>
 </context>
 <context>
@@ -97,8 +371,8 @@
     <message>
         <location filename="../dem/CDemVRT.cpp" line="44"/>
         <location filename="../dem/CDemVRT.cpp" line="52"/>
-        <location filename="../dem/CDemVRT.cpp" line="62"/>
-        <location filename="../dem/CDemVRT.cpp" line="91"/>
+        <location filename="../dem/CDemVRT.cpp" line="61"/>
+        <location filename="../dem/CDemVRT.cpp" line="90"/>
         <source>Error...</source>
         <translation>Error...</translation>
     </message>
@@ -109,12 +383,12 @@
     </message>
     <message>
         <location filename="../dem/CDemVRT.cpp" line="52"/>
-        <location filename="../dem/CDemVRT.cpp" line="62"/>
+        <location filename="../dem/CDemVRT.cpp" line="61"/>
         <source>DEM must have one band with 16bit or 32bit data.</source>
         <translation>El DEM debe tener una sola banda con datos de 16 o 32 bits.</translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="91"/>
+        <location filename="../dem/CDemVRT.cpp" line="90"/>
         <source>No georeference information found.</source>
         <translation>No se encontró información de georreferenciación.</translation>
     </message>
@@ -146,14 +420,12 @@
 <context>
     <name>CDetailsOvlArea</name>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="134"/>
         <source>Edit name...</source>
-        <translation>Editar nombre...</translation>
+        <translation type="obsolete">Editar nombre...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="134"/>
         <source>Enter new area name.</source>
-        <translation type="unfinished">Introduzca el nombre del nuevo área.</translation>
+        <translation type="obsolete">Introduzca el nombre del nuevo área.</translation>
     </message>
     <message>
         <source>Enter new waypoint name.</source>
@@ -179,13 +451,13 @@
 <context>
     <name>CDetailsPrj</name>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="247"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="687"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="270"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="738"/>
         <source>none</source>
         <translation>ninguna</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="320"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="343"/>
         <source>Build diary...</source>
         <translation>Creando diario...</translation>
     </message>
@@ -194,97 +466,97 @@
         <translation type="obsolete">Cancelar</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="395"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="446"/>
         <source><h2>Waypoints</h2></source>
         <translation>Waypoints</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="402"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="428"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="532"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="622"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="652"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="453"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="479"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="583"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="673"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="703"/>
         <source>Info</source>
         <translation>Información</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="403"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="429"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="533"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="623"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="653"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="454"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="480"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="584"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="674"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="704"/>
         <source>Comment</source>
         <translation>Comentario</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="421"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="472"/>
         <source><h2>Tracks</h2></source>
         <translation>Tracks</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="615"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="666"/>
         <source><h2>Areas</h2></source>
         <translation>Áreas</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="101"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="126"/>
         <source>You want to sort waypoints along a track, but you switched off track and waypoint correlation. Do you want to switch it on again?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="102"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="127"/>
         <source>Correlation...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="375"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="398"/>
         <source><b>Summary over all tracks in project</b><br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="551"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="602"/>
         <source>distance: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="553"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="604"/>
         <source>ascent: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="555"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="606"/>
         <source>descend: %1%2</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="645"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="696"/>
         <source><h2>Routes</h2></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="673"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="700"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="724"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="751"/>
         <source>Edit name...</source>
         <translation>Editar nombre...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="673"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="700"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="724"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="751"/>
         <source>Enter new project name.</source>
         <translation>Introducir nuevo nombre de proyecto.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="682"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="733"/>
         <source>Edit keywords...</source>
         <translation>Editar etiquetas...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="682"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="733"/>
         <source>Enter keywords.</source>
         <translation>Introducir etiquetas.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="816"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="882"/>
         <source>Print Diary</source>
         <translation>Imprimir Diario</translation>
     </message>
@@ -292,14 +564,8 @@
 <context>
     <name>CDetailsRte</name>
     <message>
-        <location filename="../gis/rte/CDetailsRte.cpp" line="119"/>
         <source>Edit name...</source>
-        <translation type="unfinished">Editar nombre...</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/CDetailsRte.cpp" line="119"/>
-        <source>Enter new route name.</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Editar nombre...</translation>
     </message>
 </context>
 <context>
@@ -321,62 +587,70 @@
         <translation type="obsolete">distancia. [%1]</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="409"/>
-        <source>Solid color</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="112"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="182"/>
         <source>Reduce visible track points</source>
         <translation>Reducir puntos visibles del track</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="128"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="185"/>
         <source>Change elevation of track points</source>
         <translation>Cambiar elevación de puntos del track</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="141"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="188"/>
         <source>Change timestamp of track points</source>
         <translation>Cambiar fecha/hora de puntos del track</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="154"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="191"/>
+        <source>Modify track points' extensions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="194"/>
         <source>Cut track into pieces</source>
         <translation>Dividir track en partes</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="309"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="318"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="321"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="327"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="346"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="348"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="411"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="419"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="422"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="427"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="441"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="443"/>
         <source>%1 %2</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="603"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="508"/>
+        <source>Color</source>
+        <translation type="unfinished">Color</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="509"/>
+        <source>Activity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Edit name...</source>
-        <translation type="unfinished">Editar nombre...</translation>
+        <translation type="obsolete">Editar nombre...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="603"/>
         <source>Enter new track name.</source>
-        <translation type="unfinished">Introduzca el nombre del nuevo track.</translation>
+        <translation type="obsolete">Introduzca el nombre del nuevo track.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="655"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="742"/>
         <source>Reset activities...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="655"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="742"/>
         <source>This will remove all activities from the track. Proceed?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="661"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="748"/>
         <source>None</source>
         <translation type="unfinished"></translation>
     </message>
@@ -416,22 +690,33 @@
         <translation type="obsolete"><p>---sin descripción---</p></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="134"/>
         <source>Edit name...</source>
-        <translation>Editar nombre...</translation>
+        <translation type="obsolete">Editar nombre...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="134"/>
         <source>Enter new waypoint name.</source>
-        <translation>Introducir el nombre del nuevo waypoint.</translation>
+        <translation type="obsolete">Introducir el nombre del nuevo waypoint.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="153"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="166"/>
         <source>Enter new proximity range.</source>
         <translation>Introduzca el nuevo valor de proximidad.</translation>
     </message>
 </context>
 <context>
+    <name>CDeviceGarmin</name>
+    <message>
+        <location filename="../device/CDeviceGarmin.cpp" line="228"/>
+        <source>Picture%1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/serialization.cpp" line="1039"/>
+        <source>Unknown</source>
+        <translation type="unfinished">Desconocido</translation>
+    </message>
+</context>
+<context>
     <name>CElevationDialog</name>
     <message>
         <location filename="../helpers/CElevationDialog.cpp" line="83"/>
@@ -440,75 +725,736 @@
     </message>
 </context>
 <context>
-    <name>CGisListDB</name>
+    <name>CFilterDeleteExtension</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="75"/>
-        <source>Add Database</source>
-        <translation>Añadir Base de Datos</translation>
+        <location filename="../gis/trk/filter/CFilterDeleteExtension.cpp" line="61"/>
+        <source>No extension available</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitCrcState</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="78"/>
-        <source>Add Folder</source>
-        <translation>Añadir carpeta</translation>
+        <location filename="../gis/fit/decoder/CFitCrcState.cpp" line="32"/>
+        <source>FIT decoding error : invalid CRC.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitDecoder</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="79"/>
-        <source>Delete Folder</source>
-        <translation>Eliminar Carpeta</translation>
+        <location filename="../gis/fit/decoder/CFitDecoder.cpp" line="116"/>
+        <source>FIT decoding error: unexpected end of file %1.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitFieldBuilder</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="82"/>
-        <location filename="../gis/CGisListDB.cpp" line="92"/>
-        <source>Delete Item</source>
-        <translation>Eliminar Elemento</translation>
+        <location filename="../gis/fit/decoder/CFitFieldBuilder.cpp" line="70"/>
+        <source>FIT decoding error: unknown base type %1.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitHeaderState</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="86"/>
-        <source>Remove Database</source>
-        <translation>Quitar Base de Datos</translation>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="70"/>
+        <source>FIT decoding error: protocol %1 version not supported.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="89"/>
-        <source>Empty</source>
-        <translation>Vacío</translation>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="121"/>
+        <source>FIT decoding error: file header signature mismatch. File is not FIT.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitProject</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="281"/>
-        <source>Remove database...</source>
-        <translation>Quitar Base de Datos...</translation>
+        <location filename="../gis/fit/CFitProject.cpp" line="44"/>
+        <location filename="../gis/fit/CFitProject.cpp" line="62"/>
+        <source>Failed to load file %1...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="281"/>
-        <source>Do you really want to remove '%1' from the list?</source>
+        <location filename="../gis/fit/CFitProject.cpp" line="86"/>
+        <source>Failed to open FIT file %1.</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitRecordContentState</name>
     <message>
-        <source>Do you realy want to remove '%1' from the list?</source>
-        <translation type="vanished">¿Desea realmente quitar '%1' de la lista?</translation>
+        <location filename="../gis/fit/decoder/CFitRecordContentState.cpp" line="66"/>
+        <source>FIT decoding error: architecture %1 not supported.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="322"/>
-        <source>Delete database folder...</source>
-        <translation>Eliminar Carpeta de la Base de Datos...</translation>
+        <location filename="../gis/fit/decoder/CFitRecordContentState.cpp" line="87"/>
+        <source>FIT decoding error: invalid offset %1 for state 'record content'</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CGarminTyp</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="322"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
+        <source>Warning...</source>
+        <translation type="unfinished">Aviso...</translation>
+    </message>
+    <message>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
+        <source>This is a typ file with unknown polygon encoding. Please report!</source>
+        <translation type="unfinished">Este es un fichero TYP con una codificación de polígonos desconocida. ¡Por favor repórtelo!</translation>
+    </message>
+    <message>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
+        <source>This is a typ file with unknown polyline encoding. Please report!</source>
+        <translation type="unfinished">Este es un fichero TYP con una codificación de polilíneas desconocida. ¡Por favor repórtelo!</translation>
+    </message>
+</context>
+<context>
+    <name>CGisItemOvlArea</name>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="36"/>
+        <source>thin</source>
+        <translation type="unfinished">fino</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="37"/>
+        <source>normal</source>
+        <translation type="unfinished">normal</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="38"/>
+        <source>wide</source>
+        <translation type="unfinished">ancho</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="39"/>
+        <source>strong</source>
+        <translation type="unfinished">intenso</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="78"/>
+        <source>_Clone</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="380"/>
+        <source>Area: %1%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="442"/>
+        <source>Changed area shape.</source>
+        <translation type="unfinished">Se cambió la forma del área.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="450"/>
+        <source>Changed name.</source>
+        <translation type="unfinished">Se cambió el nombre.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="456"/>
+        <source>Changed border width.</source>
+        <translation type="unfinished">Se cambió la anchura del borde.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="462"/>
+        <source>Changed fill pattern.</source>
+        <translation type="unfinished">Se cambió el patró de relleno.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="468"/>
+        <source>Changed opacity.</source>
+        <translation type="unfinished">Se cambió la opacidad.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="474"/>
+        <source>Changed comment.</source>
+        <translation type="unfinished">Se cambió el comentario.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="480"/>
+        <source>Changed description.</source>
+        <translation type="unfinished">Se cambió la descripción.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="486"/>
+        <source>Changed links</source>
+        <translation type="unfinished">Se cambió el enlace</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="497"/>
+        <source>Changed color</source>
+        <translation type="unfinished">Se cambió el color</translation>
+    </message>
+</context>
+<context>
+    <name>CGisItemRte</name>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="63"/>
+        <source>_Clone</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="249"/>
+        <source>Changed name.</source>
+        <translation type="unfinished">Se cambió el nombre.</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="255"/>
+        <source>Changed comment</source>
+        <translation type="unfinished">Se cambió el comentario</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="261"/>
+        <source>Changed description</source>
+        <translation type="unfinished">Se cambió la descripción</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="267"/>
+        <source>Changed links</source>
+        <translation type="unfinished">Se cambió el enlace</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="285"/>
+        <source>Length: %1 %2</source>
+        <translation type="unfinished">Longitud: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="289"/>
+        <source>Length: -</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="296"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="479"/>
+        <source>Time: %1 %2</source>
+        <translation type="unfinished">Tiempo: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="300"/>
+        <source>Time: -</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="306"/>
+        <source>Last time routed:<br/>%1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="308"/>
+        <source>with %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="481"/>
+        <source>Distance: %1 %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="595"/>
+        <source>Changed route points.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CGisItemTrk</name>
+    <message>
+        <location filename="../gis/fit/serialization.cpp" line="188"/>
+        <source>FIT file %1 contains no GPS data.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="211"/>
+        <location filename="../gis/tnv/serialization.cpp" line="347"/>
+        <location filename="../gis/tnv/serialization.cpp" line="376"/>
+        <location filename="../gis/tnv/serialization.cpp" line="387"/>
+        <location filename="../gis/tnv/serialization.cpp" line="420"/>
+        <source>Error...</source>
+        <translation type="unfinished">Error...</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="211"/>
+        <location filename="../gis/tnv/serialization.cpp" line="347"/>
+        <source>Failed to open %1.</source>
+        <translation type="unfinished">Fallo al abrir %1.</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="376"/>
+        <location filename="../gis/tnv/serialization.cpp" line="387"/>
+        <source>Only support lon/lat WGS 84 format.</source>
+        <translation type="unfinished">Solamente soporta formato lon/lat WGS84.</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="420"/>
+        <source>Failed to read data.</source>
+        <translation type="unfinished">Fallo al leer los datos.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="124"/>
+        <source>_Clone</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="291"/>
+        <source>Changed trackpoints, sacrificed all previous data.</source>
+        <translation type="unfinished">Se cambiaron los puntos del track, y descartados todos los datos previos.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="394"/>
+        <source>Length: %1 %2</source>
+        <translation type="unfinished">Longitud: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="401"/>
+        <source>, %1%2 %3, %4%5 %6</source>
+        <translation type="unfinished">, %1%2 %3, %4%5 %6</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="409"/>
+        <source>Time: %1</source>
+        <translation type="unfinished">Tiempo: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="412"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="422"/>
+        <source>, Speed: %1 %2</source>
+        <translation type="unfinished">, Velocidad: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="419"/>
+        <source>Moving: %1</source>
+        <translation type="unfinished">En movimiento: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="428"/>
+        <source>Start: %1</source>
+        <translation type="unfinished">Comienzo: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="433"/>
+        <source>End: %1</source>
+        <translation type="unfinished">Final: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="437"/>
+        <source>Points: %1 (%2)</source>
+        <translation type="unfinished">Puntos: %1 (%2)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="546"/>
+        <source>Ele.: %1 %2</source>
+        <translation type="unfinished">Altitud: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="549"/>
+        <source> slope: %1%3 (%2%)</source>
+        <translation type="unfinished"> pendiente: %1%3 (%2%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="554"/>
+        <source> speed: %1%2</source>
+        <translation type="unfinished"> velocidad: %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="582"/>
+        <source>... and %1 tags not displayed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="594"/>
+        <source>Ascend: %1%2 (%3%)</source>
+        <translation type="unfinished">Ascenso: %1%2 (%3%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="598"/>
+        <source>Ascend: - (-)</source>
+        <translation type="unfinished">Ascenso: - (-)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="604"/>
+        <source> Descend: %1%2 (%3%)</source>
+        <translation type="unfinished"> Descenso: %1%2 (%3%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="608"/>
+        <source> Descend: - (-) </source>
+        <translation type="unfinished"> Descenso: - (-) </translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="615"/>
+        <source>Dist.: %1%2 (%3%)</source>
+        <translation type="unfinished">Distancia: %1%2 (%3%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="619"/>
+        <source>Dist.: - (-)</source>
+        <translation type="unfinished">Dist.: - (-)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="625"/>
+        <source> Moving: %1%2 (%3%)</source>
+        <translation type="unfinished"> En movimiento: %1%2 (%3%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="629"/>
+        <source> Moving: - (-) </source>
+        <translation type="unfinished"> En movimiento: - (-) </translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="648"/>
+        <source>Ascend: %1%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="653"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="670"/>
+        <source>, %1%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="658"/>
+        <source>Ascend: -</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="665"/>
+        <source> Descend: %1%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="675"/>
+        <source>Descend: -</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="681"/>
+        <source>Dist.: %1%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="686"/>
+        <source> Time: %1%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <source>Edit name...</source>
+        <translation type="unfinished">Editar nombre...</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <source>Enter new track name.</source>
+        <translation type="unfinished">Introduzca el nombre del nuevo track.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1331"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1355"/>
+        <source>Permanently removed points %1..%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1537"/>
+        <source>Hide points.</source>
+        <translation type="unfinished">Ocultar puntos.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1577"/>
+        <source>Show points.</source>
+        <translation type="unfinished">Mostrar puntos.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2143"/>
+        <source>Changed name</source>
+        <translation type="unfinished">Se cambió el nombre</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2149"/>
+        <source>Changed comment</source>
+        <translation type="unfinished">Se cambió el comentario</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2155"/>
+        <source>Changed description</source>
+        <translation type="unfinished">Se cambió la descripción</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2161"/>
+        <source>Changed links</source>
+        <translation type="unfinished">Se cambió el enlace</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2188"/>
+        <source>Changed activity to '%1' for complete track.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2262"/>
+        <source>Changed activity to '%1' for range(%2..%3).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="108"/>
+        <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
+        <translation type="unfinished">Ocultar puntos con algoritmo Douglas Peuker (%1%2)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="143"/>
+        <source>Hide points with invalid coordinates at the beginning of the track</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="159"/>
+        <source>Reset all hidden track points to visible</source>
+        <translation type="unfinished">Restaurados todos los puntos a visible</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="193"/>
+        <source>Permanently removed all hidden track points</source>
+        <translation type="unfinished">Elminados definitivamente todos los puntos ocultos del track</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="243"/>
+        <source>Smoothed profile with a Median filter of size %1</source>
+        <translation type="unfinished">Pefil suavizado con Mediana de %1 puntos</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="279"/>
+        <source>Replaced elevation data with data from DEM files.</source>
+        <translation type="unfinished">Datos de elevación sustituidos por valores de fichero DEM.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="302"/>
+        <source>Offset elevation data by %1%2.</source>
+        <translation type="unfinished">Elevación desplazada %1%2.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="321"/>
+        <source>Changed start of track to %1.</source>
+        <translation type="unfinished">Cambiado el inicio de track a %1.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="340"/>
+        <source>Remove timestamps.</source>
+        <translation type="unfinished">Eliminadas las marcas de tiempo.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="363"/>
+        <source>Set artificial timestamps with delta of %1 sec.</source>
+        <translation type="unfinished">Marcas de tiempo ficticias con incremento de %1 sec.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="396"/>
+        <source>Changed speed to %1%2.</source>
+        <translation type="unfinished">Velocidad modificada a %1%2.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="415"/>
+        <source>%1 (Segment %2)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="438"/>
+        <source>Removed extension %1 from all Track Points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/converter.cpp" line="198"/>
+        <source>Copy flag information from QLandkarte GT track</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CGisItemWpt</name>
+    <message>
+        <location filename="../gis/gpx/serialization.cpp" line="588"/>
+        <source>Archived</source>
+        <translation type="unfinished">Archivado</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/serialization.cpp" line="592"/>
+        <source>Available</source>
+        <translation type="unfinished">Disponible</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/serialization.cpp" line="596"/>
+        <source>Not Available</source>
+        <translation type="unfinished">No Disponible</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="102"/>
+        <source>_Clone</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="267"/>
+        <source>Elevation: %1 %2</source>
+        <translation type="unfinished">Altitud: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="278"/>
+        <source>Proximity: %1 %2</source>
+        <translation type="unfinished">Proximidad: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="352"/>
+        <source>Changed name</source>
+        <translation type="unfinished">Se cambió el nombre</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="362"/>
+        <source>Changed position</source>
+        <translation type="unfinished">Se cambió la posición</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="368"/>
+        <source>Changed elevation</source>
+        <translation type="unfinished">Se cambió la altitud</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="374"/>
+        <source>Changed proximity</source>
+        <translation type="unfinished">Se cambió la proximidad</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="388"/>
+        <source>Changed icon</source>
+        <translation type="unfinished">Se cambió el icono</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="394"/>
+        <source>Changed comment</source>
+        <translation type="unfinished">Se cambió el comentario</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="400"/>
+        <source>Changed description</source>
+        <translation type="unfinished">Se cambió la descripción</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="406"/>
+        <source>Changed links</source>
+        <translation type="unfinished">Se cambió el enlace</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="412"/>
+        <source>Changed images</source>
+        <translation type="unfinished">Se cambió la imagen</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="418"/>
+        <source>Add image</source>
+        <translation type="unfinished">Añadir Imagen</translation>
+    </message>
+</context>
+<context>
+    <name>CGisListDB</name>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="81"/>
+        <source>Due to changes in the database system QMapShack forgot about the filename of your database '%1'. You have to select it again in the next step.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="82"/>
+        <source>Select database file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="115"/>
+        <source>Add Database</source>
+        <translation>Añadir Base de Datos</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="118"/>
+        <source>Add Folder</source>
+        <translation>Añadir carpeta</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="119"/>
+        <source>Delete Folder</source>
+        <translation>Eliminar Carpeta</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="122"/>
+        <location filename="../gis/CGisListDB.cpp" line="133"/>
+        <source>Delete Item</source>
+        <translation>Eliminar Elemento</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="126"/>
+        <source>Sync. with Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="127"/>
+        <source>Remove Database</source>
+        <translation>Quitar Base de Datos</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="130"/>
+        <source>Empty</source>
+        <translation>Vacío</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="418"/>
+        <source>Remove database...</source>
+        <translation>Quitar Base de Datos...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="418"/>
+        <source>Do you really want to remove '%1' from the list?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="611"/>
+        <source>Are you sure you want to delete '%1' from folder '%2'?</source>
+        <translation type="unfinished">¿Desea realmente eleiminar '%1' de la carpeta '%2'?</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="612"/>
+        <source>Delete...</source>
+        <translation type="unfinished">Borrar...</translation>
+    </message>
+    <message>
+        <source>Do you realy want to remove '%1' from the list?</source>
+        <translation type="obsolete">¿Desea realmente quitar '%1' de la lista?</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="476"/>
+        <source>Delete database folder...</source>
+        <translation>Eliminar Carpeta de la Base de Datos...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="476"/>
         <source>Are you sure you want to delete "%1" from the database?</source>
         <translation>¿Desea realmente eliminar '%1' de la Base de Datos?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="348"/>
-        <location filename="../gis/CGisListDB.cpp" line="363"/>
+        <location filename="../gis/CGisListDB.cpp" line="503"/>
+        <location filename="../gis/CGisListDB.cpp" line="524"/>
         <source>Remove items...</source>
         <translation>Eliminar elementos...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="348"/>
+        <location filename="../gis/CGisListDB.cpp" line="503"/>
         <source>Are you sure you want to delete all items from Lost&Found? This will remove them permanently.</source>
         <translation>¿Desea realmente eliminar todos los elementos de 'Objetos Perdidos'? Se eliminarán definitivamente.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="363"/>
+        <location filename="../gis/CGisListDB.cpp" line="524"/>
         <source>Are you sure you want to delete all selected items from Lost&Found? This will remove them permanently.</source>
         <translation>¿Desea realmente eliminar todos los elementos.seleccionados de 'Objetos Perdidos'? Se eliminarán definitivamente.</translation>
     </message>
@@ -516,17 +1462,17 @@
 <context>
     <name>CGisListWks</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="101"/>
+        <location filename="../gis/CGisListWks.cpp" line="104"/>
         <source>Save</source>
         <translation>Guardar</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="102"/>
+        <location filename="../gis/CGisListWks.cpp" line="105"/>
         <source>Save As...</source>
         <translation>Guardar Como...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="97"/>
+        <location filename="../gis/CGisListWks.cpp" line="99"/>
         <source>Edit..</source>
         <translation>Editar..</translation>
     </message>
@@ -535,150 +1481,165 @@
         <translation type="obsolete">Actualizar Proyecto en Dispositivos</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="106"/>
+        <location filename="../gis/CGisListWks.cpp" line="112"/>
         <source>Close</source>
         <translation>Cerrar</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="112"/>
+        <location filename="../gis/CGisListWks.cpp" line="118"/>
         <source>Update Project on Device</source>
         <translation>Actualizar Proyecto en Dsipositivo</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="124"/>
+        <location filename="../gis/CGisListWks.cpp" line="130"/>
         <source>Edit...</source>
         <translation>Editar...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="125"/>
+        <location filename="../gis/CGisListWks.cpp" line="131"/>
         <source>Copy to...</source>
         <translation>Copiar a...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="140"/>
+        <location filename="../gis/CGisListWks.cpp" line="146"/>
         <source>Show Bubble</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="142"/>
+        <location filename="../gis/CGisListWks.cpp" line="148"/>
         <source>Move Waypoint</source>
         <translation>Mover Waypoint</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="143"/>
+        <location filename="../gis/CGisListWks.cpp" line="149"/>
         <source>Proj. Waypoint...</source>
         <translation>Proyectar Waypoint...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="151"/>
+        <location filename="../gis/CGisListWks.cpp" line="157"/>
         <source>Route Instructions</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="153"/>
+        <location filename="../gis/CGisListWks.cpp" line="159"/>
         <source>Calculate Route</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="154"/>
+        <location filename="../gis/CGisListWks.cpp" line="160"/>
         <source>Reset Route</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="155"/>
+        <location filename="../gis/CGisListWks.cpp" line="161"/>
         <source>Edit Route</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="171"/>
+        <location filename="../gis/CGisListWks.cpp" line="177"/>
         <source>Create Route</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="613"/>
+        <location filename="../gis/CGisListWks.cpp" line="621"/>
         <source>Drop items...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="638"/>
-        <location filename="../gis/CGisListWks.cpp" line="1544"/>
-        <location filename="../gis/CGisListWks.cpp" line="1582"/>
+        <location filename="../gis/CGisListWks.cpp" line="646"/>
+        <location filename="../gis/CGisListWks.cpp" line="1632"/>
+        <location filename="../gis/CGisListWks.cpp" line="1670"/>
         <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
         <translation type="unfinished"><b>Actualizar dispositivos</b><p>Actualizar %1<br/>Por favor espere...</p></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1266"/>
+        <location filename="../gis/CGisListWks.cpp" line="1151"/>
+        <source>Delete project...</source>
+        <translation type="unfinished">Eliminar Proyecto...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="1151"/>
+        <source>Do you really want to delete %1?</source>
+        <translation type="unfinished">¿Desea realmente eliminar %1?</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="1347"/>
         <source>Copy items...</source>
         <translation type="unfinished">Copia elementos....</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="127"/>
+        <location filename="../gis/CGisListWks.cpp" line="133"/>
         <source>Track Profile</source>
         <translation>Perfil del Track</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="98"/>
+        <location filename="../gis/CGisListWks.cpp" line="100"/>
         <source>Show on Map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="99"/>
+        <location filename="../gis/CGisListWks.cpp" line="101"/>
         <source>Hide from Map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <location filename="../gis/CGisListWks.cpp" line="108"/>
         <source>Send to Devices</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="129"/>
+        <location filename="../gis/CGisListWks.cpp" line="109"/>
+        <source>Sync. with Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="135"/>
         <source>Select Range</source>
         <translation>Seleccionar Rango</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="130"/>
+        <location filename="../gis/CGisListWks.cpp" line="136"/>
         <source>Edit Track Points</source>
         <translation>Editar Puntos del Track</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="131"/>
+        <location filename="../gis/CGisListWks.cpp" line="137"/>
         <source>Reverse Track</source>
         <translation>Invertir Track</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="132"/>
+        <location filename="../gis/CGisListWks.cpp" line="138"/>
         <source>Combine Tracks</source>
         <translation>Combinar Tracks</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="164"/>
+        <location filename="../gis/CGisListWks.cpp" line="170"/>
         <source>Edit Area Points</source>
         <translation>Editar Puntos del Área</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="113"/>
-        <location filename="../gis/CGisListWks.cpp" line="134"/>
+        <location filename="../gis/CGisListWks.cpp" line="119"/>
+        <location filename="../gis/CGisListWks.cpp" line="140"/>
         <source>Delete</source>
         <translation>Borrar</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="740"/>
+        <location filename="../gis/CGisListWks.cpp" line="775"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Guardando espacio de trabajo. Por favor espere.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="787"/>
+        <location filename="../gis/CGisListWks.cpp" line="821"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Cargando espacio de trabajo. Por favor espere.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1062"/>
+        <location filename="../gis/CGisListWks.cpp" line="1128"/>
         <source>Close all projects...</source>
         <translation>Cerrar todos los proyectos...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1062"/>
+        <location filename="../gis/CGisListWks.cpp" line="1128"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Esto quitará.todos los proyectos.del espacio de trabajo.</translation>
     </message>
@@ -686,24 +1647,76 @@
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="114"/>
+        <location filename="../gis/CGisWidget.cpp" line="131"/>
         <source>Load project...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="114"/>
-        <source>The project "%1" is already in the workspace.</source>
-        <translation type="unfinished"></translation>
+        <location filename="../gis/CGisWidget.cpp" line="131"/>
+        <source>The project "%1" is already in the workspace.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisWidget.cpp" line="486"/>
+        <source>Cut Track...</source>
+        <translation>Partir Track...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisWidget.cpp" line="486"/>
+        <source>Do you want to delete the original track?</source>
+        <translation>¿Desea borrar el track original?</translation>
+    </message>
+</context>
+<context>
+    <name>CGpsProject</name>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="90"/>
+        <source>Failed to load file %1...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="112"/>
+        <source>Failed to open %1</source>
+        <translation type="unfinished">Fallo al abrir %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="124"/>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation type="unfinished">Fallo al leer: %1
+línea %2, columna %3.
+ %4</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="132"/>
+        <source>Not a GPX file: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="238"/>
+        <source>File exists ...</source>
+        <translation type="unfinished">El archivo ya existe ...</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="239"/>
+        <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
+        <translation type="unfinished">El archivo ya existe y no lo ha creado QMapShack. Si pulsa 'sí' todos los datos de este archivo se perderán. Incluso si el archivo contiene datos GPX y QMapShack lo ha leído, QMapShack podría no ser capaz de leer y almacenar todos los elementos en el archivo, y aquellos que no haya leído se perderán. Se le recomienda usar otro archivo distinto. <b>¿Quiere realmente sobrescribir el archivo</b></translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="347"/>
+        <source>Failed to create file '%1'</source>
+        <translation type="unfinished">Fallo al crear el archivo '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="461"/>
-        <source>Cut Track...</source>
-        <translation>Partir Track...</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="357"/>
+        <source>Failed to write file '%1'</source>
+        <translation type="unfinished">Fallo al escribir en el archivo '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="461"/>
-        <source>Do you want to delete the original track?</source>
-        <translation>¿Desea borrar el track original?</translation>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="362"/>
+        <source>Saving GIS data failed...</source>
+        <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
@@ -748,6 +1761,11 @@
         <source>Cut history</source>
         <translation>Cortar historial</translation>
     </message>
+    <message>
+        <location filename="../widgets/CHistoryListWidget.cpp" line="61"/>
+        <source> by %1</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CImportDatabase</name>
@@ -768,29 +1786,108 @@
     </message>
 </context>
 <context>
+    <name>CKnownExtension</name>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="45"/>
+        <source>Air Temperature</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="49"/>
+        <source>Water Temperature</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="53"/>
+        <source>Depth</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="57"/>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="69"/>
+        <source>Heart Rate</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="61"/>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="73"/>
+        <source>Cadence</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="77"/>
+        <source>Speed</source>
+        <translation type="unfinished">Velocidad</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="81"/>
+        <source>Acceleration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="85"/>
+        <source>Course</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="94"/>
+        <source>Slope*</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="99"/>
+        <source>Speed*</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="104"/>
+        <source>Elevation</source>
+        <translation type="unfinished">Altitud</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="109"/>
+        <source>Progress</source>
+        <translation type="unfinished">Progreso</translation>
+    </message>
+</context>
+<context>
+    <name>CLostFoundProject</name>
+    <message>
+        <location filename="../gis/db/CLostFoundProject.cpp" line="39"/>
+        <source>Lost & Found</source>
+        <translation type="unfinished">Objetos Perdidos</translation>
+    </message>
+</context>
+<context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="591"/>
+        <location filename="../CMainWindow.cpp" line="617"/>
         <source>Ele: %1%2</source>
         <translation>Alt: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="607"/>
+        <location filename="../CMainWindow.cpp" line="633"/>
         <source>[Grid: %1]</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="732"/>
+        <location filename="../CMainWindow.cpp" line="758"/>
         <source>Load GIS Data...</source>
         <translation>Cargar Datos GIS...</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="766"/>
+        <location filename="../CMainWindow.cpp" line="792"/>
         <source>Select output file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../CMainWindow.cpp" line="792"/>
+        <location filename="../CMainWindow.cpp" line="818"/>
+        <source>QMapShack View (*.view)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../CMainWindow.cpp" line="818"/>
         <source>Select file to load</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1402,26 +2499,26 @@
         <translation>El archivo contiene datos bloqueados/cifrados. Garmin no quiere que use este archivo con otros programas distintos a los que ellos proporcionan.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2504"/>
-        <location filename="../map/CMapIMG.cpp" line="2512"/>
-        <location filename="../map/CMapIMG.cpp" line="2516"/>
-        <location filename="../map/CMapIMG.cpp" line="2521"/>
-        <location filename="../map/CMapIMG.cpp" line="2567"/>
-        <location filename="../map/CMapIMG.cpp" line="2575"/>
-        <location filename="../map/CMapIMG.cpp" line="2579"/>
-        <location filename="../map/CMapIMG.cpp" line="2584"/>
+        <location filename="../map/CMapIMG.cpp" line="2502"/>
+        <location filename="../map/CMapIMG.cpp" line="2510"/>
+        <location filename="../map/CMapIMG.cpp" line="2514"/>
+        <location filename="../map/CMapIMG.cpp" line="2519"/>
+        <location filename="../map/CMapIMG.cpp" line="2565"/>
+        <location filename="../map/CMapIMG.cpp" line="2573"/>
+        <location filename="../map/CMapIMG.cpp" line="2577"/>
+        <location filename="../map/CMapIMG.cpp" line="2582"/>
         <source>Point of Interest</source>
         <translation>Punto de Interés</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2711"/>
+        <location filename="../map/CMapIMG.cpp" line="2709"/>
         <source>Unknown</source>
         <translation>Desconocido</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2757"/>
-        <location filename="../map/CMapIMG.cpp" line="2765"/>
-        <location filename="../map/CMapIMG.cpp" line="2772"/>
+        <location filename="../map/CMapIMG.cpp" line="2755"/>
+        <location filename="../map/CMapIMG.cpp" line="2763"/>
+        <location filename="../map/CMapIMG.cpp" line="2770"/>
         <source>Area</source>
         <translation>Área</translation>
     </message>
@@ -1429,17 +2526,17 @@
 <context>
     <name>CMapList</name>
     <message>
-        <location filename="../map/CMapList.cpp" line="155"/>
+        <location filename="../map/CMapList.cpp" line="205"/>
         <source>Deactivate</source>
         <translation>Desactivar</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="155"/>
+        <location filename="../map/CMapList.cpp" line="205"/>
         <source>Activate</source>
         <translation>Activar</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="174"/>
+        <location filename="../map/CMapList.cpp" line="228"/>
         <source>Where do you want to store maps?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1564,7 +2661,7 @@ línea %2, columna %3.
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="306"/>
+        <location filename="../map/CMapTMS.cpp" line="304"/>
         <source><b>%1</b>: %2 tiles pending<br/></source>
         <translation><b>%1</b>: %2 teselas pendientes<br/></translation>
     </message>
@@ -1573,20 +2670,20 @@ línea %2, columna %3.
     <name>CMapVRT</name>
     <message>
         <location filename="../map/CMapVRT.cpp" line="45"/>
-        <location filename="../map/CMapVRT.cpp" line="60"/>
-        <location filename="../map/CMapVRT.cpp" line="89"/>
+        <location filename="../map/CMapVRT.cpp" line="59"/>
+        <location filename="../map/CMapVRT.cpp" line="88"/>
         <location filename="../map/CMapVRT.cpp" line="126"/>
         <source>Error...</source>
         <translation>Error...</translation>
     </message>
     <message>
         <location filename="../map/CMapVRT.cpp" line="45"/>
-        <location filename="../map/CMapVRT.cpp" line="60"/>
+        <location filename="../map/CMapVRT.cpp" line="59"/>
         <source>Failed to load file: %1</source>
         <translation>Fallo al leer el archivo: %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="89"/>
+        <location filename="../map/CMapVRT.cpp" line="88"/>
         <source>File must be 8 bit palette or gray indexed.</source>
         <translation>El archivo debe ser con paleta de 8 bits o escala de grises indexada.</translation>
     </message>
@@ -1665,7 +2762,7 @@ Estructura desconocida.</translation>
     </message>
     <message>
         <source>Unexpexted service. '* WMTS 1.0.0' is expected. '%1 %2' is read.</source>
-        <translation type="vanished">Servicio no esperado. se esperaba'* WMTS 1.0.0'. Se leyó '%1 %2'.</translation>
+        <translation type="obsolete">Servicio no esperado. se esperaba'* WMTS 1.0.0'. Se leyó '%1 %2'.</translation>
     </message>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="151"/>
@@ -1700,6 +2797,16 @@ Estructura desconocida.</translation>
         <source><b>Edit Area</b><br/>Select a function and a routing mode via the tool buttons. Next select a point of the line. Only points marked with a large square can be changed. The ones with a black dot are subpoints introduced by routing.<br/></source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
+        <source>Edit name...</source>
+        <translation type="unfinished">Editar nombre...</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
+        <source>Enter new area name.</source>
+        <translation type="unfinished">Introduzca el nombre del nuevo área.</translation>
+    </message>
 </context>
 <context>
     <name>CMouseEditRte</name>
@@ -1714,6 +2821,16 @@ Estructura desconocida.</translation>
         <source><b>Edit Route Points</b><br/>Select a function and a routing mode via the tool buttons. Next select a point of the line. Only points marked with a large square can be changed. The ones with a black dot are subpoints introduced by routing.<br/></source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
+        <source>Edit name...</source>
+        <translation type="unfinished">Editar nombre...</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
+        <source>Enter new route name.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>CMouseEditTrk</name>
@@ -1740,11 +2857,17 @@ Estructura desconocida.</translation>
     <message>
         <location filename="../mouse/CMouseEditTrk.cpp" line="80"/>
         <source>This will replace all data of the original by a simple line of coordinates. All other data will be lost permanently.</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Esto sustituirá todos los datos del original con una simple línea de coordenadas. Todos los demás datos se perderán definitivamente.</translation>
     </message>
     <message>
-        <source>This will replace all data of the orignal by a simple line of coordinates. All other data will be lost permanently.</source>
-        <translation type="obsolete">Esto sustituirá todos los datos del original con una simple línea de coordenadas. Todos los demás datos se perderán definitivamente.</translation>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
+        <source>Edit name...</source>
+        <translation type="unfinished">Editar nombre...</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
+        <source>Enter new track name.</source>
+        <translation type="unfinished">Introduzca el nombre del nuevo track.</translation>
     </message>
 </context>
 <context>
@@ -1808,11 +2931,11 @@ Estructura desconocida.</translation>
     <name>CPlotDistance</name>
     <message>
         <source>distance [%1]</source>
-        <translation type="vanished">distancia [%1]</translation>
+        <translation type="obsolete">distancia [%1]</translation>
     </message>
     <message>
         <source>time</source>
-        <translation type="vanished">tiempo</translation>
+        <translation type="obsolete">tiempo</translation>
     </message>
     <message>
         <source>time [h]</source>
@@ -1820,22 +2943,22 @@ Estructura desconocida.</translation>
     </message>
     <message>
         <source>distance. [%1]</source>
-        <translation type="vanished">distancia. [%1]</translation>
+        <translation type="obsolete">distancia. [%1]</translation>
     </message>
 </context>
 <context>
     <name>CPlotProfile</name>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="63"/>
+        <location filename="../plot/CPlotProfile.cpp" line="73"/>
         <source>distance [%1]</source>
         <translation>distancia [%1]</translation>
     </message>
     <message>
         <source>time [h]</source>
-        <translation type="vanished">tiempo [h]</translation>
+        <translation type="obsolete">tiempo [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="64"/>
+        <location filename="../plot/CPlotProfile.cpp" line="74"/>
         <source>alt. [%1]</source>
         <translation>alt. [%1]</translation>
     </message>
@@ -1844,15 +2967,15 @@ Estructura desconocida.</translation>
     <name>CPlotSpeed</name>
     <message>
         <source>distance [%1]</source>
-        <translation type="vanished">distancia [%1]</translation>
+        <translation type="obsolete">distancia [%1]</translation>
     </message>
     <message>
         <source>time [h]</source>
-        <translation type="vanished">tiempo [h]</translation>
+        <translation type="obsolete">tiempo [h]</translation>
     </message>
     <message>
         <source>speed. [%1]</source>
-        <translation type="vanished">velocidad. [%1]</translation>
+        <translation type="obsolete">velocidad. [%1]</translation>
     </message>
 </context>
 <context>
@@ -1905,7 +3028,7 @@ y: %4 m/px</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/CProgressDialog.cpp" line="74"/>
+        <location filename="../helpers/CProgressDialog.cpp" line="82"/>
         <source>Elapsed time: %1 seconds.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1923,12 +3046,12 @@ y: %4 m/px</source>
         <translation>sur</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="221"/>
+        <location filename="../grid/CProjWizard.cpp" line="222"/>
         <source>Error...</source>
         <translation>Error...</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="221"/>
+        <location filename="../grid/CProjWizard.cpp" line="222"/>
         <source>The value
 '%1'
 is not a valid coordinate system definition:
@@ -1953,6 +3076,19 @@ no es una definición de sistema de coordenadas válido:
     </message>
 </context>
 <context>
+    <name>CPropertyTrk</name>
+    <message>
+        <location filename="../gis/trk/CPropertyTrk.cpp" line="65"/>
+        <source>distance [%1]</source>
+        <translation type="unfinished">distancia [%1]</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CPropertyTrk.cpp" line="77"/>
+        <source>time</source>
+        <translation type="unfinished">tiempo</translation>
+    </message>
+</context>
+<context>
     <name>CQlgtDb</name>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="308"/>
@@ -2079,6 +3215,33 @@ no es una definición de sistema de coordenadas válido:
     </message>
 </context>
 <context>
+    <name>CQlgtTrack</name>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="164"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="218"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="265"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="291"/>
+        <source>Corrupt track ...</source>
+        <translation type="unfinished">Track corrupto...</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="164"/>
+        <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="218"/>
+        <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="265"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="291"/>
+        <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CQmsDb</name>
     <message>
         <location filename="../qlgt/CQmsDb.cpp" line="47"/>
@@ -2102,6 +3265,21 @@ no es una definición de sistema de coordenadas válido:
     </message>
 </context>
 <context>
+    <name>CQmsProject</name>
+    <message>
+        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <source>Failed to open...</source>
+        <translation type="unfinished">Fallo al abrir...</translation>
+    </message>
+    <message>
+        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <source>Failed to open %1</source>
+        <translation type="unfinished">Fallo al abrir %1</translation>
+    </message>
+</context>
+<context>
     <name>CRouterMapQuest</name>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="37"/>
@@ -2373,11 +3551,6 @@ no es una definición de sistema de coordenadas válido:
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="161"/>
-        <source>There is no highway near the coordinates to place a waypoint.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="164"/>
         <source>The profile and database do not work together.</source>
         <translation type="unfinished"></translation>
@@ -2434,18 +3607,23 @@ no es una definición de sistema de coordenadas válido:
         <translation type="unfinished">Aviso...</translation>
     </message>
     <message>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="161"/>
+        <source>In the routing database there is no highway near the coordinates to place a waypoint.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="238"/>
         <source>%1: Due to limitations in the Windows POSIX API Routino can't handle files larger than 4GB.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="342"/>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="429"/>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="344"/>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="431"/>
         <source>Calculate route with %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="350"/>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="352"/>
         <source><br/>Calculation time: %1s</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2540,22 +3718,32 @@ no es una definición de sistema de coordenadas válido:
 <context>
     <name>CSetupDatabase</name>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="70"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="47"/>
+        <source>Missing Requirement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="48"/>
+        <source>MySQL cannot be used at this point, because the corresponding driver (QMYSQL) is not available.<br />Please make sure you have installed the corresponding package.<br />If you don't know what to do now you should have <a href="%1">a look at the wiki</a>.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="102"/>
         <source>Error...</source>
         <translation>Error...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="70"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="102"/>
         <source>There is already a database with name '%1'</source>
         <translation>Ya existe una base de datos con el nombre '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="84"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="115"/>
         <source>New database...</source>
         <translation>Nueva base de datos...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="109"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="140"/>
         <source>Open database...</source>
         <translation>Abrir base de datos...</translation>
     </message>
@@ -2563,17 +3751,67 @@ no es una definición de sistema de coordenadas válido:
 <context>
     <name>CSetupWorkspace</name>
     <message>
-        <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="55"/>
         <source>Setup database...</source>
         <translation>Configurar la base de datos...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="55"/>
         <source>Changes will become active after an application's restart.</source>
         <translation>Los cambios surtirán efecto tras reiniciar la aplicación.</translation>
     </message>
 </context>
 <context>
+    <name>CSlfProject</name>
+    <message>
+        <location filename="../gis/slf/CSlfProject.cpp" line="42"/>
+        <source>Failed to load file %1...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CSlfReader</name>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="59"/>
+        <source>%1 does not exist</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="64"/>
+        <source>Failed to open %1</source>
+        <translation type="unfinished">Fallo al abrir %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="75"/>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation type="unfinished">Fallo al leer: %1
+línea %2, columna %3.
+ %4</translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="82"/>
+        <source>Not a SLF file: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="89"/>
+        <source>Unsupported revision %1: %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="164"/>
+        <source>Break %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="168"/>
+        <source>Lap %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CTextEditWidget</name>
     <message>
         <location filename="../widgets/CTextEditWidget.cpp" line="73"/>
@@ -2582,6 +3820,46 @@ no es una definición de sistema de coordenadas válido:
     </message>
 </context>
 <context>
+    <name>CTwoNavProject</name>
+    <message>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
+        <location filename="../gis/tnv/serialization.cpp" line="560"/>
+        <location filename="../gis/tnv/serialization.cpp" line="588"/>
+        <location filename="../gis/tnv/serialization.cpp" line="599"/>
+        <location filename="../gis/tnv/serialization.cpp" line="617"/>
+        <location filename="../gis/tnv/serialization.cpp" line="645"/>
+        <location filename="../gis/tnv/serialization.cpp" line="719"/>
+        <source>Error...</source>
+        <translation type="unfinished">Error...</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
+        <location filename="../gis/tnv/serialization.cpp" line="560"/>
+        <source>Failed to open %1.</source>
+        <translation type="unfinished">Fallo al abrir %1.</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="159"/>
+        <source>Save GIS data to...</source>
+        <translation type="unfinished">Guardar los datos GIS en...</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="588"/>
+        <location filename="../gis/tnv/serialization.cpp" line="599"/>
+        <source>Only support lon/lat WGS 84 format.</source>
+        <translation type="unfinished">Solamente soporta formato lon/lat WGS84.</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="617"/>
+        <location filename="../gis/tnv/serialization.cpp" line="645"/>
+        <location filename="../gis/tnv/serialization.cpp" line="719"/>
+        <source>Failed to read data.</source>
+        <translation type="unfinished">Fallo al leer los datos.</translation>
+    </message>
+</context>
+<context>
     <name>IAbout</name>
     <message>
         <location filename="../IAbout.ui" line="14"/>
@@ -2623,107 +3901,128 @@ no es una definición de sistema de coordenadas válido:
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="166"/>
+        <location filename="../IAbout.ui" line="172"/>
+        <source>Czech:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="195"/>
+        <source>German:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="218"/>
+        <source>Dutch:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="241"/>
+        <source>French:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="251"/>
         <source>Rainer Unseld </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="173"/>
+        <location filename="../IAbout.ui" line="381"/>
+        <source>Christian Eichler (qms at christian-eichler.de)
+Ivo Kronenberg</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>French</source>
-        <translation type="unfinished">Francés</translation>
+        <translation type="obsolete">Francés</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="180"/>
         <source>Czech</source>
-        <translation type="unfinished">Checo</translation>
+        <translation type="obsolete">Checo</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="187"/>
+        <location filename="../IAbout.ui" line="182"/>
         <source>Pavel Fric</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="194"/>
         <source>German</source>
-        <translation type="unfinished">Alemán</translation>
+        <translation type="obsolete">Alemán</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="201"/>
+        <location filename="../IAbout.ui" line="281"/>
         <source><b>Translation:</b></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="229"/>
         <source>Dutch</source>
-        <translation type="unfinished">Holandés</translation>
+        <translation type="obsolete">Holandés</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="236"/>
+        <location filename="../IAbout.ui" line="228"/>
         <source>Harrie Klomp</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="295"/>
+        <location filename="../IAbout.ui" line="271"/>
+        <source>Spanish:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="305"/>
+        <source>Win64:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="321"/>
+        <source>OS X:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="345"/>
         <source><b>Binaries:</b></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="311"/>
+        <location filename="../IAbout.ui" line="374"/>
         <source><b>Contributors:</b></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="208"/>
+        <location filename="../IAbout.ui" line="205"/>
         <source>Josef Latt</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="215"/>
         <source>Spanish</source>
-        <translation type="unfinished">Español</translation>
+        <translation type="obsolete">Español</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="222"/>
+        <location filename="../IAbout.ui" line="258"/>
         <source>Jose Luis Domingo Lopez</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="254"/>
+        <location filename="../IAbout.ui" line="338"/>
         <source>Ivo Kronenberg</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="261"/>
+        <location filename="../IAbout.ui" line="331"/>
         <source>Helmut Schmidt</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <location filename="../IAbout.ui" line="268"/>
-        <source>Win64</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="275"/>
-        <source>OS X</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="282"/>
+    <message utf8="true">
+        <location filename="../IAbout.ui" line="354"/>
         <source>...and thanks to all Linux binary maintainers for doing a great job. Special thanks to Dan Horák and Bas Couwenberg for showing presence on the mailing list to discuss distribution related topics.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="318"/>
-        <source>Christian Eichler (qms at christian-eichler.de)</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="332"/>
+        <location filename="../IAbout.ui" line="399"/>
         <source>This software is licensed under GPL3 or any later version</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
-        <location filename="../IAbout.ui" line="339"/>
+    <message utf8="true">
+        <location filename="../IAbout.ui" line="406"/>
         <source>© 2014 Oliver Eichler (oliver.eichler at gmx.de)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -2766,6 +4065,14 @@ no es una definición de sistema de coordenadas válido:
     </message>
 </context>
 <context>
+    <name>IColorChooser</name>
+    <message>
+        <location filename="../widgets/IColorChooser.ui" line="14"/>
+        <source>Dialog</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>ICombineTrk</name>
     <message>
         <location filename="../gis/trk/ICombineTrk.ui" line="14"/>
@@ -2788,17 +4095,17 @@ no es una definición de sistema de coordenadas válido:
         <source>Coordinate Format...</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
+    <message utf8="true">
         <location filename="../units/ICoordFormatSetup.ui" line="36"/>
         <source>N48° 53.660 E013° 31.113</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
+    <message utf8="true">
         <location filename="../units/ICoordFormatSetup.ui" line="29"/>
         <source>N48.8943° E013.51855°</source>
         <translation type="unfinished"></translation>
     </message>
-    <message>
+    <message utf8="true">
         <location filename="../units/ICoordFormatSetup.ui" line="22"/>
         <source>N48° 53' 39.6" E13° 31' 6.78"</source>
         <translation type="unfinished"></translation>
@@ -2860,10 +4167,62 @@ If you want to keep just one half you can simply remove the points, or check thi
     </message>
 </context>
 <context>
+    <name>IDB</name>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="60"/>
+        <source>The internal database format of '%1'' has changed. QMapShack will migrate your database, now. After the migration the database won't be usable with older versions of QMapShack. It is recommended to backup the database first.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="64"/>
+        <source>Migrate database...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="74"/>
+        <source>Failed to migrate '%1'.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="76"/>
+        <location filename="../gis/db/IDB.cpp" line="100"/>
+        <source>Error...</source>
+        <translation type="unfinished">Error...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="85"/>
+        <source>The database version of '%1'' is more advanced as the one understood by your QMapShack installation. This won't work.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="88"/>
+        <source>Wrong database version...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="98"/>
+        <source>Failed to initialize '%1'.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>IDBMysql</name>
+    <message>
+        <location filename="../gis/db/IDBMysql.cpp" line="54"/>
+        <source>Password...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDBMysql.cpp" line="54"/>
+        <source>Password for database '%1':</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>IDemPathSetup</name>
     <message>
         <source>Setup DEM file pathss</source>
-        <translation type="vanished">Configurar las rutas a los archivos DEM</translation>
+        <translation type="obsolete">Configurar las rutas a los archivos DEM</translation>
     </message>
     <message>
         <location filename="../dem/IDemPathSetup.ui" line="14"/>
@@ -2925,7 +4284,7 @@ If you want to keep just one half you can simply remove the points, or check thi
         <source>Slope </source>
         <translation>Pendiente</translation>
     </message>
-    <message>
+    <message utf8="true">
         <location filename="../dem/IDemPropSetup.ui" line="226"/>
         <location filename="../dem/IDemPropSetup.ui" line="326"/>
         <location filename="../dem/IDemPropSetup.ui" line="410"/>
@@ -2975,6 +4334,31 @@ If you want to keep just one half you can simply remove the points, or check thi
         <source>Activate</source>
         <translation>Activar</translation>
     </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="165"/>
+        <source>Move Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="168"/>
+        <source>Hide DEM behind previous one</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="177"/>
+        <source>Move down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="180"/>
+        <source>Show DEM on top of next one</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="189"/>
+        <source>Reload DEM</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IDetailsGeoCache</name>
@@ -3049,62 +4433,61 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="44"/>
         <source>-</source>
-        <translation>-</translation>
+        <translation type="obsolete">-</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="69"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="132"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation type="unfinished"><html><head/><body><p>El waypoint se importó en QMapShack y ha sido modificado, por lo que ya no muestra los datos originales. Por favor consulte  los cambios en el histórico. </p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="85"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="148"/>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="88"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="151"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="118"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="181"/>
         <source>Color</source>
         <translation>Color</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="139"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="202"/>
         <source>Border width</source>
         <translation>Ancho del borde</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="153"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="216"/>
         <source>Style</source>
         <translation>Estilo</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="172"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="235"/>
         <source>Opacity</source>
         <translation>Opacidad</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="185"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="248"/>
         <source>Info</source>
         <translation type="unfinished">Información</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="214"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="277"/>
         <source>Points</source>
         <translation>Puntos</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="241"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="304"/>
         <source>Position</source>
         <translation>Posición</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="250"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="313"/>
         <source>Hist.</source>
         <translation>Historial</translation>
     </message>
@@ -3181,27 +4564,27 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation type="unfinished">Información</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="65"/>
+        <location filename="../gis/rte/IDetailsRte.ui" line="205"/>
         <source>-</source>
         <translation type="unfinished">-</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="97"/>
+        <location filename="../gis/rte/IDetailsRte.ui" line="154"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation type="unfinished"><html><head/><body><p>El waypoint se importó en QMapShack y ha sido modificado, por lo que ya no muestra los datos originales. Por favor consulte  los cambios en el histórico. </p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="113"/>
+        <location filename="../gis/rte/IDetailsRte.ui" line="170"/>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="116"/>
+        <location filename="../gis/rte/IDetailsRte.ui" line="173"/>
         <source>...</source>
         <translation type="unfinished">...</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="176"/>
+        <location filename="../gis/rte/IDetailsRte.ui" line="229"/>
         <source>Hist.</source>
         <translation type="unfinished">Historial</translation>
     </message>
@@ -3223,157 +4606,225 @@ If you want to keep just one half you can simply remove the points, or check thi
 -</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="533"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="442"/>
+        <source>Use/edit user defined visibility of arrows for this track</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="471"/>
+        <source>Use/edit system's visibility of arrows for all tracks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="546"/>
+        <source>Use/edit user defined scale factor for this track</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="575"/>
+        <source>Use/edit system's default factor for all tracks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="852"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="872"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="958"/>
+        <source>max.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="991"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="998"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1012"/>
+        <source>min.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1026"/>
         <source>Profile</source>
         <translation>Perfil</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="702"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="679"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1044"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1141"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1238"/>
+        <source>User defined limits for this track</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="705"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1073"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1170"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1267"/>
+        <source>Automatic limits</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="734"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1105"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1202"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1299"/>
+        <source>User defined limits for all tracks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1467"/>
         <source>Speed</source>
         <translation>Velocidad</translation>
     </message>
     <message>
         <source>Progress</source>
-        <translation type="vanished">Progreso</translation>
+        <translation type="obsolete">Progreso</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="163"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="277"/>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="166"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="280"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="445"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="474"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="549"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="578"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="682"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="708"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="737"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1047"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1076"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1108"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1144"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1173"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1205"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1241"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1270"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1302"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="202"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="255"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation type="unfinished"><html><head/><body><p>El waypoint se importó en QMapShack y ha sido modificado, por lo que ya no muestra los datos originales. Por favor consulte  los cambios en el histórico. </p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="298"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="377"/>
         <source>Style</source>
         <translation type="unfinished">Estilo</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="340"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="434"/>
-        <source>from Data</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="353"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="801"/>
         <source>Source</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="376"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="667"/>
         <source>Maximum</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="405"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="527"/>
         <source>Minimum</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="447"/>
-        <source>Solid color</source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="642"/>
+        <source>x </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="495"/>
-        <source>Graphs</source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="534"/>
+        <source>Width</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="540"/>
-        <source>Graph 3</source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="625"/>
+        <source>with arrows</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="547"/>
-        <source>Graph 2</source>
-        <translation type="unfinished"></translation>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="788"/>
+        <source>Color</source>
+        <translation type="unfinished">Color</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="554"/>
-        <source>Graph 1</source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="839"/>
+        <source>Graphs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="562"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1331"/>
         <source>Activity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="607"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1372"/>
         <source>To differentiate the track statistics select an activity from the list for the complete track. Or select a part of the track to assign an activity.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="634"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1399"/>
         <source>Points</source>
         <translation>Puntos</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="682"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1447"/>
         <source>Time</source>
         <translation>Tiempo</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="687"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1452"/>
         <source>Ele.</source>
         <translation>Altitud</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="692"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1457"/>
         <source>Delta</source>
         <translation>Delta</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="697"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1462"/>
         <source>Dist.</source>
         <translation>Distancia</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="707"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1472"/>
         <source>Slope</source>
         <translation>Pendiente</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="712"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1477"/>
         <source>Ascend</source>
         <translation>Ascenso</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="717"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1482"/>
         <source>Descend</source>
         <translation>Descenso</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="722"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1487"/>
         <source>Position</source>
         <translation>Posición</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="266"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="345"/>
         <source>Info</source>
         <translation>Información</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="227"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="306"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="731"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1496"/>
         <source>Filter</source>
         <translation>Filtro</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="768"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1533"/>
         <source>Hist.</source>
         <translation>Historial</translation>
     </message>
@@ -3386,15 +4837,15 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="221"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="284"/>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="224"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="279"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="299"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="331"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="287"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="342"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="362"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="394"/>
         <source>...</source>
         <translation>...</translation>
     </message>
@@ -3412,8 +4863,7 @@ If you want to keep just one half you can simply remove the points, or check thi
         <location filename="../gis/wpt/IDetailsWpt.ui" line="84"/>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="110"/>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="136"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="186"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="265"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="328"/>
         <source>-</source>
         <translation>-</translation>
     </message>
@@ -3428,12 +4878,12 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation>Proximidad:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="205"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="268"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation><html><head/><body><p>El waypoint se importó en QMapShack y ha sido modificado, por lo que ya no muestra los datos originales. Por favor consulte  los cambios en el histórico. </p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="350"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="413"/>
         <source>Hist.</source>
         <translation type="unfinished">Historial</translation>
     </message>
@@ -3442,22 +4892,30 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation type="obsolete"><html><head/><body><p>Modo Sólo Lectura</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="276"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="339"/>
         <source>Add images.</source>
         <translation>Añadir imagenes.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="296"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="359"/>
         <source>Delete selected image.</source>
         <translation>Eliminar imagen seleccionada.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="258"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="321"/>
         <source>Date/Time:</source>
         <translation>Fecha/Hora:</translation>
     </message>
 </context>
 <context>
+    <name>IDevice</name>
+    <message>
+        <location filename="../device/IDevice.cpp" line="204"/>
+        <source>There is another project with the same name. If you press 'ok' it will be removed and replaced.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>IElevationDialog</name>
     <message>
         <location filename="../helpers/IElevationDialog.ui" line="14"/>
@@ -3509,6 +4967,34 @@ If you want to keep just one half you can simply remove the points, or check thi
     </message>
 </context>
 <context>
+    <name>IFilterDeleteExtension</name>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="51"/>
+        <source><b>Remove Extension from all Track Points</b></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="63"/>
+        <source>Remove </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="83"/>
+        <source>from all Track Points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="103"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+</context>
+<context>
     <name>IFilterDouglasPeuker</name>
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="14"/>
@@ -3735,29 +5221,201 @@ If you want to keep just one half you can simply remove the points, or check thi
 <context>
     <name>IFilterSpeed</name>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="14"/>
-        <source>Form</source>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="35"/>
+        <source><b>Change Speed</b></source>
+        <translation><b>Modificar Velocidad</b></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="44"/>
+        <source>Set speed to </source>
+        <translation>Ajustar velocidad a </translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="51"/>
+        <source> km/h</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="102"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+</context>
+<context>
+    <name>IFilterSplitSegment</name>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="51"/>
+        <source><html><head/><body><p><span style=" font-weight:600;">Split Segments into Tracks</span></p></body></html></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="63"/>
+        <source>Creates a new track for every segment within this track.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="70"/>
+        <source>...</source>
+        <translation type="unfinished">...</translation>
+    </message>
+</context>
+<context>
+    <name>IFitDecoderState</name>
+    <message>
+        <location filename="../gis/fit/decoder/IFitDecoderState.cpp" line="32"/>
+        <source>FIT decoding error: Decoder not in correct state %1 after last data byte in file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>IGisItem</name>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="42"/>
+        <source>[no name]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="301"/>
+        <source>The item is not part of the project in the database.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="307"/>
+        <source>The item is not in the database.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="313"/>
+        <source>The item might need to be saved</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="397"/>
+        <source>Initial version.</source>
+        <translation type="unfinished">Versión inicial</translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="505"/>
+        <source><h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press 'Ok'.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="506"/>
+        <source>Read Only Mode...</source>
+        <translation type="unfinished">Modo Sólo Lectura...</translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="670"/>
+        <location filename="../gis/IGisItem.cpp" line="729"/>
+        <source><h4>Description:</h4></source>
+        <translation type="unfinished"><h4>Descripción:</h4></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="673"/>
+        <location filename="../gis/IGisItem.cpp" line="732"/>
+        <source><p>--- no description ---</p></source>
+        <translation type="unfinished"><p>---sin descripción---</p></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="684"/>
+        <source><h4>Comment:</h4></source>
+        <translation type="unfinished"><h4>Comentario:</h4></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="687"/>
+        <source><p>--- no comment ---</p></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="698"/>
+        <location filename="../gis/IGisItem.cpp" line="743"/>
+        <source><h4>Links:</h4></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="701"/>
+        <location filename="../gis/IGisItem.cpp" line="746"/>
+        <source><p>--- no links ---</p></source>
+        <translation type="unfinished"><p>--- sin links ---</p></translation>
+    </message>
+</context>
+<context>
+    <name>IGisProject</name>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="109"/>
+        <source>Save project?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="109"/>
+        <source><h3>%1</h3>The project was changed. Save before closing it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="261"/>
+        <source>%1: Correlate tracks and waypoints.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="271"/>
+        <source><h3>%1</h3>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project in the future?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="272"/>
+        <source>Canceled correlation...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="312"/>
+        <source>Save "%1" to...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="423"/>
+        <source><br/>
+Filename: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="428"/>
+        <source>Waypoints: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="432"/>
+        <source>Tracks: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="35"/>
-        <source><b>Change Speed</b></source>
-        <translation><b>Modificar Velocidad</b></translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="436"/>
+        <source>Routes: %1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="44"/>
-        <source>Set speed to </source>
-        <translation>Ajustar velocidad a </translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="440"/>
+        <source>Areas: %1</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="51"/>
-        <source> km/h</source>
-        <translation></translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="520"/>
+        <source>Are you sure you want to delete '%1' from project '%2'?</source>
+        <translation type="unfinished">¿Desea realmente eleiminar '%1' del proyecto '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="102"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="521"/>
+        <source>Delete...</source>
+        <translation type="unfinished">Borrar...</translation>
     </message>
 </context>
 <context>
@@ -3774,7 +5432,12 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation>Nombre</translation>
     </message>
     <message>
-        <location filename="../gis/IGisWidget.ui" line="133"/>
+        <location filename="../gis/IGisWidget.ui" line="104"/>
+        <source>Age</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisWidget.ui" line="138"/>
         <source>To add a database do a right click on the database list above.</source>
         <translation>Para añadir una base de datos haga click-derecho en el espacio superior.  </translation>
     </message>
@@ -4051,98 +5714,103 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation>Ayuda</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="436"/>
+        <location filename="../IMainWindow.ui" line="430"/>
+        <source>F1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../IMainWindow.ui" line="439"/>
+        <location filename="../IMainWindow.ui" line="442"/>
         <source>Setup Map View</source>
         <translation>Configurar Vista de Mapa</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="553"/>
+        <location filename="../IMainWindow.ui" line="556"/>
         <source>VRT Builder</source>
         <translation>Asistente VRT</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="556"/>
+        <location filename="../IMainWindow.ui" line="559"/>
         <source>GUI front end to gdalbuildvrt</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="565"/>
+        <location filename="../IMainWindow.ui" line="568"/>
         <source>Store Map View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="568"/>
+        <location filename="../IMainWindow.ui" line="571"/>
         <source>Write current active map and DEM list including the properties to a file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="577"/>
+        <location filename="../IMainWindow.ui" line="580"/>
         <source>Load Map View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="580"/>
+        <location filename="../IMainWindow.ui" line="583"/>
         <source>Restore view with active map and DEM list including the properties from a file</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="592"/>
+        <location filename="../IMainWindow.ui" line="595"/>
         <source>Ext. Profile</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="595"/>
+        <location filename="../IMainWindow.ui" line="598"/>
         <source>Ctrl+E</source>
         <translation type="unfinished">Ctrl+E</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="604"/>
+        <location filename="../IMainWindow.ui" line="607"/>
         <source>Close</source>
         <translation type="unfinished">Cerrar</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="607"/>
+        <location filename="../IMainWindow.ui" line="610"/>
         <source>Ctrl+Q</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="616"/>
+        <location filename="../IMainWindow.ui" line="619"/>
         <source>Clone Map View</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="619"/>
+        <location filename="../IMainWindow.ui" line="622"/>
         <source>Ctrl+Shift+T</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="628"/>
+        <location filename="../IMainWindow.ui" line="631"/>
         <source>Create Routino Database</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="637"/>
+        <location filename="../IMainWindow.ui" line="640"/>
         <source>Save(Print) Map Screenshot</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="640"/>
+        <location filename="../IMainWindow.ui" line="643"/>
         <source>Print a selected area of the map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="643"/>
+        <location filename="../IMainWindow.ui" line="646"/>
         <source>Ctrl+P</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="652"/>
+        <location filename="../IMainWindow.ui" line="655"/>
         <source>Setup Coord. Format</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="655"/>
+        <location filename="../IMainWindow.ui" line="658"/>
         <source>Change the format coordinates are displayed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4151,82 +5819,82 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation type="obsolete">Configurar Espacio de Trabajo de Mapas</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="448"/>
+        <location filename="../IMainWindow.ui" line="451"/>
         <source>Load GIS Data</source>
         <translation>Cargar Datos GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="451"/>
+        <location filename="../IMainWindow.ui" line="454"/>
         <source>Load projects from file</source>
         <translation>Cargar proyectos desde archivo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="454"/>
+        <location filename="../IMainWindow.ui" line="457"/>
         <source>Ctrl+L</source>
         <translation>Ctrl+L</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="463"/>
+        <location filename="../IMainWindow.ui" line="466"/>
         <source>Save All GIS Data</source>
         <translation>Guardar Todos los Datos GIS</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="466"/>
+        <location filename="../IMainWindow.ui" line="469"/>
         <source>Save all projects in the workspace</source>
         <translation>Guardar todos los proyectos del espacio de trabajo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="469"/>
+        <location filename="../IMainWindow.ui" line="472"/>
         <source>Ctrl+S</source>
         <translation>Ctrl+S</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="478"/>
+        <location filename="../IMainWindow.ui" line="481"/>
         <source>Setup Time Zone</source>
         <translation>Configurar Zona Horaria</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="487"/>
+        <location filename="../IMainWindow.ui" line="490"/>
         <source>Add empty project</source>
         <translation>Añadir proyecto vacío</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="499"/>
+        <location filename="../IMainWindow.ui" line="502"/>
         <source>Search Google</source>
         <translation>Buscar en Google</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="508"/>
+        <location filename="../IMainWindow.ui" line="511"/>
         <source>Close all projects</source>
         <translation>Cerrar todos los proyectos</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="511"/>
+        <location filename="../IMainWindow.ui" line="514"/>
         <source>F8</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="520"/>
+        <location filename="../IMainWindow.ui" line="523"/>
         <source>Setup Units</source>
         <translation>Configurar Unidades</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="529"/>
+        <location filename="../IMainWindow.ui" line="532"/>
         <source>Setup Workspace</source>
         <translation>Configurar Espacio de trabajo</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="532"/>
+        <location filename="../IMainWindow.ui" line="535"/>
         <source>Setup save on exit.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="541"/>
+        <location filename="../IMainWindow.ui" line="544"/>
         <source>Import Database from QLandkarte</source>
         <translation>Importar base de datos de Qlandkarte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="544"/>
+        <location filename="../IMainWindow.ui" line="547"/>
         <source>Import QLandkarte GT database</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4263,6 +5931,31 @@ I don't want to read the documentation!</source>
         <source>Activate</source>
         <translation>Activar</translation>
     </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="158"/>
+        <source>Move Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="161"/>
+        <source>Hide map behind previous map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="170"/>
+        <source>Move down</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="173"/>
+        <source>Show map on top of next map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="182"/>
+        <source>Reload Maps</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IMapPathSetup</name>
@@ -4414,66 +6107,66 @@ I don't want to read the documentation!</source>
         <translation type="obsolete">¡Cuidado!</translation>
     </message>
     <message>
-        <source>This will replace all data of the orignal by a simple line of coordinates. All other data will be lost permanently.</source>
+        <source>This will replace all data of the original by a simple line of coordinates. All other data will be lost permanently.</source>
         <translation type="obsolete">Esto sustituirá todos los datos del original con una simple línea de coordenadas. Todos los demás datos se perderán definitivamente.</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="255"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="269"/>
         <source><b>New Line</b><br/>Move the mouse and use the left mouse button to drop points. When done use the right mouse button to stop.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="302"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="316"/>
         <source><b>Delete Point</b><br/>Move the mouse close to a point and press the left button to delete it.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="311"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="325"/>
         <source><b>Select Range of Points</b><br/>Left click on first point to start selection. Left click second point to complete selection and choose from options. Use the right mouse button to cancel.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="320"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="334"/>
         <source><b>Move Point</b><br/>Move the mouse close to a point and press the left button to make it stick to the cursor. Move the mouse to move the point. Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="329"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="343"/>
         <source><b>Add Point</b><br/>Move the mouse close to a line segment and press the left button to add a point. The point will stick to the cursor and you can move it.  Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="338"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="352"/>
         <source><b>No Routing</b><br/>All points will be connected with a straight line.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="343"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="357"/>
         <source><b>Auto Routing</b><br/>The current router setup is used to derive a route between points. <b>Note:</b> The selected router must be able to route on-the-fly. Offline routers usually can do, online routers can't.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="348"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="362"/>
         <source><b>Vector Routing</b><br/>Connect points with a line from a loaded vector map if possible.<br/></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="517"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="542"/>
         <source><b>%1 Metrics</b></source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="520"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="545"/>
         <source>Distance:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="522"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="547"/>
         <source>Ascend:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="524"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="549"/>
         <source>Descend:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4495,27 +6188,27 @@ I don't want to read the documentation!</source>
 <context>
     <name>IPlot</name>
     <message>
-        <location filename="../plot/IPlot.cpp" line="91"/>
+        <location filename="../plot/IPlot.cpp" line="93"/>
         <source>Reset Zoom</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="92"/>
+        <location filename="../plot/IPlot.cpp" line="94"/>
         <source>Stop Range</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="93"/>
+        <location filename="../plot/IPlot.cpp" line="95"/>
         <source>Save...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="613"/>
+        <location filename="../plot/IPlot.cpp" line="638"/>
         <source>No or bad data.</source>
         <translation>Datos incorrectos o inexistentes.</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="1200"/>
+        <location filename="../plot/IPlot.cpp" line="1230"/>
         <source>Select output file</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4552,19 +6245,29 @@ o
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../print/IPrintDialog.ui" line="50"/>
+        <location filename="../print/IPrintDialog.ui" line="79"/>
+        <source>When printing online maps make sure that the map has been loaded into the cache for the extent to be printed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../print/IPrintDialog.ui" line="60"/>
         <source>Save</source>
         <translation type="unfinished">Guardar</translation>
     </message>
     <message>
-        <location filename="../print/IPrintDialog.ui" line="69"/>
-        <location filename="../print/IPrintDialog.ui" line="82"/>
-        <location filename="../print/IPrintDialog.ui" line="131"/>
+        <location filename="../print/IPrintDialog.ui" line="37"/>
+        <source>When saving online maps make sure that the map has been loaded into the cache for the extent to be saved.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../print/IPrintDialog.ui" line="89"/>
+        <location filename="../print/IPrintDialog.ui" line="102"/>
+        <location filename="../print/IPrintDialog.ui" line="151"/>
         <source>TextLabel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../print/IPrintDialog.ui" line="98"/>
+        <location filename="../print/IPrintDialog.ui" line="118"/>
         <source>Print</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4668,7 +6371,7 @@ o
         <source>m</source>
         <translation>m</translation>
     </message>
-    <message>
+    <message utf8="true">
         <location filename="../gis/wpt/IProjWpt.ui" line="76"/>
         <source>°</source>
         <translation>º</translation>
@@ -4849,122 +6552,122 @@ o
         <translation></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="53"/>
-        <source>Save to orignal</source>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="40"/>
+        <source>Save to original</source>
         <translation>Guardar al original</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="60"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="47"/>
         <source>Save as new</source>
         <translation>Guardar como nuevo</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="67"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="54"/>
         <source>Abort</source>
         <translation>Abortar</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="102"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="89"/>
         <source>Move points. (Ctrl+M)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="112"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="99"/>
         <source>Ctrl+M</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="128"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="115"/>
         <source>Add new points. (Ctrl++)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="138"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="125"/>
         <source>Ctrl++</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="151"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="138"/>
         <source>Select a range of points. (Ctrl+R)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="161"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="148"/>
         <source>Ctrl+R</source>
         <translation type="unfinished">Ctrl+R</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="174"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="161"/>
         <source>Delete a point. (Ctrl+D)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="184"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="171"/>
         <source>Ctrl+D</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="228"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="215"/>
         <source>No auto-routing or line snapping (Ctrl+O)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="238"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="225"/>
         <source>Ctrl+O</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="251"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="238"/>
         <source>Use auto-routing to between points. (Ctrl+A)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="261"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="248"/>
         <source>Ctrl+A</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="274"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="261"/>
         <source>Snap line along lines of a vector map. (Ctrl+V)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="105"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="131"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="154"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="177"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="313"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="330"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="92"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="118"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="141"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="164"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="300"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="317"/>
         <source>...</source>
         <translation type="unfinished">...</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="231"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="218"/>
         <source>0</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="254"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="241"/>
         <source>A</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="277"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="264"/>
         <source>V</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="284"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="271"/>
         <source>Ctrl+V</source>
         <translation type="unfinished">Ctrl+V</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="310"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="297"/>
         <source>Undo last change</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="327"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="314"/>
         <source>Redo last change</source>
         <translation type="unfinished"></translation>
     </message>
@@ -5197,7 +6900,7 @@ o
     </message>
     <message>
         <source>Cut track at selected point into two tracks.</source>
-        <translation type="vanished">Partir el track en dos en el punto seleccionado.</translation>
+        <translation type="obsolete">Partir el track en dos en el punto seleccionado.</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="120"/>
@@ -5354,6 +7057,14 @@ o
     </message>
 </context>
 <context>
+    <name>ISelectActivityColor</name>
+    <message>
+        <location filename="../gis/trk/ISelectActivityColor.ui" line="14"/>
+        <source>Form</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>ISelectCopyAction</name>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="14"/>
@@ -5361,45 +7072,45 @@ o
         <translation>Copiar elemento...</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="23"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="29"/>
         <source>Replace existing item</source>
         <translation>Sustituir el elemento existente</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="30"/>
-        <location filename="../helpers/ISelectCopyAction.ui" line="40"/>
-        <location filename="../helpers/ISelectCopyAction.ui" line="67"/>
-        <location filename="../helpers/ISelectCopyAction.ui" line="77"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="36"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="46"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="79"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="89"/>
         <source>TextLabel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="60"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="72"/>
         <source>Do not copy item</source>
         <translation>NO copiar el elemento</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="97"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="115"/>
         <source>Create a clone</source>
         <translation>Crear un duplicado</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="104"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="122"/>
         <source>Replace with:</source>
         <translation>Sustituir por:</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="111"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="129"/>
         <source>Keep item:</source>
         <translation>Mantener:</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="118"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="136"/>
         <source>The clone's name will be appended with '_Clone'</source>
         <translation>Se añadirá el sufijo '_Clone' al nombre del duplicado</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="135"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="153"/>
         <source>And for all other items, too.</source>
         <translation>Hacer igual para todos los elementos.</translation>
     </message>
@@ -5458,40 +7169,50 @@ o
 <context>
     <name>ISelectSaveAction</name>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="14"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="20"/>
         <source>Copy item...</source>
         <translation type="unfinished">Copiar elemento...</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="23"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="35"/>
         <source>Replace existing item</source>
         <translation type="unfinished">Sustituir el elemento existente</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="30"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="87"/>
+        <source>Add a clone</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="100"/>
+        <source>The clone's name will be appended with '_Clone'</source>
+        <translation type="unfinished">Se añadirá el sufijo '_Clone' al nombre del duplicado</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="171"/>
         <source>Replace with:</source>
         <translation type="unfinished">Sustituir por:</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="37"/>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="47"/>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="81"/>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="91"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="42"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="68"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="130"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="140"/>
         <source>TextLabel</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="67"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="61"/>
         <source>Do not replace item</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="74"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="123"/>
         <source>Use item:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="111"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="116"/>
         <source>And for all other items, too.</source>
         <translation type="unfinished">Hacer igual para todos los elementos.</translation>
     </message>
@@ -5531,33 +7252,87 @@ o
         <translation>Añadir Base de Datos...</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="25"/>
         <source>File</source>
-        <translation>Archivo</translation>
+        <translation type="obsolete">Archivo</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="32"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="68"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="39"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="25"/>
         <source>Name</source>
         <translation>Nombre</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="46"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="252"/>
+        <source><p align="justify"><span style=" font-weight:600;">Caution!</span> It is recommended to leave the password blank, as QMapShack will store it as plain text. If you don't give a password you will be asked for it on each startup.</p></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="239"/>
+        <source>Do not use a password.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="153"/>
+        <source>SQLite</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="115"/>
+        <source>MySQL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="181"/>
+        <source>Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="193"/>
+        <source>Port</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="206"/>
+        <source>00000</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="215"/>
+        <source>User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="225"/>
+        <source>Password</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="275"/>
+        <source><b>Port:</b> Leave the port field empty to use the default port.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="61"/>
+        <source>File:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="75"/>
         <source>Add new database.</source>
         <translation>Añadir nueva base de datos.</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="49"/>
-        <location filename="../gis/db/ISetupDatabase.ui" line="63"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="78"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="92"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="60"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="89"/>
         <source>Open existing database.</source>
         <translation>Abrir base de datos existente.</translation>
     </message>
@@ -5658,6 +7433,16 @@ o
         <source>minutes</source>
         <translation>minutos</translation>
     </message>
+    <message>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="56"/>
+        <source>listen for database changes from other instances of QMapShack. On port</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="63"/>
+        <source>00000</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ITextEditWidget</name>
@@ -5845,42 +7630,61 @@ o
 <context>
     <name>IToolShell</name>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="44"/>
+        <location filename="../tool/IToolShell.cpp" line="45"/>
         <source>Execution of external program `%1` failed: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="48"/>
+        <location filename="../tool/IToolShell.cpp" line="49"/>
         <source>Process cannot be started.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="49"/>
+        <location filename="../tool/IToolShell.cpp" line="50"/>
         <source>Make sure the required packages are installed, `%1` exists and is executable.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="53"/>
+        <location filename="../tool/IToolShell.cpp" line="54"/>
         <source>External process crashed.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="57"/>
+        <location filename="../tool/IToolShell.cpp" line="58"/>
         <source>An unknown error occurred.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="148"/>
+        <location filename="../tool/IToolShell.cpp" line="149"/>
         <source>!!! failed !!!
 </source>
         <translation type="unfinished">!!! fallo !!!</translation>
     </message>
 </context>
 <context>
+    <name>IUnit</name>
+    <message>
+        <location filename="../units/IUnit.cpp" line="735"/>
+        <location filename="../units/IUnit.cpp" line="741"/>
+        <source>Error</source>
+        <translation type="unfinished">Error</translation>
+    </message>
+    <message>
+        <location filename="../units/IUnit.cpp" line="735"/>
+        <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
+        <translation type="unfinished">Formato de coordenadas incorrecto. Debe ser: "[N|S] ggg mm.sss [W|E] ggg mm.sss" o "[N|S] ggg.ggg [W|E] ggg.ggg"</translation>
+    </message>
+    <message>
+        <location filename="../units/IUnit.cpp" line="741"/>
+        <source>Position values out of bounds. </source>
+        <translation type="unfinished">Valores de posición fuera del límite.</translation>
+    </message>
+</context>
+<context>
     <name>IUnitsSetup</name>
     <message>
         <location filename="../units/IUnitsSetup.ui" line="14"/>
@@ -5919,49 +7723,36 @@ o
 <context>
     <name>QObject</name>
     <message>
-        <location filename="../units/IUnit.cpp" line="745"/>
-        <location filename="../units/IUnit.cpp" line="751"/>
         <source>Error</source>
-        <translation>Error</translation>
+        <translation type="obsolete">Error</translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="745"/>
         <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
-        <translation>Formato de coordenadas incorrecto. Debe ser: "[N|S] ggg mm.sss [W|E] ggg mm.sss" o "[N|S] ggg.ggg [W|E] ggg.ggg"</translation>
+        <translation type="obsolete">Formato de coordenadas incorrecto. Debe ser: "[N|S] ggg mm.sss [W|E] ggg mm.sss" o "[N|S] ggg.ggg [W|E] ggg.ggg"</translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="751"/>
         <source>Position values out of bounds. </source>
-        <translation type="unfinished">Valores de posición fuera del límite.</translation>
+        <translation type="obsolete">Valores de posición fuera del límite.</translation>
     </message>
     <message>
         <source>Bad position format. Must be: [N|S] ddd mm.sss [W|E] ddd mm.sss</source>
         <translation type="obsolete">Formato de posición incorrecto. Debe ser: "[N|S] ggg mm.sss [W|E] ggg mm.sss"</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="111"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="120"/>
         <source>Failed to read...</source>
-        <translation>Fallo al leer...</translation>
+        <translation type="obsolete">Fallo al leer...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="111"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
-        <translation>Fallo al leer: %1
+        <translation type="obsolete">Fallo al leer: %1
 línea %2, columna %3.
  %4</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="120"/>
         <source>Not a GPX file: </source>
-        <translation>No es un archivo GPX: </translation>
-    </message>
-    <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="410"/>
-        <source>Saving GIS data failed...</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">No es un archivo GPX: </translation>
     </message>
     <message>
         <source>
@@ -5994,918 +7785,420 @@ Areas: %1</source>
 Áreas: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="97"/>
-        <source>Save project?</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="237"/>
-        <source>%1: Correlate tracks and waypoints.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="97"/>
-        <source><h3>%1</h3>The project was changed. Save before closing it?</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="247"/>
-        <source><h3>%1</h3>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project in the future?</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="248"/>
-        <source>Canceled correlation...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="326"/>
-        <source><br/>
-Filename: %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="331"/>
-        <source>Waypoints: %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="335"/>
-        <source>Tracks: %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="339"/>
-        <source>Routes: %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="343"/>
-        <source>Areas: %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="423"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
-        <translation>¿Desea realmente eleiminar '%1' del proyecto '%2'?</translation>
+        <translation type="obsolete">¿Desea realmente eleiminar '%1' del proyecto '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="436"/>
         <source>Are you sure you want to delete '%1' from folder '%2'?</source>
-        <translation>¿Desea realmente eleiminar '%1' de la carpeta '%2'?</translation>
+        <translation type="obsolete">¿Desea realmente eleiminar '%1' de la carpeta '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="437"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="424"/>
         <source>Delete...</source>
-        <translation>Borrar...</translation>
+        <translation type="obsolete">Borrar...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="98"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="144"/>
         <source>Failed to open...</source>
-        <translation>Fallo al abrir...</translation>
+        <translation type="obsolete">Fallo al abrir...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="98"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="144"/>
         <source>Failed to open %1</source>
-        <translation>Fallo al abrir %1</translation>
+        <translation type="obsolete">Fallo al abrir %1</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="158"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="222"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="95"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="159"/>
         <source>Save GIS data to...</source>
-        <translation>Guardar los datos GIS en...</translation>
+        <translation type="obsolete">Guardar los datos GIS en...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="262"/>
         <source>Save ...</source>
-        <translation>Guardar...</translation>
+        <translation type="obsolete">Guardar...</translation>
     </message>
     <message>
         <source>Abort save</source>
         <translation type="obsolete">Cancelar guardar</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="286"/>
         <source>File exists ...</source>
-        <translation>El archivo ya existe ...</translation>
+        <translation type="obsolete">El archivo ya existe ...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="287"/>
         <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
-        <translation>El archivo ya existe y no lo ha creado QMapShack. Si pulsa 'sí' todos los datos de este archivo se perderán. Incluso si el archivo contiene datos GPX y QMapShack lo ha leído, QMapShack podría no ser capaz de leer y almacenar todos los elementos en el archivo, y aquellos que no haya leído se perderán. Se le recomienda usar otro archivo distinto. <b>¿Quiere realmente sobrescribir el archivo</b></translation>
+        <translation type="obsolete">El archivo ya existe y no lo ha creado QMapShack. Si pulsa 'sí' todos los datos de este archivo se perderán. Incluso si el archivo contiene datos GPX y QMapShack lo ha leído, QMapShack podría no ser capaz de leer y almacenar todos los elementos en el archivo, y aquellos que no haya leído se perderán. Se le recomienda usar otro archivo distinto. <b>¿Quiere realmente sobrescribir el archivo</b></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="395"/>
         <source>Failed to create file '%1'</source>
-        <translation>Fallo al crear el archivo '%1'</translation>
+        <translation type="obsolete">Fallo al crear el archivo '%1'</translation>
     </message>
     <message>
         <source>Saveing GIS data failed...</source>
-        <translation type="vanished">Fallo al guardar los datos GIS...</translation>
+        <translation type="obsolete">Fallo al guardar los datos GIS...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="405"/>
         <source>Failed to write file '%1'</source>
-        <translation>Fallo al escribir en el archivo '%1'</translation>
+        <translation type="obsolete">Fallo al escribir en el archivo '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="262"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="371"/>
         <source>Length: %1 %2</source>
-        <translation>Longitud: %1 %2</translation>
+        <translation type="obsolete">Longitud: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="378"/>
         <source>, %1%2 %3, %4%5 %6</source>
-        <translation>, %1%2 %3, %4%5 %6</translation>
+        <translation type="obsolete">, %1%2 %3, %4%5 %6</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="386"/>
         <source>Time: %1</source>
-        <translation>Tiempo: %1</translation>
+        <translation type="obsolete">Tiempo: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="389"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="399"/>
         <source>, Speed: %1 %2</source>
-        <translation>, Velocidad: %1 %2</translation>
+        <translation type="obsolete">, Velocidad: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="396"/>
         <source>Moving: %1</source>
-        <translation>En movimiento: %1</translation>
+        <translation type="obsolete">En movimiento: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="405"/>
         <source>Start: %1</source>
-        <translation>Comienzo: %1</translation>
+        <translation type="obsolete">Comienzo: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="410"/>
         <source>End: %1</source>
-        <translation>Final: %1</translation>
+        <translation type="obsolete">Final: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="414"/>
         <source>Points: %1 (%2)</source>
-        <translation>Puntos: %1 (%2)</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="523"/>
-        <source>Ele.: %1 %2</source>
-        <translation>Altitud: %1 %2</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="526"/>
-        <source> slope: %1%3 (%2%)</source>
-        <translation> pendiente: %1%3 (%2%)</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="531"/>
-        <source> speed: %1%2</source>
-        <translation> velocidad: %1%2</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="559"/>
-        <source>... and %1 tags not displayed</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="571"/>
-        <source>Ascend: %1%2 (%3%)</source>
-        <translation>Ascenso: %1%2 (%3%)</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="575"/>
-        <source>Ascend: - (-)</source>
-        <translation>Ascenso: - (-)</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="585"/>
-        <source> Descend: - (-) </source>
-        <translation> Descenso: - (-) </translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="606"/>
-        <source> Moving: - (-) </source>
-        <translation> En movimiento: - (-) </translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="625"/>
-        <source>Ascend: %1%2</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="630"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="647"/>
-        <source>, %1%2</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="635"/>
-        <source>Ascend: -</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Puntos: %1 (%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="642"/>
-        <source> Descend: %1%2</source>
-        <translation type="unfinished"></translation>
+        <source>Ele.: %1 %2</source>
+        <translation type="obsolete">Altitud: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="652"/>
-        <source>Descend: -</source>
-        <translation type="unfinished"></translation>
+        <source> slope: %1%3 (%2%)</source>
+        <translation type="obsolete"> pendiente: %1%3 (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="658"/>
-        <source>Dist.: %1%2</source>
-        <translation type="unfinished"></translation>
+        <source> speed: %1%2</source>
+        <translation type="obsolete"> velocidad: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="663"/>
-        <source> Time: %1%2</source>
-        <translation type="unfinished"></translation>
+        <source>Ascend: %1%2 (%3%)</source>
+        <translation type="obsolete">Ascenso: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1307"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1331"/>
-        <source>Permanently removed points %1..%2</source>
-        <translation type="unfinished"></translation>
+        <source>Ascend: - (-)</source>
+        <translation type="obsolete">Ascenso: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1513"/>
-        <source>Hide points.</source>
-        <translation>Ocultar puntos.</translation>
+        <source> Descend: - (-) </source>
+        <translation type="obsolete"> Descenso: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1553"/>
-        <source>Show points.</source>
-        <translation>Mostrar puntos.</translation>
+        <source> Moving: - (-) </source>
+        <translation type="obsolete"> En movimiento: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2088"/>
-        <source>Changed activity to '%1' for complete track.</source>
-        <translation type="unfinished"></translation>
+        <source>Hide points.</source>
+        <translation type="obsolete">Ocultar puntos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2163"/>
-        <source>Changed activity to '%1' for range(%2..%3).</source>
-        <translation type="unfinished"></translation>
+        <source>Show points.</source>
+        <translation type="obsolete">Mostrar puntos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="581"/>
         <source> Descend: %1%2 (%3%)</source>
-        <translation> Descenso: %1%2 (%3%)</translation>
+        <translation type="obsolete"> Descenso: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="249"/>
         <source>Changed trackpoints, sacrificed all previous data.</source>
-        <translation>Se cambiaron los puntos del track, y descartados todos los datos previos.</translation>
+        <translation type="obsolete">Se cambiaron los puntos del track, y descartados todos los datos previos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="592"/>
         <source>Dist.: %1%2 (%3%)</source>
-        <translation>Distancia: %1%2 (%3%)</translation>
+        <translation type="obsolete">Distancia: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="596"/>
         <source>Dist.: - (-)</source>
-        <translation>Dist.: - (-)</translation>
+        <translation type="obsolete">Dist.: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="602"/>
         <source> Moving: %1%2 (%3%)</source>
-        <translation> En movimiento: %1%2 (%3%)</translation>
+        <translation type="obsolete"> En movimiento: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="96"/>
         <source>thin</source>
-        <translation>fino</translation>
+        <translation type="obsolete">fino</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="97"/>
         <source>normal</source>
-        <translation>normal</translation>
+        <translation type="obsolete">normal</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="98"/>
         <source>wide</source>
-        <translation>ancho</translation>
+        <translation type="obsolete">ancho</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="99"/>
         <source>strong</source>
-        <translation>intenso</translation>
-    </message>
-    <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="138"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="63"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="124"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="92"/>
-        <source>_Clone</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="431"/>
-        <source>Area: %1%2</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">intenso</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="493"/>
         <source>Changed area shape.</source>
-        <translation>Se cambió la forma del área.</translation>
+        <translation type="obsolete">Se cambió la forma del área.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="501"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="221"/>
         <source>Changed name.</source>
-        <translation>Se cambió el nombre.</translation>
+        <translation type="obsolete">Se cambió el nombre.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="507"/>
         <source>Changed border width.</source>
-        <translation>Se cambió la anchura del borde.</translation>
+        <translation type="obsolete">Se cambió la anchura del borde.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="513"/>
         <source>Changed fill pattern.</source>
-        <translation>Se cambió el patró de relleno.</translation>
+        <translation type="obsolete">Se cambió el patró de relleno.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="519"/>
         <source>Changed opacity.</source>
-        <translation>Se cambió la opacidad.</translation>
+        <translation type="obsolete">Se cambió la opacidad.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="525"/>
         <source>Changed comment.</source>
-        <translation>Se cambió el comentario.</translation>
+        <translation type="obsolete">Se cambió el comentario.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="531"/>
         <source>Changed description.</source>
-        <translation>Se cambió la descripción.</translation>
+        <translation type="obsolete">Se cambió la descripción.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="537"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="239"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2059"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="366"/>
         <source>Changed links</source>
-        <translation>Se cambió el enlace</translation>
+        <translation type="obsolete">Se cambió el enlace</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="549"/>
         <source>Changed color</source>
-        <translation>Se cambió el color</translation>
+        <translation type="obsolete">Se cambió el color</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="227"/>
         <source>Elevation: %1 %2</source>
-        <translation>Altitud: %1 %2</translation>
+        <translation type="obsolete">Altitud: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="238"/>
         <source>Proximity: %1 %2</source>
-        <translation>Proximidad: %1 %2</translation>
+        <translation type="obsolete">Proximidad: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2041"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="312"/>
         <source>Changed name</source>
-        <translation>Se cambió el nombre</translation>
+        <translation type="obsolete">Se cambió el nombre</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1245"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1264"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1340"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1399"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1578"/>
-        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
-        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
         <source>Edit name...</source>
-        <translation>Editar nombre...</translation>
+        <translation type="obsolete">Editar nombre...</translation>
     </message>
     <message>
         <source>Enter new waypoint name.</source>
         <translation type="obsolete">Introduzca el nuevo nombre del waypoint.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="322"/>
         <source>Changed position</source>
-        <translation>Se cambió la posición</translation>
+        <translation type="obsolete">Se cambió la posición</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="328"/>
         <source>Changed elevation</source>
-        <translation>Se cambió la altitud</translation>
+        <translation type="obsolete">Se cambió la altitud</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="334"/>
         <source>Changed proximity</source>
-        <translation>Se cambió la proximidad</translation>
+        <translation type="obsolete">Se cambió la proximidad</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="348"/>
         <source>Changed icon</source>
-        <translation>Se cambió el icono</translation>
+        <translation type="obsolete">Se cambió el icono</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="372"/>
         <source>Changed images</source>
-        <translation>Se cambió la imagen</translation>
+        <translation type="obsolete">Se cambió la imagen</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="378"/>
         <source>Add image</source>
-        <translation>Añadir Imagen</translation>
+        <translation type="obsolete">Añadir Imagen</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="227"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2047"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="354"/>
         <source>Changed comment</source>
-        <translation>Se cambió el comentario</translation>
+        <translation type="obsolete">Se cambió el comentario</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="233"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2053"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="360"/>
         <source>Changed description</source>
-        <translation>Se cambió la descripción</translation>
+        <translation type="obsolete">Se cambió la descripción</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="266"/>
-        <source>Length: -</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="273"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="456"/>
         <source>Time: %1 %2</source>
-        <translation type="unfinished">Tiempo: %1 %2</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="458"/>
-        <source>Distance: %1 %2</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="277"/>
-        <source>Time: -</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="283"/>
-        <source>Last time routed:<br/>%1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="285"/>
-        <source>with %1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="572"/>
-        <source>Changed route points.</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Tiempo: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="582"/>
         <source>Archived</source>
-        <translation>Archivado</translation>
+        <translation type="obsolete">Archivado</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="586"/>
         <source>Available</source>
-        <translation>Disponible</translation>
+        <translation type="obsolete">Disponible</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="590"/>
         <source>Not Available</source>
-        <translation>No Disponible</translation>
+        <translation type="obsolete">No Disponible</translation>
+    </message>
+    <message>
+        <source>Unknown</source>
+        <translation type="obsolete">Desconocido</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
         <source>Warning...</source>
-        <translation>Aviso...</translation>
+        <translation type="obsolete">Aviso...</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
         <source>This is a typ file with unknown polygon encoding. Please report!</source>
-        <translation>Este es un fichero TYP con una codificación de polígonos desconocida. ¡Por favor repórtelo!</translation>
+        <translation type="obsolete">Este es un fichero TYP con una codificación de polígonos desconocida. ¡Por favor repórtelo!</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
         <source>This is a typ file with unknown polyline encoding. Please report!</source>
-        <translation>Este es un fichero TYP con una codificación de polilíneas desconocida. ¡Por favor repórtelo!</translation>
+        <translation type="obsolete">Este es un fichero TYP con una codificación de polilíneas desconocida. ¡Por favor repórtelo!</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="345"/>
         <source>Initial version.</source>
-        <translation>Versión inicial</translation>
+        <translation type="obsolete">Versión inicial</translation>
     </message>
     <message>
         <source>This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press'Ok'.</source>
         <translation type="obsolete">Este elemento probablemente sea de sólo lectura por no haber sido creado por QMapShack. Habitualmente no deseará cambiar los datos importados. De lo contrario, es correcto pulsar 'OK'.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="453"/>
-        <source><h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press 'Ok'.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/IGisItem.cpp" line="454"/>
         <source>Read Only Mode...</source>
-        <translation>Modo Sólo Lectura...</translation>
+        <translation type="obsolete">Modo Sólo Lectura...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="615"/>
         <source><h4>Comment:</h4></source>
-        <translation><h4>Comentario:</h4></translation>
+        <translation type="obsolete"><h4>Comentario:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="618"/>
         <source><p>--- no comment ---</p></source>
-        <translation><p>---sin comentario---</p></translation>
+        <translation type="obsolete"><p>---sin comentario---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="601"/>
-        <location filename="../gis/IGisItem.cpp" line="660"/>
         <source><h4>Description:</h4></source>
-        <translation><h4>Descripción:</h4></translation>
-    </message>
-    <message>
-        <location filename="../gis/IGisItem.cpp" line="42"/>
-        <source>[no name]</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete"><h4>Descripción:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="604"/>
-        <location filename="../gis/IGisItem.cpp" line="663"/>
         <source><p>--- no description ---</p></source>
-        <translation><p>---sin descripción---</p></translation>
-    </message>
-    <message>
-        <location filename="../gis/IGisItem.cpp" line="629"/>
-        <location filename="../gis/IGisItem.cpp" line="674"/>
-        <source><h4>Links:</h4></source>
-        <translation></translation>
+        <translation type="obsolete"><p>---sin descripción---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="632"/>
-        <location filename="../gis/IGisItem.cpp" line="677"/>
         <source><p>--- no links ---</p></source>
-        <translation><p>--- sin links ---</p></translation>
+        <translation type="obsolete"><p>--- sin links ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1245"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1264"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1340"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1399"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1578"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
         <source>Enter new track name.</source>
-        <translation>Introduzca el nombre del nuevo track.</translation>
+        <translation type="obsolete">Introduzca el nombre del nuevo track.</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
         <source>Enter new area name.</source>
-        <translation>Introduzca el nombre del nuevo área.</translation>
+        <translation type="obsolete">Introduzca el nombre del nuevo área.</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderDatabase.cpp" line="28"/>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="30"/>
         <source>All your data grouped by folders.</source>
-        <translation>Todos tus datos agrupados en carpetas.</translation>
+        <translation type="obsolete">Todos tus datos agrupados en carpetas.</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="66"/>
-        <location filename="../gis/db/CLostFoundProject.cpp" line="39"/>
         <source>Lost & Found</source>
-        <translation>Objetos Perdidos</translation>
+        <translation type="obsolete">Objetos Perdidos</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="61"/>
         <source>Lost & Found (%1)</source>
-        <translation>Objetos Perdidos (%1)</translation>
-    </message>
-    <message>
-        <location filename="../qlgt/converter.cpp" line="198"/>
-        <source>Copy flag information from QLandkarte GT track</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Objetos Perdidos (%1)</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="163"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="217"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="264"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="290"/>
         <source>Corrupt track ...</source>
-        <translation type="unfinished">Track corrupto...</translation>
-    </message>
-    <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="163"/>
-        <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="217"/>
-        <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="264"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="290"/>
-        <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Track corrupto...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="106"/>
         <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
-        <translation>Ocultar puntos con algoritmo Douglas Peuker (%1%2)</translation>
+        <translation type="obsolete">Ocultar puntos con algoritmo Douglas Peuker (%1%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="141"/>
-        <source>Hide points with invalid coordinates at the beginning of the track</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="157"/>
         <source>Reset all hidden track points to visible</source>
-        <translation>Restaurados todos los puntos a visible</translation>
+        <translation type="obsolete">Restaurados todos los puntos a visible</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="191"/>
         <source>Permanently removed all hidden track points</source>
-        <translation>Elminados definitivamente todos los puntos ocultos del track</translation>
+        <translation type="obsolete">Elminados definitivamente todos los puntos ocultos del track</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="241"/>
         <source>Smoothed profile with a Median filter of size %1</source>
-        <translation>Pefil suavizado con Mediana de %1 puntos</translation>
+        <translation type="obsolete">Pefil suavizado con Mediana de %1 puntos</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="277"/>
         <source>Replaced elevation data with data from DEM files.</source>
-        <translation>Datos de elevación sustituidos por valores de fichero DEM.</translation>
+        <translation type="obsolete">Datos de elevación sustituidos por valores de fichero DEM.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="300"/>
         <source>Offset elevation data by %1%2.</source>
-        <translation>Elevación desplazada %1%2.</translation>
+        <translation type="obsolete">Elevación desplazada %1%2.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="319"/>
         <source>Changed start of track to %1.</source>
-        <translation>Cambiado el inicio de track a %1.</translation>
+        <translation type="obsolete">Cambiado el inicio de track a %1.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="338"/>
         <source>Remove timestamps.</source>
-        <translation>Eliminadas las marcas de tiempo.</translation>
+        <translation type="obsolete">Eliminadas las marcas de tiempo.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="361"/>
         <source>Set artificial timestamps with delta of %1 sec.</source>
-        <translation>Marcas de tiempo ficticias con incremento de %1 sec.</translation>
+        <translation type="obsolete">Marcas de tiempo ficticias con incremento de %1 sec.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="394"/>
         <source>Changed speed to %1%2.</source>
-        <translation>Velocidad modificada a %1%2.</translation>
+        <translation type="obsolete">Velocidad modificada a %1%2.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1098"/>
         <source>Delete project...</source>
-        <translation>Eliminar Proyecto...</translation>
+        <translation type="obsolete">Eliminar Proyecto...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1098"/>
         <source>Do you really want to delete %1?</source>
-        <translation>¿Desea realmente eliminar %1?</translation>
+        <translation type="obsolete">¿Desea realmente eliminar %1?</translation>
     </message>
     <message>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
-        <location filename="../gis/tnv/serialization.cpp" line="211"/>
-        <location filename="../gis/tnv/serialization.cpp" line="347"/>
-        <location filename="../gis/tnv/serialization.cpp" line="376"/>
-        <location filename="../gis/tnv/serialization.cpp" line="387"/>
-        <location filename="../gis/tnv/serialization.cpp" line="420"/>
-        <location filename="../gis/tnv/serialization.cpp" line="560"/>
-        <location filename="../gis/tnv/serialization.cpp" line="588"/>
-        <location filename="../gis/tnv/serialization.cpp" line="599"/>
-        <location filename="../gis/tnv/serialization.cpp" line="617"/>
-        <location filename="../gis/tnv/serialization.cpp" line="645"/>
-        <location filename="../gis/tnv/serialization.cpp" line="719"/>
         <source>Error...</source>
-        <translation>Error...</translation>
+        <translation type="obsolete">Error...</translation>
     </message>
     <message>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
-        <location filename="../gis/tnv/serialization.cpp" line="211"/>
-        <location filename="../gis/tnv/serialization.cpp" line="347"/>
-        <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <source>Failed to open %1.</source>
-        <translation>Fallo al abrir %1.</translation>
+        <translation type="obsolete">Fallo al abrir %1.</translation>
     </message>
     <message>
-        <location filename="../gis/tnv/serialization.cpp" line="376"/>
-        <location filename="../gis/tnv/serialization.cpp" line="387"/>
-        <location filename="../gis/tnv/serialization.cpp" line="588"/>
-        <location filename="../gis/tnv/serialization.cpp" line="599"/>
         <source>Only support lon/lat WGS 84 format.</source>
-        <translation type="unfinished">Solamente soporta formato lon/lat WGS84.</translation>
+        <translation type="obsolete">Solamente soporta formato lon/lat WGS84.</translation>
     </message>
     <message>
-        <location filename="../gis/tnv/serialization.cpp" line="420"/>
-        <location filename="../gis/tnv/serialization.cpp" line="617"/>
-        <location filename="../gis/tnv/serialization.cpp" line="645"/>
-        <location filename="../gis/tnv/serialization.cpp" line="719"/>
         <source>Failed to read data.</source>
-        <translation>Fallo al leer los datos.</translation>
-    </message>
-    <message>
-        <location filename="../device/CDeviceGarmin.cpp" line="204"/>
-        <source>Picture%1</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../device/IDevice.cpp" line="204"/>
-        <source>There is another project with the same name. If you press 'ok' it will be removed and replaced.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
-        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
-        <source>Enter new route name.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="28"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="94"/>
-        <source>Foot</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="35"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="95"/>
-        <source>Bicycle</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="42"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="96"/>
-        <source>Motor Bike</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="49"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="97"/>
-        <source>Car</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="56"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="98"/>
-        <source>Cable Car</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="63"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="99"/>
-        <source>Swim</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="70"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="100"/>
-        <source>Ship</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="77"/>
-        <source>Aeronautik</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Fallo al leer los datos.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="101"/>
-        <source>Aeronautics</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="210"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="254"/>
-        <source>Distance:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="212"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="276"/>
-        <source>Ascend:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="214"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="298"/>
-        <source>Descend:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="216"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="320"/>
-        <source>Speed Moving:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="218"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="342"/>
-        <source>Speed Total:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="220"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="364"/>
-        <source>Time Moving:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="222"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="386"/>
-        <source>Time Total:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="53"/>
         <source>Progress</source>
-        <translation type="unfinished">Progreso</translation>
+        <translation type="obsolete">Progreso</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="56"/>
         <source>time</source>
-        <translation type="unfinished">tiempo</translation>
+        <translation type="obsolete">tiempo</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="57"/>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="82"/>
         <source>distance [%1]</source>
-        <translation type="unfinished">distancia [%1]</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="57"/>
-        <source>Slope (directed)</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">distancia [%1]</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="62"/>
         <source>Speed</source>
-        <translation type="unfinished">Velocidad</translation>
+        <translation type="obsolete">Velocidad</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="67"/>
         <source>Elevation</source>
-        <translation type="unfinished">Altitud</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="74"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="100"/>
-        <source>Heart Rate</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="79"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="105"/>
-        <source>Cadence</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="84"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="110"/>
-        <source>Air Temperature</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="89"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="115"/>
-        <source>Water Temperature</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="94"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="120"/>
-        <source>Depth</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Altitud</translation>
     </message>
 </context>
 </TS>
diff --git a/src/locale/qmapshack_fr.ts b/src/locale/qmapshack_fr.ts
index 73c314c..90ed102 100644
--- a/src/locale/qmapshack_fr.ts
+++ b/src/locale/qmapshack_fr.ts
@@ -1,16 +1,119 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
-<TS version="2.1" language="fr">
+<TS version="2.0" language="fr">
 <context>
     <name>CAbout</name>
     <message>
         <location filename="../CAbout.cpp" line="38"/>
         <source>%1 (API V%2, expected V%3)</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 (API V%2, attendu V%3)</translation>
     </message>
     <message>
         <location filename="../CAbout.cpp" line="42"/>
         <source>%1 (API V%2)</source>
+        <translation>%1 (API V%2)</translation>
+    </message>
+</context>
+<context>
+    <name>CActivityTrk</name>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="29"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="117"/>
+        <source>Foot</source>
+        <translation type="unfinished">à pied</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="37"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="118"/>
+        <source>Bicycle</source>
+        <translation type="unfinished">Vélo</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="45"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="119"/>
+        <source>Motor Bike</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="53"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="120"/>
+        <source>Car</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="61"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="121"/>
+        <source>Cable Car</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="69"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="122"/>
+        <source>Swim</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="77"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="123"/>
+        <source>Ship</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="85"/>
+        <source>Aeronautik</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="93"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="125"/>
+        <source>Ski/Winter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="124"/>
+        <source>Aeronautics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="261"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="305"/>
+        <source>Distance:</source>
+        <translation type="unfinished">Distance:</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="263"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="327"/>
+        <source>Ascend:</source>
+        <translation type="unfinished">Dénivelé positif:</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="265"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="349"/>
+        <source>Descend:</source>
+        <translation type="unfinished">Dénivelé négatif:</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="267"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="371"/>
+        <source>Speed Moving:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="269"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="393"/>
+        <source>Speed Total:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="271"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="415"/>
+        <source>Time Moving:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="273"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="437"/>
+        <source>Time Total:</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -23,47 +126,218 @@
     </message>
 </context>
 <context>
+    <name>CColorChooser</name>
+    <message>
+        <location filename="../widgets/CColorChooser.cpp" line="51"/>
+        <source>Esc.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CCommandProcessor</name>
     <message>
         <location filename="../helpers/CCommandProcessor.cpp" line="31"/>
         <source>Print debug output to console.</source>
-        <translation type="unfinished"></translation>
+        <translation>Envoyer les messages de débogage vers la console</translation>
     </message>
     <message>
         <location filename="../helpers/CCommandProcessor.cpp" line="34"/>
         <source>Print debug output to logfile (temp. path).</source>
-        <translation type="unfinished"></translation>
+        <translation>Envoyer les messages de débogage vers un fichier (temp. path).</translation>
     </message>
     <message>
         <location filename="../helpers/CCommandProcessor.cpp" line="37"/>
         <source>Do not show splash screen.</source>
-        <translation type="unfinished"></translation>
+        <translation>Ne pas montrer l'image d'accueil</translation>
     </message>
     <message>
         <location filename="../helpers/CCommandProcessor.cpp" line="40"/>
         <source>File with QMapShack configuration.</source>
-        <translation type="unfinished"></translation>
+        <translation>Fichier de configuration QMS.</translation>
     </message>
     <message>
         <location filename="../helpers/CCommandProcessor.cpp" line="40"/>
         <source>file</source>
-        <translation type="unfinished"></translation>
+        <translation>fichier</translation>
     </message>
     <message>
         <location filename="../helpers/CCommandProcessor.cpp" line="43"/>
         <source>Files for future use.</source>
+        <translation>Fichiers pour usage futur.</translation>
+    </message>
+</context>
+<context>
+    <name>CCreateRouteFromWpt</name>
+    <message>
+        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
+        <source>Edit name...</source>
+        <translation type="unfinished">Éditer le nom...</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
+        <source>Enter new route name.</source>
+        <translation type="unfinished">Entrez le nom de la nouvelle route.</translation>
+    </message>
+</context>
+<context>
+    <name>CDBFolderLostFound</name>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="30"/>
+        <source>All your data grouped by folders.</source>
+        <translation type="unfinished">Vos données groupées par dossiers.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="59"/>
+        <source>Lost & Found (%1)</source>
+        <translation type="unfinished">Perdu & Trouvé (%1)</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="64"/>
+        <source>Lost & Found</source>
+        <translation type="unfinished">Perdu & Trouvé</translation>
+    </message>
+</context>
+<context>
+    <name>CDBFolderMysql</name>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="32"/>
+        <source>All your data grouped by folders.</source>
+        <translation type="unfinished">Vos données groupées par dossiers.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="53"/>
+        <source>MySQL Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="56"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="60"/>
+        <source>Server: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="65"/>
+        <source> (No PW)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="73"/>
+        <source>Error: </source>
+        <translation type="unfinished">Erreur: </translation>
+    </message>
+</context>
+<context>
+    <name>CDBFolderSqlite</name>
+    <message>
+        <location filename="../gis/db/CDBFolderSqlite.cpp" line="28"/>
+        <source>All your data grouped by folders.</source>
+        <translation type="unfinished">Vos données groupées par dossiers.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderSqlite.cpp" line="46"/>
+        <source>SQLite Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderSqlite.cpp" line="56"/>
+        <source>File: </source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CDBItem</name>
+    <message>
+        <location filename="../gis/db/CDBItem.cpp" line="87"/>
+        <source>%1 min.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBItem.cpp" line="91"/>
+        <source>%1 h</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBItem.cpp" line="95"/>
+        <source>%1 days</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CDBProject</name>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="195"/>
+        <source>The item %1 has been changed by %2 (%3). 
+
+To solve this conflict you can create and save a clone, force your version or drop your version and take the one from the database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="201"/>
+        <source>Conflict with database...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="202"/>
+        <source>Clone && Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="203"/>
+        <source>Force Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="204"/>
+        <source>Take remote</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="507"/>
+        <source>Missing folder...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="508"/>
+        <source>Failed to save project. The folder has been deleted in the database.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="517"/>
+        <source>Save ...</source>
+        <translation type="unfinished">Enregistrer...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <source>Error</source>
+        <translation type="unfinished">Erreur</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <source>There was an unexpected database error:
+
+%1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="704"/>
+        <source>The project '%1' is about to update itself from the database. However there are changes not saved.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="705"/>
+        <source>Save changes?</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
     <name>CDemList</name>
     <message>
-        <location filename="../dem/CDemList.cpp" line="145"/>
+        <location filename="../dem/CDemList.cpp" line="198"/>
         <source>Deactivate</source>
         <translation>Désactiver</translation>
     </message>
     <message>
-        <location filename="../dem/CDemList.cpp" line="145"/>
+        <location filename="../dem/CDemList.cpp" line="198"/>
         <source>Activate</source>
         <translation>Activer</translation>
     </message>
@@ -85,7 +359,7 @@
     <name>CDemPropSetup</name>
     <message>
         <source><b>Grade %1</b></source>
-        <translation type="vanished"><b>Niveau %1</b></translation>
+        <translation type="obsolete"><b>Niveau %1</b></translation>
     </message>
 </context>
 <context>
@@ -93,8 +367,8 @@
     <message>
         <location filename="../dem/CDemVRT.cpp" line="44"/>
         <location filename="../dem/CDemVRT.cpp" line="52"/>
-        <location filename="../dem/CDemVRT.cpp" line="62"/>
-        <location filename="../dem/CDemVRT.cpp" line="91"/>
+        <location filename="../dem/CDemVRT.cpp" line="61"/>
+        <location filename="../dem/CDemVRT.cpp" line="90"/>
         <source>Error...</source>
         <translation>Erreur...</translation>
     </message>
@@ -105,12 +379,12 @@
     </message>
     <message>
         <location filename="../dem/CDemVRT.cpp" line="52"/>
-        <location filename="../dem/CDemVRT.cpp" line="62"/>
+        <location filename="../dem/CDemVRT.cpp" line="61"/>
         <source>DEM must have one band with 16bit or 32bit data.</source>
         <translation>Le DEM doit contenir un seule bande avec des données en 16 ou 32 bits.</translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="91"/>
+        <location filename="../dem/CDemVRT.cpp" line="90"/>
         <source>No georeference information found.</source>
         <translation>Aucune information de géoréférencement trouvé</translation>
     </message>
@@ -143,14 +417,12 @@
 <context>
     <name>CDetailsOvlArea</name>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="134"/>
         <source>Edit name...</source>
-        <translation>Éditer le nom...</translation>
+        <translation type="obsolete">Éditer le nom...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="134"/>
         <source>Enter new area name.</source>
-        <translation type="unfinished">Entrez le nom de la nouvelle surface.</translation>
+        <translation type="obsolete">Entrez le nom de la nouvelle surface.</translation>
     </message>
     <message>
         <source>Enter new waypoint name.</source>
@@ -160,13 +432,13 @@
 <context>
     <name>CDetailsPrj</name>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="247"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="687"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="270"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="738"/>
         <source>none</source>
         <translation>aucun</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="320"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="343"/>
         <source>Build diary...</source>
         <translation>Créer le journal...</translation>
     </message>
@@ -175,97 +447,97 @@
         <translation type="obsolete">Annuler</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="395"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="446"/>
         <source><h2>Waypoints</h2></source>
         <translation><h2>Waypoints</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="402"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="428"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="532"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="622"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="652"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="453"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="479"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="583"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="673"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="703"/>
         <source>Info</source>
         <translation>Information</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="403"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="429"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="533"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="623"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="653"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="454"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="480"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="584"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="674"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="704"/>
         <source>Comment</source>
         <translation>Commentaire</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="421"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="472"/>
         <source><h2>Tracks</h2></source>
         <translation><h2>Traces</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="615"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="666"/>
         <source><h2>Areas</h2></source>
         <translation><h2>Surfaces</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="101"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="126"/>
         <source>You want to sort waypoints along a track, but you switched off track and waypoint correlation. Do you want to switch it on again?</source>
-        <translation type="unfinished"></translation>
+        <translation>Vous voulez trier des waypoints le long d'une trace, mais vous avez désactivé la corrélation des traces et waypoints. Voulez-vous la réactiver ?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="102"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="127"/>
         <source>Correlation...</source>
-        <translation type="unfinished"></translation>
+        <translation>Corrélation en cours...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="375"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="398"/>
         <source><b>Summary over all tracks in project</b><br/></source>
-        <translation type="unfinished"></translation>
+        <translation>Résumé de toutes les traces du projet</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="551"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="602"/>
         <source>distance: %1%2</source>
         <translation>distance : %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="553"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="604"/>
         <source>ascent: %1%2</source>
         <translation>montée : %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="555"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="606"/>
         <source>descend: %1%2</source>
         <translation>descente : %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="645"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="696"/>
         <source><h2>Routes</h2></source>
-        <translation type="unfinished"></translation>
+        <translation><h2>Routes</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="673"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="700"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="724"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="751"/>
         <source>Edit name...</source>
         <translation>Éditer le nom...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="673"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="700"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="724"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="751"/>
         <source>Enter new project name.</source>
-        <translation type="unfinished">Entrez le nom du nouveau projet.</translation>
+        <translation>Entrez le nom du nouveau projet.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="682"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="733"/>
         <source>Edit keywords...</source>
         <translation>Éditer les mots-clés...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="682"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="733"/>
         <source>Enter keywords.</source>
         <translation>Saisir les mots-clés.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="816"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="882"/>
         <source>Print Diary</source>
         <translation>Imprimer le journal</translation>
     </message>
@@ -273,14 +545,12 @@
 <context>
     <name>CDetailsRte</name>
     <message>
-        <location filename="../gis/rte/CDetailsRte.cpp" line="119"/>
         <source>Edit name...</source>
-        <translation type="unfinished">Éditer le nom...</translation>
+        <translation type="obsolete">Éditer le nom...</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CDetailsRte.cpp" line="119"/>
         <source>Enter new route name.</source>
-        <translation type="unfinished">Entrez le nom de la nouvelle route.</translation>
+        <translation type="obsolete">Entrez le nom de la nouvelle route.</translation>
     </message>
 </context>
 <context>
@@ -294,82 +564,105 @@
         <translation type="obsolete">durée</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="409"/>
         <source>Solid color</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Couleur unie</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="112"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="182"/>
         <source>Reduce visible track points</source>
         <translation>Réduire les points visibles de la trace</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="128"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="185"/>
         <source>Change elevation of track points</source>
         <translation>Modifier l'altitude des points de la trace</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="141"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="188"/>
         <source>Change timestamp of track points</source>
         <translation>Modifier l'horodatage des points de la trace</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="154"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="191"/>
+        <source>Modify track points' extensions</source>
+        <translation>Modifier les extensions des points de la trace</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="194"/>
         <source>Cut track into pieces</source>
         <translation>Découper la trace</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="309"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="318"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="321"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="327"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="346"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="348"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="411"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="419"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="422"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="427"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="441"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="443"/>
         <source>%1 %2</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="603"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="508"/>
+        <source>Color</source>
+        <translation>Couleur</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="509"/>
+        <source>Activity</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Edit name...</source>
-        <translation>Éditer le nom...</translation>
+        <translation type="obsolete">Éditer le nom...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="603"/>
         <source>Enter new track name.</source>
-        <translation type="unfinished">Entrez le nom de la nouvelle trace.</translation>
+        <translation type="obsolete">Entrez le nom de la nouvelle trace.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="655"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="742"/>
         <source>Reset activities...</source>
-        <translation type="unfinished"></translation>
+        <translation>Réinitialiser les activités...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="655"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="742"/>
         <source>This will remove all activities from the track. Proceed?</source>
-        <translation type="unfinished"></translation>
+        <translation>Toutes les activités seront supprimées de la trace. Etes-vous sûr ?</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="661"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="748"/>
         <source>None</source>
-        <translation type="unfinished"></translation>
+        <translation>Aucune</translation>
     </message>
 </context>
 <context>
     <name>CDetailsWpt</name>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="134"/>
         <source>Edit name...</source>
-        <translation>Éditer le nom...</translation>
+        <translation type="obsolete">Éditer le nom...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="134"/>
         <source>Enter new waypoint name.</source>
-        <translation type="unfinished">Entrez le nom du nouveau waypoint.</translation>
+        <translation type="obsolete">Entrez le nom du nouveau waypoint.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="153"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="166"/>
         <source>Enter new proximity range.</source>
-        <translation type="unfinished">Entrez le rayon de l'alarme de proximité.</translation>
+        <translation>Entrez le rayon de l'alarme de proximité.</translation>
+    </message>
+</context>
+<context>
+    <name>CDeviceGarmin</name>
+    <message>
+        <location filename="../device/CDeviceGarmin.cpp" line="228"/>
+        <source>Picture%1</source>
+        <translation type="unfinished">Image%1</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/serialization.cpp" line="1039"/>
+        <source>Unknown</source>
+        <translation type="unfinished">Inconnu</translation>
     </message>
 </context>
 <context>
@@ -381,75 +674,736 @@
     </message>
 </context>
 <context>
-    <name>CGisListDB</name>
+    <name>CFilterDeleteExtension</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="75"/>
-        <source>Add Database</source>
-        <translation>Ajouter une base de données</translation>
+        <location filename="../gis/trk/filter/CFilterDeleteExtension.cpp" line="61"/>
+        <source>No extension available</source>
+        <translation>Aucune extension disponible</translation>
     </message>
+</context>
+<context>
+    <name>CFitCrcState</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="78"/>
-        <source>Add Folder</source>
-        <translation>Ajouter un dossier</translation>
+        <location filename="../gis/fit/decoder/CFitCrcState.cpp" line="32"/>
+        <source>FIT decoding error : invalid CRC.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitDecoder</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="79"/>
-        <source>Delete Folder</source>
-        <translation>Supprimer le dossier</translation>
+        <location filename="../gis/fit/decoder/CFitDecoder.cpp" line="116"/>
+        <source>FIT decoding error: unexpected end of file %1.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitFieldBuilder</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="82"/>
-        <location filename="../gis/CGisListDB.cpp" line="92"/>
-        <source>Delete Item</source>
-        <translation>Supprimer un élément</translation>
+        <location filename="../gis/fit/decoder/CFitFieldBuilder.cpp" line="70"/>
+        <source>FIT decoding error: unknown base type %1.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitHeaderState</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="86"/>
-        <source>Remove Database</source>
-        <translation>Enlever la base de données</translation>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="70"/>
+        <source>FIT decoding error: protocol %1 version not supported.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="89"/>
-        <source>Empty</source>
-        <translation>Vider</translation>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="121"/>
+        <source>FIT decoding error: file header signature mismatch. File is not FIT.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitProject</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="281"/>
-        <source>Remove database...</source>
-        <translation>Enlever la base de données</translation>
+        <location filename="../gis/fit/CFitProject.cpp" line="44"/>
+        <location filename="../gis/fit/CFitProject.cpp" line="62"/>
+        <source>Failed to load file %1...</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="281"/>
-        <source>Do you really want to remove '%1' from the list?</source>
+        <location filename="../gis/fit/CFitProject.cpp" line="86"/>
+        <source>Failed to open FIT file %1.</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitRecordContentState</name>
     <message>
-        <source>Do you realy want to remove '%1' from the list?</source>
-        <translation type="vanished">Êtes-vous sûr de vouloir enlever '%1' de la liste ?</translation>
+        <location filename="../gis/fit/decoder/CFitRecordContentState.cpp" line="66"/>
+        <source>FIT decoding error: architecture %1 not supported.</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="322"/>
-        <source>Delete database folder...</source>
-        <translation>Supprimer la base de données...</translation>
+        <location filename="../gis/fit/decoder/CFitRecordContentState.cpp" line="87"/>
+        <source>FIT decoding error: invalid offset %1 for state 'record content'</source>
+        <translation type="unfinished"></translation>
     </message>
-    <message>
-        <location filename="../gis/CGisListDB.cpp" line="322"/>
+</context>
+<context>
+    <name>CGarminTyp</name>
+    <message>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
+        <source>Warning...</source>
+        <translation type="unfinished">Avertissement...</translation>
+    </message>
+    <message>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
+        <source>This is a typ file with unknown polygon encoding. Please report!</source>
+        <translation type="unfinished">Ceci est un fichier type avec un encodage de polygone inconnu. Veuillez signaler ce problème.</translation>
+    </message>
+    <message>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
+        <source>This is a typ file with unknown polyline encoding. Please report!</source>
+        <translation type="unfinished">Ceci est un fichier type avec un encodage de polyligne inconnu. Veuillez signaler ce problème.</translation>
+    </message>
+</context>
+<context>
+    <name>CGisItemOvlArea</name>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="36"/>
+        <source>thin</source>
+        <translation type="unfinished">fine</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="37"/>
+        <source>normal</source>
+        <translation type="unfinished">normal</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="38"/>
+        <source>wide</source>
+        <translation type="unfinished">large</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="39"/>
+        <source>strong</source>
+        <translation type="unfinished">épaisse</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="78"/>
+        <source>_Clone</source>
+        <translation type="unfinished">_Clone</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="380"/>
+        <source>Area: %1%2</source>
+        <translation type="unfinished">Surface: %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="442"/>
+        <source>Changed area shape.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="450"/>
+        <source>Changed name.</source>
+        <translation type="unfinished">Nom modifié...</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="456"/>
+        <source>Changed border width.</source>
+        <translation type="unfinished">Largeur de la bordure modifiée...</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="462"/>
+        <source>Changed fill pattern.</source>
+        <translation type="unfinished">Remplissage modifié...</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="468"/>
+        <source>Changed opacity.</source>
+        <translation type="unfinished">Opacité modifiée...</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="474"/>
+        <source>Changed comment.</source>
+        <translation type="unfinished">Commentaire modifié...</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="480"/>
+        <source>Changed description.</source>
+        <translation type="unfinished">Description modifiée...</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="486"/>
+        <source>Changed links</source>
+        <translation type="unfinished">Liens modifiés...</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="497"/>
+        <source>Changed color</source>
+        <translation type="unfinished">Couleur modifiée...</translation>
+    </message>
+</context>
+<context>
+    <name>CGisItemRte</name>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="63"/>
+        <source>_Clone</source>
+        <translation type="unfinished">_Clone</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="249"/>
+        <source>Changed name.</source>
+        <translation type="unfinished">Nom modifié...</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="255"/>
+        <source>Changed comment</source>
+        <translation type="unfinished">Commentaire modifié</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="261"/>
+        <source>Changed description</source>
+        <translation type="unfinished">Description modifiée</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="267"/>
+        <source>Changed links</source>
+        <translation type="unfinished">Liens modifiés...</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="285"/>
+        <source>Length: %1 %2</source>
+        <translation type="unfinished">Longueur: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="289"/>
+        <source>Length: -</source>
+        <translation type="unfinished">Longueur: -</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="296"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="479"/>
+        <source>Time: %1 %2</source>
+        <translation type="unfinished">Durée: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="300"/>
+        <source>Time: -</source>
+        <translation type="unfinished">Heure : -</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="306"/>
+        <source>Last time routed:<br/>%1</source>
+        <translation type="unfinished">Date du dernier calcul d'itinéraire : <br/>%1</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="308"/>
+        <source>with %1</source>
+        <translation type="unfinished">avec %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="481"/>
+        <source>Distance: %1 %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="595"/>
+        <source>Changed route points.</source>
+        <translation type="unfinished">Points de route modifiés.</translation>
+    </message>
+</context>
+<context>
+    <name>CGisItemTrk</name>
+    <message>
+        <location filename="../gis/fit/serialization.cpp" line="188"/>
+        <source>FIT file %1 contains no GPS data.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="211"/>
+        <location filename="../gis/tnv/serialization.cpp" line="347"/>
+        <location filename="../gis/tnv/serialization.cpp" line="376"/>
+        <location filename="../gis/tnv/serialization.cpp" line="387"/>
+        <location filename="../gis/tnv/serialization.cpp" line="420"/>
+        <source>Error...</source>
+        <translation type="unfinished">Erreur...</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="211"/>
+        <location filename="../gis/tnv/serialization.cpp" line="347"/>
+        <source>Failed to open %1.</source>
+        <translation type="unfinished">Impossible d'ouvrir %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="376"/>
+        <location filename="../gis/tnv/serialization.cpp" line="387"/>
+        <source>Only support lon/lat WGS 84 format.</source>
+        <translation type="unfinished">Le seul format lon/lat autorisé est WGS 84</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="420"/>
+        <source>Failed to read data.</source>
+        <translation type="unfinished">Impossible de lire les données.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="124"/>
+        <source>_Clone</source>
+        <translation type="unfinished">_Clone</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="291"/>
+        <source>Changed trackpoints, sacrificed all previous data.</source>
+        <translation type="unfinished">Points de la trace modifiés, Les données antérieures sont perdues.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="394"/>
+        <source>Length: %1 %2</source>
+        <translation type="unfinished">Longueur: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="401"/>
+        <source>, %1%2 %3, %4%5 %6</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="409"/>
+        <source>Time: %1</source>
+        <translation type="unfinished">Durée: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="412"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="422"/>
+        <source>, Speed: %1 %2</source>
+        <translation type="unfinished">, vitesse %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="419"/>
+        <source>Moving: %1</source>
+        <translation type="unfinished">Déplacement: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="428"/>
+        <source>Start: %1</source>
+        <translation type="unfinished">Début: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="433"/>
+        <source>End: %1</source>
+        <translation type="unfinished">Fin: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="437"/>
+        <source>Points: %1 (%2)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="546"/>
+        <source>Ele.: %1 %2</source>
+        <translation type="unfinished">Altitude: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="549"/>
+        <source> slope: %1%3 (%2%)</source>
+        <translation type="unfinished"> Pente: %1%3(%2%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="554"/>
+        <source> speed: %1%2</source>
+        <translation type="unfinished"> Vitesse: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="582"/>
+        <source>... and %1 tags not displayed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="594"/>
+        <source>Ascend: %1%2 (%3%)</source>
+        <translation type="unfinished">Montée: %1%2 (%3%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="598"/>
+        <source>Ascend: - (-)</source>
+        <translation type="unfinished">Montées: - (-)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="604"/>
+        <source> Descend: %1%2 (%3%)</source>
+        <translation type="unfinished">  Descente: %1%2 (%3%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="608"/>
+        <source> Descend: - (-) </source>
+        <translation type="unfinished">Descente: - (-)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="615"/>
+        <source>Dist.: %1%2 (%3%)</source>
+        <translation type="unfinished">Dist.: %1%2 (%3%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="619"/>
+        <source>Dist.: - (-)</source>
+        <translation type="unfinished">Dist.: - (-)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="625"/>
+        <source> Moving: %1%2 (%3%)</source>
+        <translation type="unfinished">  En mouvement: %1%2 (%3%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="629"/>
+        <source> Moving: - (-) </source>
+        <translation type="unfinished">En mouvement: - (-)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="648"/>
+        <source>Ascend: %1%2</source>
+        <translation type="unfinished">Montée : %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="653"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="670"/>
+        <source>, %1%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="658"/>
+        <source>Ascend: -</source>
+        <translation type="unfinished">Montée : -</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="665"/>
+        <source> Descend: %1%2</source>
+        <translation type="unfinished">Descente : %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="675"/>
+        <source>Descend: -</source>
+        <translation type="unfinished">Descente : -</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="681"/>
+        <source>Dist.: %1%2</source>
+        <translation type="unfinished">Dist.: %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="686"/>
+        <source> Time: %1%2</source>
+        <translation type="unfinished"> Temps : %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <source>Edit name...</source>
+        <translation type="unfinished">Éditer le nom...</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <source>Enter new track name.</source>
+        <translation type="unfinished">Entrez le nom de la nouvelle trace.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1331"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1355"/>
+        <source>Permanently removed points %1..%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1537"/>
+        <source>Hide points.</source>
+        <translation type="unfinished">Cacher des points.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1577"/>
+        <source>Show points.</source>
+        <translation type="unfinished">Afficher les points.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2143"/>
+        <source>Changed name</source>
+        <translation type="unfinished">Nom modifié</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2149"/>
+        <source>Changed comment</source>
+        <translation type="unfinished">Commentaire modifié</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2155"/>
+        <source>Changed description</source>
+        <translation type="unfinished">Description modifiée</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2161"/>
+        <source>Changed links</source>
+        <translation type="unfinished">Liens modifiés...</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2188"/>
+        <source>Changed activity to '%1' for complete track.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2262"/>
+        <source>Changed activity to '%1' for range(%2..%3).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="108"/>
+        <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
+        <translation type="unfinished">Cacher des points avec l'algorithme Douglas Peuker (%1%2)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="143"/>
+        <source>Hide points with invalid coordinates at the beginning of the track</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="159"/>
+        <source>Reset all hidden track points to visible</source>
+        <translation type="unfinished">Restaurer les points cachés</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="193"/>
+        <source>Permanently removed all hidden track points</source>
+        <translation type="unfinished">Supprimer définitivement tous les points cachés</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="243"/>
+        <source>Smoothed profile with a Median filter of size %1</source>
+        <translation type="unfinished">Profile lissé avec un filtre médian de dimension %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="279"/>
+        <source>Replaced elevation data with data from DEM files.</source>
+        <translation type="unfinished">Les altitudes ont été remplacées  par les données DEM</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="302"/>
+        <source>Offset elevation data by %1%2.</source>
+        <translation type="unfinished">Décaler les altitudes de %1%2.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="321"/>
+        <source>Changed start of track to %1.</source>
+        <translation type="unfinished">Début de la trace modifié à %1.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="340"/>
+        <source>Remove timestamps.</source>
+        <translation type="unfinished">Horodatage Supprimé.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="363"/>
+        <source>Set artificial timestamps with delta of %1 sec.</source>
+        <translation type="unfinished">Horodatage artificiel ajouté avec un décalage de %1 sec.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="396"/>
+        <source>Changed speed to %1%2.</source>
+        <translation type="unfinished">Vitesse modifiée à %1%2.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="415"/>
+        <source>%1 (Segment %2)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="438"/>
+        <source>Removed extension %1 from all Track Points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/converter.cpp" line="198"/>
+        <source>Copy flag information from QLandkarte GT track</source>
+        <translation type="unfinished">Copier la balise d'information de la trace QLandkarte GT</translation>
+    </message>
+</context>
+<context>
+    <name>CGisItemWpt</name>
+    <message>
+        <location filename="../gis/gpx/serialization.cpp" line="588"/>
+        <source>Archived</source>
+        <translation type="unfinished">Archivé</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/serialization.cpp" line="592"/>
+        <source>Available</source>
+        <translation type="unfinished">Disponible</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/serialization.cpp" line="596"/>
+        <source>Not Available</source>
+        <translation type="unfinished">Non disponible</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="102"/>
+        <source>_Clone</source>
+        <translation type="unfinished">_Clone</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="267"/>
+        <source>Elevation: %1 %2</source>
+        <translation type="unfinished">Altitude: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="278"/>
+        <source>Proximity: %1 %2</source>
+        <translation type="unfinished">Proximité: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="352"/>
+        <source>Changed name</source>
+        <translation type="unfinished">Nom modifié</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="362"/>
+        <source>Changed position</source>
+        <translation type="unfinished">Position modifiée</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="368"/>
+        <source>Changed elevation</source>
+        <translation type="unfinished">Altitude modifiée</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="374"/>
+        <source>Changed proximity</source>
+        <translation type="unfinished">Rayon de proximité modifié</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="388"/>
+        <source>Changed icon</source>
+        <translation type="unfinished">Icône modifié</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="394"/>
+        <source>Changed comment</source>
+        <translation type="unfinished">Commentaire modifié</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="400"/>
+        <source>Changed description</source>
+        <translation type="unfinished">Description modifiée</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="406"/>
+        <source>Changed links</source>
+        <translation type="unfinished">Liens modifiés...</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="412"/>
+        <source>Changed images</source>
+        <translation type="unfinished">Images modifiées</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="418"/>
+        <source>Add image</source>
+        <translation type="unfinished">Ajouter une image</translation>
+    </message>
+</context>
+<context>
+    <name>CGisListDB</name>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="81"/>
+        <source>Due to changes in the database system QMapShack forgot about the filename of your database '%1'. You have to select it again in the next step.</source>
+        <translation>A cause d'évolutions de la gestion des bases de données, QMapShack doit de nouveau connaître l'emplacement de votre base de données. '%1'.  Indiquez-le à l'étape suivante.</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="82"/>
+        <source>Select database file.</source>
+        <translation>Sélectionnez un fichier de base de données</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="115"/>
+        <source>Add Database</source>
+        <translation>Ajouter une base de données</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="118"/>
+        <source>Add Folder</source>
+        <translation>Ajouter un dossier</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="119"/>
+        <source>Delete Folder</source>
+        <translation>Supprimer le dossier</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="122"/>
+        <location filename="../gis/CGisListDB.cpp" line="133"/>
+        <source>Delete Item</source>
+        <translation>Supprimer un élément</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="126"/>
+        <source>Sync. with Database</source>
+        <translation>Synchroniser avec la base de données</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="127"/>
+        <source>Remove Database</source>
+        <translation>Enlever la base de données</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="130"/>
+        <source>Empty</source>
+        <translation>Vider</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="418"/>
+        <source>Remove database...</source>
+        <translation>Enlever la base de données</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="418"/>
+        <source>Do you really want to remove '%1' from the list?</source>
+        <translation>Voulez-vous vraiment supprimere '%1' de la liste ?</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="611"/>
+        <source>Are you sure you want to delete '%1' from folder '%2'?</source>
+        <translation type="unfinished">Êtes-vous sûr de vouloir supprimer %1 du dossier %2?</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="612"/>
+        <source>Delete...</source>
+        <translation type="unfinished">Supprimer...</translation>
+    </message>
+    <message>
+        <source>Do you realy want to remove '%1' from the list?</source>
+        <translation type="obsolete">Êtes-vous sûr de vouloir enlever '%1' de la liste ?</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="476"/>
+        <source>Delete database folder...</source>
+        <translation>Supprimer la base de données...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="476"/>
         <source>Are you sure you want to delete "%1" from the database?</source>
         <translation>Êtes-vous sûr de vouloir enlever '%1' de la liste ?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="348"/>
-        <location filename="../gis/CGisListDB.cpp" line="363"/>
+        <location filename="../gis/CGisListDB.cpp" line="503"/>
+        <location filename="../gis/CGisListDB.cpp" line="524"/>
         <source>Remove items...</source>
         <translation>Supprimer les éléments...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="348"/>
+        <location filename="../gis/CGisListDB.cpp" line="503"/>
         <source>Are you sure you want to delete all items from Lost&Found? This will remove them permanently.</source>
         <translation>Êtes-vous sûr de vouloir supprimer tous les éléments dans Perdu & Trouvé ? Les éléments seront supprimés définitivement.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="363"/>
+        <location filename="../gis/CGisListDB.cpp" line="524"/>
         <source>Are you sure you want to delete all selected items from Lost&Found? This will remove them permanently.</source>
         <translation>Êtes-vous sûr de vouloir supprimer les éléments sélectionnés dans Perdu & Trouvé ? Les éléments seront supprimés définitivement.</translation>
     </message>
@@ -457,27 +1411,27 @@
 <context>
     <name>CGisListWks</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="97"/>
+        <location filename="../gis/CGisListWks.cpp" line="99"/>
         <source>Edit..</source>
         <translation>Éditer..</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="98"/>
+        <location filename="../gis/CGisListWks.cpp" line="100"/>
         <source>Show on Map</source>
-        <translation type="unfinished"></translation>
+        <translation>Afficher sur la carte</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="99"/>
+        <location filename="../gis/CGisListWks.cpp" line="101"/>
         <source>Hide from Map</source>
-        <translation type="unfinished"></translation>
+        <translation>Masquer</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="102"/>
+        <location filename="../gis/CGisListWks.cpp" line="105"/>
         <source>Save As...</source>
         <translation>Enregistrer sous...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="101"/>
+        <location filename="../gis/CGisListWks.cpp" line="104"/>
         <source>Save</source>
         <translation>Enregistrer</translation>
     </message>
@@ -486,140 +1440,155 @@
         <translation type="obsolete">Mettre à jour le projet sur tous les appareils</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <location filename="../gis/CGisListWks.cpp" line="108"/>
         <source>Send to Devices</source>
         <translation>Envoyer vers les appareils</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="106"/>
+        <location filename="../gis/CGisListWks.cpp" line="109"/>
+        <source>Sync. with Database</source>
+        <translation>Synchroniser avec la base de données</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="112"/>
         <source>Close</source>
         <translation>Fermer</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="112"/>
+        <location filename="../gis/CGisListWks.cpp" line="118"/>
         <source>Update Project on Device</source>
         <translation>Mettre à jour le projet sur l'appareil</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="113"/>
-        <location filename="../gis/CGisListWks.cpp" line="134"/>
+        <location filename="../gis/CGisListWks.cpp" line="119"/>
+        <location filename="../gis/CGisListWks.cpp" line="140"/>
         <source>Delete</source>
         <translation>Supprimer</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="124"/>
+        <location filename="../gis/CGisListWks.cpp" line="130"/>
         <source>Edit...</source>
         <translation>Éditer...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="125"/>
+        <location filename="../gis/CGisListWks.cpp" line="131"/>
         <source>Copy to...</source>
         <translation>Copier vers...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="127"/>
+        <location filename="../gis/CGisListWks.cpp" line="133"/>
         <source>Track Profile</source>
         <translation>Profile de la trace</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="129"/>
+        <location filename="../gis/CGisListWks.cpp" line="135"/>
         <source>Select Range</source>
         <translation>Sélectionner des points</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="130"/>
+        <location filename="../gis/CGisListWks.cpp" line="136"/>
         <source>Edit Track Points</source>
         <translation>Éditer les points de la trace</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="131"/>
+        <location filename="../gis/CGisListWks.cpp" line="137"/>
         <source>Reverse Track</source>
         <translation>Inverser la trace</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="132"/>
+        <location filename="../gis/CGisListWks.cpp" line="138"/>
         <source>Combine Tracks</source>
         <translation>Joindre des traces</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="140"/>
+        <location filename="../gis/CGisListWks.cpp" line="146"/>
         <source>Show Bubble</source>
         <translation>Afficher la bulle</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="142"/>
+        <location filename="../gis/CGisListWks.cpp" line="148"/>
         <source>Move Waypoint</source>
         <translation>Déplacer le waypoint</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="143"/>
+        <location filename="../gis/CGisListWks.cpp" line="149"/>
         <source>Proj. Waypoint...</source>
         <translation>Projection du waypoint...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="151"/>
+        <location filename="../gis/CGisListWks.cpp" line="157"/>
         <source>Route Instructions</source>
-        <translation type="unfinished"></translation>
+        <translation>Instructions de guidage</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="153"/>
+        <location filename="../gis/CGisListWks.cpp" line="159"/>
         <source>Calculate Route</source>
         <translation>Calculer l'itinéraire</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="154"/>
+        <location filename="../gis/CGisListWks.cpp" line="160"/>
         <source>Reset Route</source>
         <translation>Réinitialiser la route</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="155"/>
+        <location filename="../gis/CGisListWks.cpp" line="161"/>
         <source>Edit Route</source>
         <translation>Éditer la route</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="164"/>
+        <location filename="../gis/CGisListWks.cpp" line="170"/>
         <source>Edit Area Points</source>
         <translation>Éditer les points de la surface</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="171"/>
+        <location filename="../gis/CGisListWks.cpp" line="177"/>
         <source>Create Route</source>
-        <translation type="unfinished"></translation>
+        <translation>Créer une route</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="613"/>
+        <location filename="../gis/CGisListWks.cpp" line="621"/>
         <source>Drop items...</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="740"/>
+        <location filename="../gis/CGisListWks.cpp" line="775"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Sauvegarde de l'espace de travail. Patientez.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="787"/>
+        <location filename="../gis/CGisListWks.cpp" line="821"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Chargement de l'espace de travail. Patientez.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1062"/>
+        <location filename="../gis/CGisListWks.cpp" line="1128"/>
         <source>Close all projects...</source>
         <translation>Fermer tous les projets...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1062"/>
+        <location filename="../gis/CGisListWks.cpp" line="1128"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Ceci enlevera tous les projets de l'espace de travail.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1266"/>
+        <location filename="../gis/CGisListWks.cpp" line="1151"/>
+        <source>Delete project...</source>
+        <translation type="unfinished">Supprimer le projet</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="1151"/>
+        <source>Do you really want to delete %1?</source>
+        <translation type="unfinished">Êtes-vous sûr de vouloir supprimer %1?</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="1347"/>
         <source>Copy items...</source>
-        <translation type="unfinished">Copier les éléments...</translation>
+        <translation>Copier les éléments...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="638"/>
-        <location filename="../gis/CGisListWks.cpp" line="1544"/>
-        <location filename="../gis/CGisListWks.cpp" line="1582"/>
+        <location filename="../gis/CGisListWks.cpp" line="646"/>
+        <location filename="../gis/CGisListWks.cpp" line="1632"/>
+        <location filename="../gis/CGisListWks.cpp" line="1670"/>
         <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
         <translation><b>Mise à jour des appareils</b><p>Mise à jour de %1<br/>Patientez...</p></translation>
     </message>
@@ -627,27 +1596,79 @@
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="114"/>
+        <location filename="../gis/CGisWidget.cpp" line="131"/>
         <source>Load project...</source>
-        <translation type="unfinished"></translation>
+        <translation>Charger le projet...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="114"/>
+        <location filename="../gis/CGisWidget.cpp" line="131"/>
         <source>The project "%1" is already in the workspace.</source>
-        <translation type="unfinished"></translation>
+        <translation>Le projet "%1" est déjà présent dans l'espace de travail.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="461"/>
+        <location filename="../gis/CGisWidget.cpp" line="486"/>
         <source>Cut Track...</source>
         <translation>Couper la trace...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="461"/>
+        <location filename="../gis/CGisWidget.cpp" line="486"/>
         <source>Do you want to delete the original track?</source>
         <translation>Voulez-vous supprimer la trace originale?</translation>
     </message>
 </context>
 <context>
+    <name>CGpsProject</name>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="90"/>
+        <source>Failed to load file %1...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="112"/>
+        <source>Failed to open %1</source>
+        <translation type="unfinished">Impossible d'ouvrir %1 {1?}</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="124"/>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation type="unfinished">Impossible de lire: %1
+ligne %2, colonne %3:
+%4</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="132"/>
+        <source>Not a GPX file: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="238"/>
+        <source>File exists ...</source>
+        <translation type="unfinished">Le fichier existe...</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="239"/>
+        <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
+        <translation type="unfinished">Le fichier existe et n'a pas été créé par QMapShack. Si vous cliquez sur 'oui' tous les données de ce fichier seront perdues. Même si ce fichier contient des données GPX et sera ouvert par QMapShack certains éléments de ce fichier ne pourront pas être lus ou enregistrés. Ces élements seront perdus. Il est conseillé d'utiliser un autre fichier.<b>Voulez-vous vraiment écraser ce fichier ?</b> </translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="347"/>
+        <source>Failed to create file '%1'</source>
+        <translation type="unfinished">Impossible de créer le fichier: '%1'</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="357"/>
+        <source>Failed to write file '%1'</source>
+        <translation type="unfinished">Impossible d'écrire le fichier: '%1'</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="362"/>
+        <source>Saving GIS data failed...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CGrid</name>
     <message>
         <source>[Grid: %1%2%5 %3%4%5] </source>
@@ -660,22 +1681,22 @@
     <message>
         <location filename="../grid/CGrid.cpp" line="61"/>
         <source>%1 %2 </source>
-        <translation type="unfinished"></translation>
+        <translation>%1 %2 </translation>
     </message>
     <message>
         <location filename="../grid/CGrid.cpp" line="65"/>
         <source>%1%2%5 %3%4%5 </source>
-        <translation type="unfinished"></translation>
+        <translation>%1%2%5 %3%4%5</translation>
     </message>
     <message>
         <location filename="../grid/CGrid.cpp" line="72"/>
         <source>%1m, %2m </source>
-        <translation type="unfinished"></translation>
+        <translation>%1m, %2m </translation>
     </message>
     <message>
         <location filename="../grid/CGrid.cpp" line="76"/>
         <source>N %1m, E %2m </source>
-        <translation type="unfinished"></translation>
+        <translation>N %1m, E %2m </translation>
     </message>
 </context>
 <context>
@@ -685,6 +1706,11 @@
         <source>Cut history</source>
         <translation>Tronquer l'historique</translation>
     </message>
+    <message>
+        <location filename="../widgets/CHistoryListWidget.cpp" line="61"/>
+        <source> by %1</source>
+        <translation>par %1</translation>
+    </message>
 </context>
 <context>
     <name>CImportDatabase</name>
@@ -705,29 +1731,108 @@
     </message>
 </context>
 <context>
+    <name>CKnownExtension</name>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="45"/>
+        <source>Air Temperature</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="49"/>
+        <source>Water Temperature</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="53"/>
+        <source>Depth</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="57"/>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="69"/>
+        <source>Heart Rate</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="61"/>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="73"/>
+        <source>Cadence</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="77"/>
+        <source>Speed</source>
+        <translation type="unfinished">Vitesse</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="81"/>
+        <source>Acceleration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="85"/>
+        <source>Course</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="94"/>
+        <source>Slope*</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="99"/>
+        <source>Speed*</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="104"/>
+        <source>Elevation</source>
+        <translation type="unfinished">Altitude</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="109"/>
+        <source>Progress</source>
+        <translation type="unfinished">Progrès</translation>
+    </message>
+</context>
+<context>
+    <name>CLostFoundProject</name>
+    <message>
+        <location filename="../gis/db/CLostFoundProject.cpp" line="39"/>
+        <source>Lost & Found</source>
+        <translation type="unfinished">Perdu & Trouvé</translation>
+    </message>
+</context>
+<context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="591"/>
+        <location filename="../CMainWindow.cpp" line="617"/>
         <source>Ele: %1%2</source>
         <translation>Altitude: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="607"/>
+        <location filename="../CMainWindow.cpp" line="633"/>
         <source>[Grid: %1]</source>
-        <translation type="unfinished"></translation>
+        <translation>[Grille: %1]</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="732"/>
+        <location filename="../CMainWindow.cpp" line="758"/>
         <source>Load GIS Data...</source>
         <translation>Charger des données SIG...</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="766"/>
+        <location filename="../CMainWindow.cpp" line="792"/>
         <source>Select output file</source>
         <translation>Sélectionner le fichier de sortie</translation>
     </message>
     <message>
         <location filename="../CMainWindow.cpp" line="792"/>
+        <location filename="../CMainWindow.cpp" line="818"/>
+        <source>QMapShack View (*.view)</source>
+        <translation>Vue QMapShack (*.view)</translation>
+    </message>
+    <message>
+        <location filename="../CMainWindow.cpp" line="818"/>
         <source>Select file to load</source>
         <translation>Sélectionner le fichier à charger</translation>
     </message>
@@ -1339,26 +2444,26 @@
         <translation>Le fichier contient des données verrouillées / cryptées. Garmin ne vous autorise pas d'utiliser ce fichier avec un logiciel non fourni par Garmin.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2504"/>
-        <location filename="../map/CMapIMG.cpp" line="2512"/>
-        <location filename="../map/CMapIMG.cpp" line="2516"/>
-        <location filename="../map/CMapIMG.cpp" line="2521"/>
-        <location filename="../map/CMapIMG.cpp" line="2567"/>
-        <location filename="../map/CMapIMG.cpp" line="2575"/>
-        <location filename="../map/CMapIMG.cpp" line="2579"/>
-        <location filename="../map/CMapIMG.cpp" line="2584"/>
+        <location filename="../map/CMapIMG.cpp" line="2502"/>
+        <location filename="../map/CMapIMG.cpp" line="2510"/>
+        <location filename="../map/CMapIMG.cpp" line="2514"/>
+        <location filename="../map/CMapIMG.cpp" line="2519"/>
+        <location filename="../map/CMapIMG.cpp" line="2565"/>
+        <location filename="../map/CMapIMG.cpp" line="2573"/>
+        <location filename="../map/CMapIMG.cpp" line="2577"/>
+        <location filename="../map/CMapIMG.cpp" line="2582"/>
         <source>Point of Interest</source>
         <translation>Point d'intérêt</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2711"/>
+        <location filename="../map/CMapIMG.cpp" line="2709"/>
         <source>Unknown</source>
         <translation>Inconnu</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2757"/>
-        <location filename="../map/CMapIMG.cpp" line="2765"/>
-        <location filename="../map/CMapIMG.cpp" line="2772"/>
+        <location filename="../map/CMapIMG.cpp" line="2755"/>
+        <location filename="../map/CMapIMG.cpp" line="2763"/>
+        <location filename="../map/CMapIMG.cpp" line="2770"/>
         <source>Area</source>
         <translation>Surface</translation>
     </message>
@@ -1366,17 +2471,17 @@
 <context>
     <name>CMapList</name>
     <message>
-        <location filename="../map/CMapList.cpp" line="155"/>
+        <location filename="../map/CMapList.cpp" line="205"/>
         <source>Deactivate</source>
         <translation>Désactiver</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="155"/>
+        <location filename="../map/CMapList.cpp" line="205"/>
         <source>Activate</source>
         <translation>Activer</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="174"/>
+        <location filename="../map/CMapList.cpp" line="228"/>
         <source>Where do you want to store maps?</source>
         <translation>Où voulez vous enregistrer les cartes ?</translation>
     </message>
@@ -1498,10 +2603,10 @@ ligne %2, colonne %3:
     <message>
         <location filename="../map/CMapTMS.cpp" line="130"/>
         <source>This map requires OpenSSL support. However due to legal restrictions in some countries OpenSSL is not packaged with QMapShack. You can have a look at the <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> for binaries. You have to copy libeay32.dll and ssleay32.dll into the QMapShack program directory.</source>
-        <translation type="unfinished"></translation>
+        <translation>L'affichage de cette carte nécessite l'utilisation d'OpenSSL. Par défaut OpenSSL n'est pas inclus dans QMapShack à cause de restriction légales dans certains pays. Vous pouvez consulter <a href='https://www.openssl.org/community/binaries.html'>la page d'accueil OpenSSL</a> pour trouver des fichiers binaires. Vous devez copier libeay32.dll et ssleay32.dll dans le répertoire programme de QMapShack.</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="306"/>
+        <location filename="../map/CMapTMS.cpp" line="304"/>
         <source><b>%1</b>: %2 tiles pending<br/></source>
         <translation><b>%1</b>: %2 tuiles à charger<br/></translation>
     </message>
@@ -1510,20 +2615,20 @@ ligne %2, colonne %3:
     <name>CMapVRT</name>
     <message>
         <location filename="../map/CMapVRT.cpp" line="45"/>
-        <location filename="../map/CMapVRT.cpp" line="60"/>
-        <location filename="../map/CMapVRT.cpp" line="89"/>
+        <location filename="../map/CMapVRT.cpp" line="59"/>
+        <location filename="../map/CMapVRT.cpp" line="88"/>
         <location filename="../map/CMapVRT.cpp" line="126"/>
         <source>Error...</source>
         <translation>Erreur...</translation>
     </message>
     <message>
         <location filename="../map/CMapVRT.cpp" line="45"/>
-        <location filename="../map/CMapVRT.cpp" line="60"/>
+        <location filename="../map/CMapVRT.cpp" line="59"/>
         <source>Failed to load file: %1</source>
         <translation>Impossible de charger le fichier: %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="89"/>
+        <location filename="../map/CMapVRT.cpp" line="88"/>
         <source>File must be 8 bit palette or gray indexed.</source>
         <translation>Le fichier doit avoir une palette à 8 bits ou être en niveaux de gris.</translation>
     </message>
@@ -1554,7 +2659,7 @@ ligne %2, colonne %3:
         <location filename="../tool/CMapVrtBuilder.cpp" line="114"/>
         <source>!!! done !!!
 </source>
-        <translation type="unfinished"></translation>
+        <translation>!!! fait !!!</translation>
     </message>
     <message>
         <source>!!! failed !!!
@@ -1598,16 +2703,16 @@ Structure inconnue.</translation>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="72"/>
         <source>Unexpected service. '* WMTS 1.0.0' is expected. '%1 %2' is read.</source>
-        <translation type="unfinished"></translation>
+        <translation>Service inattendu. '* WMTS 1.0.0' est attendu mais '%1 %2' est lu.</translation>
     </message>
     <message>
         <source>Unexpexted service. '* WMTS 1.0.0' is expected. '%1 %2' is read.</source>
-        <translation type="vanished">Service inconnu. 'Attendu : * WMTS 1.0.0', lu :  '%1 %2.</translation>
+        <translation type="obsolete">Service inconnu. 'Attendu : * WMTS 1.0.0', lu :  '%1 %2.</translation>
     </message>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="151"/>
         <source>This map requires OpenSSL support. However due to legal restrictions in some countries OpenSSL is not packaged with QMapShack. You can have a look at the <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> for binaries. You have to copy libeay32.dll and ssleay32.dll into the QMapShack program directory.</source>
-        <translation type="unfinished"></translation>
+        <translation>L'affichage de cette carte nécessite l'utilisation d'OpenSSL. Par défaut OpenSSL n'est pas inclus dans QMapShack à cause de restriction légales dans certains pays. Vous pouvez consulter <a href='https://www.openssl.org/community/binaries.html'>la page d'accueil OpenSSL</a> pour trouver des fichiers binaires. Vous devez copier libeay32.dll et ssleay32.dll dans le répertoire programme de QMapShack.</translation>
     </message>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="217"/>
@@ -1630,13 +2735,23 @@ Structure inconnue.</translation>
         <location filename="../mouse/CMouseEditArea.cpp" line="28"/>
         <location filename="../mouse/CMouseEditArea.cpp" line="35"/>
         <source>Area</source>
-        <translation type="unfinished">Surface</translation>
+        <translation>Surface</translation>
     </message>
     <message>
         <location filename="../mouse/CMouseEditArea.cpp" line="37"/>
         <source><b>Edit Area</b><br/>Select a function and a routing mode via the tool buttons. Next select a point of the line. Only points marked with a large square can be changed. The ones with a black dot are subpoints introduced by routing.<br/></source>
         <translation><b>Éditer la surface</b><br/>Choisissez und fonction et un mode de calcul d'itinéraire à l'aide des boutons d'outils. Ensuite, sélectionnez un point de la ligne. Seulement les points marqués d'un carré large peuvet être modifiés. Les points noirs sont des sous-points introduits par le calcul d'itinéraire.<br/></translation>
     </message>
+    <message>
+        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
+        <source>Edit name...</source>
+        <translation type="unfinished">Éditer le nom...</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
+        <source>Enter new area name.</source>
+        <translation type="unfinished">Entrez le nom de la nouvelle surface.</translation>
+    </message>
 </context>
 <context>
     <name>CMouseEditRte</name>
@@ -1644,13 +2759,23 @@ Structure inconnue.</translation>
         <location filename="../mouse/CMouseEditRte.cpp" line="30"/>
         <location filename="../mouse/CMouseEditRte.cpp" line="37"/>
         <source>Route</source>
-        <translation type="unfinished">Calcul d'itinéraire</translation>
+        <translation>Calcul d'itinéraire</translation>
     </message>
     <message>
         <location filename="../mouse/CMouseEditRte.cpp" line="39"/>
         <source><b>Edit Route Points</b><br/>Select a function and a routing mode via the tool buttons. Next select a point of the line. Only points marked with a large square can be changed. The ones with a black dot are subpoints introduced by routing.<br/></source>
         <translation><b>Éditer les points de la route</b><br/>Choisissez une fonction et un mode de calcul d'itinéraire à l'aide des boutons d'outils. Ensuite, sélectionnez un point de la ligne. Seul les points marqués d'un carré large peuvent être modifiés. Les points noirs sont des sous-points introduits par le calcul d'itinéraire.<br/></translation>
     </message>
+    <message>
+        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
+        <source>Edit name...</source>
+        <translation type="unfinished">Éditer le nom...</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
+        <source>Enter new route name.</source>
+        <translation type="unfinished">Entrez le nom de la nouvelle route.</translation>
+    </message>
 </context>
 <context>
     <name>CMouseEditTrk</name>
@@ -1662,7 +2787,7 @@ Structure inconnue.</translation>
         <location filename="../mouse/CMouseEditTrk.cpp" line="28"/>
         <location filename="../mouse/CMouseEditTrk.cpp" line="35"/>
         <source>Track</source>
-        <translation type="unfinished">Trace</translation>
+        <translation>Trace</translation>
     </message>
     <message>
         <location filename="../mouse/CMouseEditTrk.cpp" line="38"/>
@@ -1677,11 +2802,21 @@ Structure inconnue.</translation>
     <message>
         <location filename="../mouse/CMouseEditTrk.cpp" line="80"/>
         <source>This will replace all data of the original by a simple line of coordinates. All other data will be lost permanently.</source>
-        <translation type="unfinished"></translation>
+        <translation>La trace obtenue ne contiendra que des données de position. Toutes les autres données (altitude, temps, etc...) seront perdues.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
+        <source>Edit name...</source>
+        <translation type="unfinished">Éditer le nom...</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
+        <source>Enter new track name.</source>
+        <translation type="unfinished">Entrez le nom de la nouvelle trace.</translation>
     </message>
     <message>
         <source>This will replace all data of the orignal by a simple line of coordinates. All other data will be lost permanently.</source>
-        <translation type="vanished">Ceci remplacera les données de l'original par une ligne simple de coordonnées. Toutes les autres données seront définitivement perdues.</translation>
+        <translation type="obsolete">Ceci remplacera les données de l'original par une ligne simple de coordonnées. Toutes les autres données seront définitivement perdues.</translation>
     </message>
 </context>
 <context>
@@ -1714,7 +2849,7 @@ Structure inconnue.</translation>
     <message>
         <location filename="../mouse/CMouseNormal.cpp" line="46"/>
         <source>Copy position (Grid)</source>
-        <translation type="unfinished"></translation>
+        <translation>Copier la position (grille)</translation>
     </message>
 </context>
 <context>
@@ -1722,7 +2857,7 @@ Structure inconnue.</translation>
     <message>
         <location filename="../mouse/CMousePrint.cpp" line="30"/>
         <source><b>Save(Print) Map</b><br/>Select a rectangular area on the map. Use the left mouse button and move the mouse. Abort with a right click. Adjust the selection by point-click-move on the corners. Save/print the selection by a left click on the disc/printer icon in the center of the selection.</source>
-        <translation type="unfinished"></translation>
+        <translation><b>Sauvegarder(Imprimer) la carte</b><br/>Selectionnez une zone rectangulaire sur la carte. Utilisez le clic gauche and déplacez la souris. Clic droit pour abandonner. Ajustez la sélection en déplaçant les coins avec le bouton gauche de la souris. Sauvegardez/Imprimez la sélection par un clic gauche sur le disque/l'imprimante au centre de la zone sélectionnée.</translation>
     </message>
 </context>
 <context>
@@ -1745,22 +2880,22 @@ Structure inconnue.</translation>
     <name>CPlotDistance</name>
     <message>
         <source>time</source>
-        <translation type="vanished">durée</translation>
+        <translation type="obsolete">durée</translation>
     </message>
 </context>
 <context>
     <name>CPlotProfile</name>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="63"/>
+        <location filename="../plot/CPlotProfile.cpp" line="73"/>
         <source>distance [%1]</source>
         <translation></translation>
     </message>
     <message>
         <source>time [h]</source>
-        <translation type="vanished">durée [h]</translation>
+        <translation type="obsolete">durée [h]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="64"/>
+        <location filename="../plot/CPlotProfile.cpp" line="74"/>
         <source>alt. [%1]</source>
         <translation>Alt. [%1]</translation>
     </message>
@@ -1769,11 +2904,11 @@ Structure inconnue.</translation>
     <name>CPlotSpeed</name>
     <message>
         <source>time [h]</source>
-        <translation type="vanished">durée [h]</translation>
+        <translation type="obsolete">durée [h]</translation>
     </message>
     <message>
         <source>speed. [%1]</source>
-        <translation type="vanished">vitesse [%1]</translation>
+        <translation type="obsolete">vitesse [%1]</translation>
     </message>
 </context>
 <context>
@@ -1781,22 +2916,22 @@ Structure inconnue.</translation>
     <message>
         <location filename="../print/CPrintDialog.cpp" line="67"/>
         <source>Print Map...</source>
-        <translation type="unfinished"></translation>
+        <translation>Imprimer la carte...</translation>
     </message>
     <message>
         <location filename="../print/CPrintDialog.cpp" line="74"/>
         <source>Save Map as Image...</source>
-        <translation type="unfinished"></translation>
+        <translation>Sauvegarder la carte comme image...</translation>
     </message>
     <message>
         <location filename="../print/CPrintDialog.cpp" line="94"/>
         <source>Printer Properties...</source>
-        <translation type="unfinished"></translation>
+        <translation>Propriétés de l'imprimante...</translation>
     </message>
     <message>
         <location filename="../print/CPrintDialog.cpp" line="169"/>
         <source>Pages: %1 x %2</source>
-        <translation type="unfinished"></translation>
+        <translation>Pages: %1 x %2</translation>
     </message>
     <message>
         <location filename="../print/CPrintDialog.cpp" line="170"/>
@@ -1805,17 +2940,21 @@ Structure inconnue.</translation>
 %1x%2 pixel
 x: %3 m/px
 y: %4 m/px</source>
-        <translation type="unfinished"></translation>
+        <translation>Zoomer la carte ci-dessous avec la roulette de la souris pour changer la résolution :
+
+%1x%2 pixel
+x: %3 m/px
+y: %4 m/px</translation>
     </message>
     <message>
         <location filename="../print/CPrintDialog.cpp" line="216"/>
         <source>Printing pages.</source>
-        <translation type="unfinished"></translation>
+        <translation>Impression des pages.</translation>
     </message>
     <message>
         <location filename="../print/CPrintDialog.cpp" line="260"/>
         <source>Save map...</source>
-        <translation type="unfinished"></translation>
+        <translation>Sauvegarder la carte...</translation>
     </message>
 </context>
 <context>
@@ -1823,12 +2962,12 @@ y: %4 m/px</source>
     <message>
         <location filename="../helpers/CProgressDialog.cpp" line="40"/>
         <source>Elapsed time: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Temps écoulé : %1</translation>
     </message>
     <message>
-        <location filename="../helpers/CProgressDialog.cpp" line="74"/>
+        <location filename="../helpers/CProgressDialog.cpp" line="82"/>
         <source>Elapsed time: %1 seconds.</source>
-        <translation type="unfinished"></translation>
+        <translation>Temps écoulé : %1 secondes</translation>
     </message>
 </context>
 <context>
@@ -1844,12 +2983,12 @@ y: %4 m/px</source>
         <translation>sud</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="221"/>
+        <location filename="../grid/CProjWizard.cpp" line="222"/>
         <source>Error...</source>
         <translation>Erreur...</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="221"/>
+        <location filename="../grid/CProjWizard.cpp" line="222"/>
         <source>The value
 '%1'
 is not a valid coordinate system definition:
@@ -1870,7 +3009,20 @@ n'est pas une définition de système de coordonnées:
     <message>
         <location filename="../gis/wpt/CProjWpt.cpp" line="62"/>
         <source>Enter new waypoint name.</source>
-        <translation type="unfinished">Entrez le nom du nouveau waypoint.</translation>
+        <translation>Entrez le nom du nouveau waypoint.</translation>
+    </message>
+</context>
+<context>
+    <name>CPropertyTrk</name>
+    <message>
+        <location filename="../gis/trk/CPropertyTrk.cpp" line="65"/>
+        <source>distance [%1]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CPropertyTrk.cpp" line="77"/>
+        <source>time</source>
+        <translation type="unfinished">durée</translation>
     </message>
 </context>
 <context>
@@ -2000,6 +3152,33 @@ n'est pas une définition de système de coordonnées:
     </message>
 </context>
 <context>
+    <name>CQlgtTrack</name>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="164"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="218"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="265"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="291"/>
+        <source>Corrupt track ...</source>
+        <translation type="unfinished">Trac invalide...</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="164"/>
+        <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
+        <translation type="unfinished">Le nombre de points de trace ne correspond pas au nombre de points de trace de training.</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="218"/>
+        <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
+        <translation type="unfinished">Le nombre de points de trace ne correspond pas au nombre de points de trace étendus.</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="265"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="291"/>
+        <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
+        <translation type="unfinished">Le nombre de points de trace ne correspond pas au nombre des points cachés</translation>
+    </message>
+</context>
+<context>
     <name>CQmsDb</name>
     <message>
         <location filename="../qlgt/CQmsDb.cpp" line="47"/>
@@ -2023,91 +3202,106 @@ n'est pas une définition de système de coordonnées:
     </message>
 </context>
 <context>
+    <name>CQmsProject</name>
+    <message>
+        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <source>Failed to open...</source>
+        <translation type="unfinished">Impossible d'ouvrir...</translation>
+    </message>
+    <message>
+        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <source>Failed to open %1</source>
+        <translation type="unfinished">Impossible d'ouvrir %1 {1?}</translation>
+    </message>
+</context>
+<context>
     <name>CRouterMapQuest</name>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="37"/>
         <source>Fastest</source>
-        <translation type="unfinished"></translation>
+        <translation>Le plus rapide</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="38"/>
         <source>Shortest</source>
-        <translation type="unfinished">le plus court</translation>
+        <translation>le plus court</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="39"/>
         <source>Bicycle</source>
-        <translation type="unfinished">Vélo</translation>
+        <translation>Vélo</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="40"/>
         <source>Pedestrian</source>
-        <translation type="unfinished"></translation>
+        <translation>Piéton</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="42"/>
         <source>US English</source>
-        <translation type="unfinished"></translation>
+        <translation>Anglais Etats Unis</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="43"/>
         <source>British English</source>
-        <translation type="unfinished"></translation>
+        <translation>Anglais britannique</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="44"/>
         <source>Danish</source>
-        <translation type="unfinished">Danois</translation>
+        <translation>Danois</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="45"/>
         <source>Dutch</source>
-        <translation type="unfinished">Néerlandais</translation>
+        <translation>Néerlandais</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="46"/>
         <source>French</source>
-        <translation type="unfinished">Français</translation>
+        <translation>Français</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="47"/>
         <source>German</source>
-        <translation type="unfinished">Deutsch</translation>
+        <translation>Allemand</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="48"/>
         <source>Italian</source>
-        <translation type="unfinished">Italien</translation>
+        <translation>Italien</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="49"/>
         <source>Norwegian</source>
-        <translation type="unfinished">Norvégien</translation>
+        <translation>Norvégien</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="50"/>
         <source>Spanish</source>
-        <translation type="unfinished">Espagnol</translation>
+        <translation>Espagnol</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="51"/>
         <source>Swedish</source>
-        <translation type="unfinished">Suédois</translation>
+        <translation>Suédois</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="110"/>
         <source>mode "%1"</source>
-        <translation type="unfinished"></translation>
+        <translation>mode "%1"</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="114"/>
         <source>no highways</source>
-        <translation type="unfinished"></translation>
+        <translation>Pas d'autoroutes</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="125"/>
         <source>no toll roads</source>
-        <translation type="unfinished"></translation>
+        <translation>Pas de routes à péage</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="136"/>
@@ -2117,33 +3311,33 @@ n'est pas une définition de système de coordonnées:
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="147"/>
         <source>no unpaved</source>
-        <translation type="unfinished"></translation>
+        <translation>Pas de route non revêtue</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="158"/>
         <source>no ferry</source>
-        <translation type="unfinished"></translation>
+        <translation>Pas de ferry</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="169"/>
         <source>no crossing of country borders</source>
-        <translation type="unfinished"></translation>
+        <translation>Pas de franchissement de frontière</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="301"/>
         <source><b>MapQuest</b><br/>Routing request sent to server. Please wait...</source>
-        <translation type="unfinished"></translation>
+        <translation><b>MapQuest</b><br/>Requête de routage envoyée au serveur. Veuillez patienter...</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="312"/>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="346"/>
         <source><b>MapQuest</b><br/>Bad response from server:<br/>%1</source>
-        <translation type="unfinished"></translation>
+        <translation><b>MapQuest</b><br/>Mauvaise réponse du serveur:<br/>%1</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="363"/>
         <source><br/>Calculation time: %1s</source>
-        <translation type="unfinished"></translation>
+        <translation><br/>Temps de calcul: %1s</translation>
     </message>
 </context>
 <context>
@@ -2196,7 +3390,7 @@ n'est pas une définition de système de coordonnées:
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="55"/>
         <source>Found Routino with a wrong version. Expected %1 found %2</source>
-        <translation type="unfinished"></translation>
+        <translation>Mauvaise version de Routino trouvée. Attendu %1 trouvé %2</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="60"/>
@@ -2206,137 +3400,132 @@ n'est pas une définition de système de coordonnées:
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="87"/>
         <source>English</source>
-        <translation type="unfinished">Anglais</translation>
+        <translation>Anglais</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="88"/>
         <source>German</source>
-        <translation type="unfinished">Deutsch</translation>
+        <translation>Allemand</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="89"/>
         <source>French</source>
-        <translation type="unfinished">Français</translation>
+        <translation>Français</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="90"/>
         <source>Hungarian</source>
-        <translation type="unfinished">Hongrois</translation>
+        <translation>Hongrois</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="91"/>
         <source>Dutch</source>
-        <translation type="unfinished">Néerlandais</translation>
+        <translation>Néerlandais</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="92"/>
         <source>Russian</source>
-        <translation type="unfinished">Russe</translation>
+        <translation>Russe</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="93"/>
         <source>Polish</source>
-        <translation type="unfinished">Polonais</translation>
+        <translation>Polonais</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="128"/>
         <source>A function was called without the database variable set.</source>
-        <translation type="unfinished"></translation>
+        <translation>Une fonction a été appelée sans variable de base de donnée assignée</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="131"/>
         <source>A function was called without the profile variable set.</source>
-        <translation type="unfinished"></translation>
+        <translation>Une fonction a été appelée sans variable de profil assignée</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="134"/>
         <source>A function was called without the translation variable set.</source>
-        <translation type="unfinished"></translation>
+        <translation>Une fonction a été appelée sans variable de traduction assignée</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="137"/>
         <source>The specified database to load did not exist.</source>
-        <translation type="unfinished"></translation>
+        <translation>La base de donnée à charger n'existe pas</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="140"/>
         <source>The specified database could not be loaded.</source>
-        <translation type="unfinished"></translation>
+        <translation>La base de donnée n'a pas pu être chargée</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="143"/>
         <source>The specified profiles XML file did not exist.</source>
-        <translation type="unfinished"></translation>
+        <translation>Les profils XML choisis n'existent pas</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="146"/>
         <source>The specified profiles XML file could not be loaded.</source>
-        <translation type="unfinished"></translation>
+        <translation>Les profils XML choisis n'ont pas pu être chargés</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="149"/>
         <source>The specified translations XML file did not exist.</source>
-        <translation type="unfinished"></translation>
+        <translation>Le fichier de traduction XML n'existe pas</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="152"/>
         <source>The specified translations XML file could not be loaded.</source>
-        <translation type="unfinished"></translation>
+        <translation>Le fichier de traduction XML n'a pas pu être chargé</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="155"/>
         <source>The requested profile name does not exist in the loaded XML file.</source>
-        <translation type="unfinished"></translation>
+        <translation>Le nom de profil demandé n'existe pas dans le fichier XML chargé</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="158"/>
         <source>The requested translation language does not exist in the loaded XML file.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="161"/>
-        <source>There is no highway near the coordinates to place a waypoint.</source>
-        <translation type="unfinished"></translation>
+        <translation>La langue de traduction demandée n'existe pas dans le fichier XML chargé</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="164"/>
         <source>The profile and database do not work together.</source>
-        <translation type="unfinished"></translation>
+        <translation>Le profile et la base de données ne fonctionnent pas ensemble</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="167"/>
         <source>The profile being used has not been validated.</source>
-        <translation type="unfinished"></translation>
+        <translation>Le profil en cours d'utilisation n'a pas été validé</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="170"/>
         <source>The user specified profile contained invalid data.</source>
-        <translation type="unfinished"></translation>
+        <translation>Le profil utilisé contient des données invalides</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="173"/>
         <source>The routing options specified are not consistent with each other.</source>
-        <translation type="unfinished"></translation>
+        <translation>Les options de routage choisies ne sont pas compatibles entre elles</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="176"/>
         <source>There is a mismatch between the library and caller API version.</source>
-        <translation type="unfinished"></translation>
+        <translation>La bibliothèque et l'API ne vont pas ensemble</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="179"/>
         <source>Route calculation was aborted by user.</source>
-        <translation type="unfinished"></translation>
+        <translation>Le calcul de l'itinéraire a été annulé par l'utilisateur</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="185"/>
         <source>A route could not be found to waypoint %1.</source>
-        <translation type="unfinished"></translation>
+        <translation>Aucune route vers le waypoint 1 n'a été trouvée</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="188"/>
         <source>Unknown error: %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Erreur inconnue : %1</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="200"/>
@@ -2352,23 +3541,28 @@ n'est pas une définition de système de coordonnées:
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="55"/>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="238"/>
         <source>Warning...</source>
-        <translation type="unfinished">Avertissement...</translation>
+        <translation>Avertissement...</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="161"/>
+        <source>In the routing database there is no highway near the coordinates to place a waypoint.</source>
+        <translation>La base de donnée de routage ne contient aucune voie à cet endroit</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="238"/>
         <source>%1: Due to limitations in the Windows POSIX API Routino can't handle files larger than 4GB.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 : A cause de limitation de l'API POSIX Routino ne peut gérer de fichiers de plus de 4 Go</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="342"/>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="429"/>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="344"/>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="431"/>
         <source>Calculate route with %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Calculer l'itinéraire avec %1</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="350"/>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="352"/>
         <source><br/>Calculation time: %1s</source>
-        <translation type="unfinished"></translation>
+        <translation><br/>Temps de calcul : %1s</translation>
     </message>
 </context>
 <context>
@@ -2406,23 +3600,23 @@ n'est pas une définition de système de coordonnées:
     <message>
         <location filename="../tool/CRoutinoDatabaseBuilder.cpp" line="32"/>
         <source>Create Routino Database</source>
-        <translation type="unfinished"></translation>
+        <translation>Créer une base de données Routino</translation>
     </message>
     <message>
         <location filename="../tool/CRoutinoDatabaseBuilder.cpp" line="56"/>
         <source>Select files...</source>
-        <translation type="unfinished">Sélectionnez les fichiers...</translation>
+        <translation>Sélectionnez les fichiers...</translation>
     </message>
     <message>
         <location filename="../tool/CRoutinoDatabaseBuilder.cpp" line="80"/>
         <source>Select target path...</source>
-        <translation type="unfinished"></translation>
+        <translation>Sélectionnez le répertoire cible...</translation>
     </message>
     <message>
         <location filename="../tool/CRoutinoDatabaseBuilder.cpp" line="141"/>
         <source>!!! done !!!
 </source>
-        <translation type="unfinished"></translation>
+        <translation>!!! fait !!!</translation>
     </message>
     <message>
         <source>!!! failed !!!
@@ -2446,22 +3640,32 @@ n'est pas une définition de système de coordonnées:
 <context>
     <name>CSetupDatabase</name>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="70"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="47"/>
+        <source>Missing Requirement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="48"/>
+        <source>MySQL cannot be used at this point, because the corresponding driver (QMYSQL) is not available.<br />Please make sure you have installed the corresponding package.<br />If you don't know what to do now you should have <a href="%1">a look at the wiki</a>.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="102"/>
         <source>Error...</source>
         <translation>Erreur...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="70"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="102"/>
         <source>There is already a database with name '%1'</source>
         <translation>Une database de ce nom existe déjà : %1</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="84"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="115"/>
         <source>New database...</source>
         <translation>Nouvelle base de données...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="109"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="140"/>
         <source>Open database...</source>
         <translation>Ouvrir la base de données...</translation>
     </message>
@@ -2469,17 +3673,67 @@ n'est pas une définition de système de coordonnées:
 <context>
     <name>CSetupWorkspace</name>
     <message>
-        <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="55"/>
         <source>Setup database...</source>
         <translation>Mise en place la base de données...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="55"/>
         <source>Changes will become active after an application's restart.</source>
         <translation>Les modifications prennent effet après un redémarrage de l'application.</translation>
     </message>
 </context>
 <context>
+    <name>CSlfProject</name>
+    <message>
+        <location filename="../gis/slf/CSlfProject.cpp" line="42"/>
+        <source>Failed to load file %1...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CSlfReader</name>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="59"/>
+        <source>%1 does not exist</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="64"/>
+        <source>Failed to open %1</source>
+        <translation type="unfinished">Impossible d'ouvrir %1 {1?}</translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="75"/>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation type="unfinished">Impossible de lire: %1
+ligne %2, colonne %3:
+%4</translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="82"/>
+        <source>Not a SLF file: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="89"/>
+        <source>Unsupported revision %1: %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="164"/>
+        <source>Break %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="168"/>
+        <source>Lap %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CTextEditWidget</name>
     <message>
         <location filename="../widgets/CTextEditWidget.cpp" line="73"/>
@@ -2488,6 +3742,46 @@ n'est pas une définition de système de coordonnées:
     </message>
 </context>
 <context>
+    <name>CTwoNavProject</name>
+    <message>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
+        <location filename="../gis/tnv/serialization.cpp" line="560"/>
+        <location filename="../gis/tnv/serialization.cpp" line="588"/>
+        <location filename="../gis/tnv/serialization.cpp" line="599"/>
+        <location filename="../gis/tnv/serialization.cpp" line="617"/>
+        <location filename="../gis/tnv/serialization.cpp" line="645"/>
+        <location filename="../gis/tnv/serialization.cpp" line="719"/>
+        <source>Error...</source>
+        <translation type="unfinished">Erreur...</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
+        <location filename="../gis/tnv/serialization.cpp" line="560"/>
+        <source>Failed to open %1.</source>
+        <translation type="unfinished">Impossible d'ouvrir %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="159"/>
+        <source>Save GIS data to...</source>
+        <translation type="unfinished">Enregistrer les données SIG dans...</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="588"/>
+        <location filename="../gis/tnv/serialization.cpp" line="599"/>
+        <source>Only support lon/lat WGS 84 format.</source>
+        <translation type="unfinished">Le seul format lon/lat autorisé est WGS 84</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="617"/>
+        <location filename="../gis/tnv/serialization.cpp" line="645"/>
+        <location filename="../gis/tnv/serialization.cpp" line="719"/>
+        <source>Failed to read data.</source>
+        <translation type="unfinished">Impossible de lire les données.</translation>
+    </message>
+</context>
+<context>
     <name>IAbout</name>
     <message>
         <location filename="../IAbout.ui" line="14"/>
@@ -2526,110 +3820,132 @@ n'est pas une définition de système de coordonnées:
     <message>
         <location filename="../IAbout.ui" line="141"/>
         <source>Routino</source>
-        <translation type="unfinished"></translation>
+        <translation>Routino</translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="172"/>
+        <source>Czech:</source>
+        <translation>Tchèque:</translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="195"/>
+        <source>German:</source>
+        <translation>Allemand:</translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="218"/>
+        <source>Dutch:</source>
+        <translation>Néerlandais:</translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="241"/>
+        <source>French:</source>
+        <translation>Français:</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="166"/>
+        <location filename="../IAbout.ui" line="251"/>
         <source>Rainer Unseld </source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="173"/>
+        <location filename="../IAbout.ui" line="381"/>
+        <source>Christian Eichler (qms at christian-eichler.de)
+Ivo Kronenberg</source>
+        <translation>Christian Eichler (qms at christian-eichler.de)
+Ivo Kronenberg</translation>
+    </message>
+    <message>
         <source>French</source>
-        <translation>Français</translation>
+        <translation type="obsolete">Français</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="180"/>
         <source>Czech</source>
-        <translation>Tchèque</translation>
+        <translation type="obsolete">Tchèque</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="187"/>
+        <location filename="../IAbout.ui" line="182"/>
         <source>Pavel Fric</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="194"/>
         <source>German</source>
-        <translation>Deutsch</translation>
+        <translation type="obsolete">Deutsch</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="201"/>
+        <location filename="../IAbout.ui" line="281"/>
         <source><b>Translation:</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Traduction:</b></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="229"/>
         <source>Dutch</source>
-        <translation type="unfinished">Néerlandais</translation>
+        <translation type="obsolete">Néerlandais</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="236"/>
+        <location filename="../IAbout.ui" line="228"/>
         <source>Harrie Klomp</source>
-        <translation type="unfinished"></translation>
+        <translation>Harrie Klomp</translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="271"/>
+        <source>Spanish:</source>
+        <translation>Espagnol:</translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="305"/>
+        <source>Win64:</source>
+        <translation>Win64:</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="295"/>
+        <location filename="../IAbout.ui" line="321"/>
+        <source>OS X:</source>
+        <translation>OS X:</translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="345"/>
         <source><b>Binaries:</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Fichiers binaires:</b></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="311"/>
+        <location filename="../IAbout.ui" line="374"/>
         <source><b>Contributors:</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Contributeurs:</b></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="208"/>
+        <location filename="../IAbout.ui" line="205"/>
         <source>Josef Latt</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="215"/>
         <source>Spanish</source>
-        <translation>Espagnol</translation>
+        <translation type="obsolete">Espagnol</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="222"/>
+        <location filename="../IAbout.ui" line="258"/>
         <source>Jose Luis Domingo Lopez</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="254"/>
+        <location filename="../IAbout.ui" line="338"/>
         <source>Ivo Kronenberg</source>
-        <translation type="unfinished"></translation>
+        <translation>Ivo Kronenberg</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="261"/>
+        <location filename="../IAbout.ui" line="331"/>
         <source>Helmut Schmidt</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="268"/>
-        <source>Win64</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="275"/>
-        <source>OS X</source>
-        <translation type="unfinished"></translation>
+        <translation>Helmut Schmidt</translation>
     </message>
-    <message>
-        <location filename="../IAbout.ui" line="282"/>
+    <message utf8="true">
+        <location filename="../IAbout.ui" line="354"/>
         <source>...and thanks to all Linux binary maintainers for doing a great job. Special thanks to Dan Horák and Bas Couwenberg for showing presence on the mailing list to discuss distribution related topics.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../IAbout.ui" line="318"/>
-        <source>Christian Eichler (qms at christian-eichler.de)</source>
-        <translation type="unfinished"></translation>
+        <translation>... et merci à tous les gestionnaires de binaires Linux pour leur travail admirable. Remerciements particuliers à Dan Horák et Bas Couwenberg pour leur présence sur les mailing lists relatives aux distributions.</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="332"/>
+        <location filename="../IAbout.ui" line="399"/>
         <source>This software is licensed under GPL3 or any later version</source>
         <translation>Ce logiciel est distribué sous les termes de la licence GPL3 ou toute version utérieure</translation>
     </message>
-    <message>
-        <location filename="../IAbout.ui" line="339"/>
+    <message utf8="true">
+        <location filename="../IAbout.ui" line="406"/>
         <source>© 2014 Oliver Eichler (oliver.eichler at gmx.de)</source>
         <translation></translation>
     </message>
@@ -2668,6 +3984,14 @@ n'est pas une définition de système de coordonnées:
     </message>
 </context>
 <context>
+    <name>IColorChooser</name>
+    <message>
+        <location filename="../widgets/IColorChooser.ui" line="14"/>
+        <source>Dialog</source>
+        <translation type="unfinished">Dialogue</translation>
+    </message>
+</context>
+<context>
     <name>ICombineTrk</name>
     <message>
         <location filename="../gis/trk/ICombineTrk.ui" line="14"/>
@@ -2688,22 +4012,22 @@ n'est pas une définition de système de coordonnées:
     <message>
         <location filename="../units/ICoordFormatSetup.ui" line="14"/>
         <source>Coordinate Format...</source>
-        <translation type="unfinished"></translation>
+        <translation>Format des coordonnées...</translation>
     </message>
-    <message>
+    <message utf8="true">
         <location filename="../units/ICoordFormatSetup.ui" line="36"/>
         <source>N48° 53.660 E013° 31.113</source>
-        <translation type="unfinished"></translation>
+        <translation>N48° 53.660 E013° 31.113</translation>
     </message>
-    <message>
+    <message utf8="true">
         <location filename="../units/ICoordFormatSetup.ui" line="29"/>
         <source>N48.8943° E013.51855°</source>
-        <translation type="unfinished"></translation>
+        <translation>N48.8943° E013.51855°</translation>
     </message>
-    <message>
+    <message utf8="true">
         <location filename="../units/ICoordFormatSetup.ui" line="22"/>
         <source>N48° 53' 39.6" E13° 31' 6.78"</source>
-        <translation type="unfinished"></translation>
+        <translation>N48° 53' 39.6" E13° 31' 6.78"</translation>
     </message>
 </context>
 <context>
@@ -2711,13 +4035,13 @@ n'est pas une définition de système de coordonnées:
     <message>
         <location filename="../gis/rte/ICreateRouteFromWpt.ui" line="14"/>
         <source>Create Route from Waypoints</source>
-        <translation type="unfinished"></translation>
+        <translation>Créer une route à partir de waypoints</translation>
     </message>
     <message>
         <location filename="../gis/rte/ICreateRouteFromWpt.ui" line="30"/>
         <location filename="../gis/rte/ICreateRouteFromWpt.ui" line="50"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -2725,22 +4049,22 @@ n'est pas une définition de système de coordonnées:
     <message>
         <location filename="../gis/trk/ICutTrk.ui" line="14"/>
         <source>Cut Track</source>
-        <translation type="unfinished"></translation>
+        <translation>Couper la trace</translation>
     </message>
     <message>
         <location filename="../gis/trk/ICutTrk.ui" line="20"/>
         <source>Delete first part of the track and keep second one</source>
-        <translation type="unfinished"></translation>
+        <translation>Supprimer le début de la trace</translation>
     </message>
     <message>
         <location filename="../gis/trk/ICutTrk.ui" line="27"/>
         <source>Keep both parts of the track</source>
-        <translation type="unfinished"></translation>
+        <translation>Séparer la trace en 2</translation>
     </message>
     <message>
         <location filename="../gis/trk/ICutTrk.ui" line="37"/>
         <source>Keep first part of the track and delete second one</source>
-        <translation type="unfinished"></translation>
+        <translation>Supprimer la fin de la trace</translation>
     </message>
     <message>
         <location filename="../gis/trk/ICutTrk.ui" line="60"/>
@@ -2749,12 +4073,16 @@ n'est pas une définition de système de coordonnées:
 If you keep both parts of the track you have to create new ones. 
 
 If you want to keep just one half you can simply remove the points, or check this to create a new track.</source>
-        <translation type="unfinished"></translation>
+        <translation>Cocher la case pour stocker le résultat dans une nouvelle trace. 
+
+Si vous voulez conserver les 2 parties de la trace vous devez en créer de nouvelles. 
+
+Si vous voulez conserver seulement une moitié vous pouvez simplement enlever les points, ou cochez la case pour créer une nouvelle trace.</translation>
     </message>
     <message>
         <location filename="../gis/trk/ICutTrk.ui" line="67"/>
         <source>Create a new track</source>
-        <translation type="unfinished"></translation>
+        <translation>Créer une nouvelle trace</translation>
     </message>
     <message>
         <source>Create a clone</source>
@@ -2762,15 +4090,67 @@ If you want to keep just one half you can simply remove the points, or check thi
     </message>
 </context>
 <context>
+    <name>IDB</name>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="60"/>
+        <source>The internal database format of '%1'' has changed. QMapShack will migrate your database, now. After the migration the database won't be usable with older versions of QMapShack. It is recommended to backup the database first.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="64"/>
+        <source>Migrate database...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="74"/>
+        <source>Failed to migrate '%1'.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="76"/>
+        <location filename="../gis/db/IDB.cpp" line="100"/>
+        <source>Error...</source>
+        <translation type="unfinished">Erreur...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="85"/>
+        <source>The database version of '%1'' is more advanced as the one understood by your QMapShack installation. This won't work.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="88"/>
+        <source>Wrong database version...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="98"/>
+        <source>Failed to initialize '%1'.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>IDBMysql</name>
+    <message>
+        <location filename="../gis/db/IDBMysql.cpp" line="54"/>
+        <source>Password...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDBMysql.cpp" line="54"/>
+        <source>Password for database '%1':</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>IDemPathSetup</name>
     <message>
         <source>Setup DEM file pathss</source>
-        <translation type="vanished">Configurer les répertoires DEM</translation>
+        <translation type="obsolete">Configurer les répertoires DEM</translation>
     </message>
     <message>
         <location filename="../dem/IDemPathSetup.ui" line="14"/>
         <source>Setup DEM file paths</source>
-        <translation type="unfinished"></translation>
+        <translation>Configurer les répertoires DEM</translation>
     </message>
     <message>
         <location filename="../dem/IDemPathSetup.ui" line="31"/>
@@ -2827,14 +4207,14 @@ If you want to keep just one half you can simply remove the points, or check thi
         <source>Slope </source>
         <translation>Pente </translation>
     </message>
-    <message>
+    <message utf8="true">
         <location filename="../dem/IDemPropSetup.ui" line="226"/>
         <location filename="../dem/IDemPropSetup.ui" line="326"/>
         <location filename="../dem/IDemPropSetup.ui" line="410"/>
         <location filename="../dem/IDemPropSetup.ui" line="494"/>
         <location filename="../dem/IDemPropSetup.ui" line="578"/>
         <source>°</source>
-        <translation type="unfinished"></translation>
+        <translation>°</translation>
     </message>
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="229"/>
@@ -2843,7 +4223,7 @@ If you want to keep just one half you can simply remove the points, or check thi
         <location filename="../dem/IDemPropSetup.ui" line="497"/>
         <location filename="../dem/IDemPropSetup.ui" line="581"/>
         <source>> </source>
-        <translation type="unfinished"></translation>
+        <translation>> </translation>
     </message>
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="251"/>
@@ -2877,6 +4257,31 @@ If you want to keep just one half you can simply remove the points, or check thi
         <source>Activate</source>
         <translation>Activer</translation>
     </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="165"/>
+        <source>Move Up</source>
+        <translation>Déplacer vers le haut</translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="168"/>
+        <source>Hide DEM behind previous one</source>
+        <translation>Cacher le DEM derrière le précédent</translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="177"/>
+        <source>Move down</source>
+        <translation>Déplacer vers le bas</translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="180"/>
+        <source>Show DEM on top of next one</source>
+        <translation>Afficher DEM par-dessus le suivant</translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="189"/>
+        <source>Reload DEM</source>
+        <translation>Recharger DEM</translation>
+    </message>
 </context>
 <context>
     <name>IDetailsGeoCache</name>
@@ -2951,62 +4356,57 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation>Dialogue</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="44"/>
-        <source>-</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="69"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="132"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation><html><head/><body><p>Le waypoint a été importé dans QMapShack et a été modifié. Il ne représente plus les données originales. Veuillez consulter l'historique pour voir les modifications. </p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="85"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="148"/>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
         <translation>Inverser le mode lecture seule. Ouvrez le cadenas pour pouvoir éditer l'objet.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="88"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="151"/>
         <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="118"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="181"/>
         <source>Color</source>
         <translation>Couleur</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="139"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="202"/>
         <source>Border width</source>
         <translation>Largeur de la bordure</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="153"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="216"/>
         <source>Style</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="172"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="235"/>
         <source>Opacity</source>
         <translation>Opacité</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="185"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="248"/>
         <source>Info</source>
-        <translation type="unfinished">Information</translation>
+        <translation>Info</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="214"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="277"/>
         <source>Points</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="241"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="304"/>
         <source>Position</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="250"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="313"/>
         <source>Hist.</source>
         <translation></translation>
     </message>
@@ -3083,29 +4483,29 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation type="unfinished">Information</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="65"/>
+        <location filename="../gis/rte/IDetailsRte.ui" line="205"/>
         <source>-</source>
-        <translation type="unfinished">-</translation>
+        <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="97"/>
+        <location filename="../gis/rte/IDetailsRte.ui" line="154"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
-        <translation type="unfinished"><html><head/><body><p>Le waypoint a été importé dans QMapShack et a été modifié. Il ne représente plus les données originales. Veuillez consulter l'historique pour voir les modifications. </p></body></html></translation>
+        <translation><html><head/><body><p>Le waypoint a été importé dans QMapShack et a été modifié. Il ne représente plus les données originales. Veuillez consulter l'historique pour voir les modifications. </p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="113"/>
+        <location filename="../gis/rte/IDetailsRte.ui" line="170"/>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
-        <translation type="unfinished">Inverser le mode lecture seule. Ouvrez le cadenas pour pouvoir éditer l'objet.</translation>
+        <translation>Dés/activer le mode lecture seule. Ouvrez le cadenas pour pouvoir éditer l'objet.</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="116"/>
+        <location filename="../gis/rte/IDetailsRte.ui" line="173"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="176"/>
+        <location filename="../gis/rte/IDetailsRte.ui" line="229"/>
         <source>Hist.</source>
-        <translation type="unfinished"></translation>
+        <translation>Hist.</translation>
     </message>
 </context>
 <context>
@@ -3124,165 +4524,237 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="266"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="345"/>
         <source>Info</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="166"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="280"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="445"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="474"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="549"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="578"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="682"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="708"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="737"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1047"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1076"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1108"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1144"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1173"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1205"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1241"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1270"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1302"/>
         <source>...</source>
         <translation></translation>
     </message>
     <message>
         <source>Graph Control</source>
-        <translation type="vanished">Contrôle du graphe</translation>
+        <translation type="obsolete">Contrôle du graphe</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="533"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1026"/>
         <source>Profile</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="702"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1467"/>
         <source>Speed</source>
         <translation>Vitesse</translation>
     </message>
     <message>
         <source>Progress</source>
-        <translation type="vanished">Progrès</translation>
+        <translation type="obsolete">Progrès</translation>
     </message>
     <message>
         <source>Track</source>
-        <translation type="vanished">Trace</translation>
+        <translation type="obsolete">Trace</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="163"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="277"/>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
         <translation>Inverser le mode lecture seule. Ouvrez le cadenas pour pouvoir éditer l'objet.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="202"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="255"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation><html><head/><body><p>Le waypoint a été importé dans QMapShack et a été modifié. Il ne représente plus les données originales. Veuillez consulter l'historique pour voir les modifications. </p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="227"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="306"/>
         <source>-</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="298"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="377"/>
         <source>Style</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="340"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="434"/>
-        <source>from Data</source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="801"/>
+        <source>Source</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="353"/>
-        <source>Source</source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="667"/>
+        <source>Maximum</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="376"/>
-        <source>Maximum</source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="442"/>
+        <source>Use/edit user defined visibility of arrows for this track</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="405"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="471"/>
+        <source>Use/edit system's visibility of arrows for all tracks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="527"/>
         <source>Minimum</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="447"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="546"/>
+        <source>Use/edit user defined scale factor for this track</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="575"/>
+        <source>Use/edit system's default factor for all tracks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Solid color</source>
+        <translation type="obsolete">Couleur unie</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="642"/>
+        <source>x </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="534"/>
+        <source>Width</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="625"/>
+        <source>with arrows</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="495"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="839"/>
         <source>Graphs</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="540"/>
-        <source>Graph 3</source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="852"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="872"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="958"/>
+        <source>max.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="991"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="998"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1012"/>
+        <source>min.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="547"/>
-        <source>Graph 2</source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="679"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1044"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1141"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1238"/>
+        <source>User defined limits for this track</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="554"/>
-        <source>Graph 1</source>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="705"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1073"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1170"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1267"/>
+        <source>Automatic limits</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="562"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="734"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1105"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1202"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1299"/>
+        <source>User defined limits for all tracks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="788"/>
+        <source>Color</source>
+        <translation type="unfinished">Couleur</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1331"/>
         <source>Activity</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="607"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1372"/>
         <source>To differentiate the track statistics select an activity from the list for the complete track. Or select a part of the track to assign an activity.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="634"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1399"/>
         <source>Points</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="682"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1447"/>
         <source>Time</source>
         <translation>Durée</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="687"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1452"/>
         <source>Ele.</source>
         <translation>Alt.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="692"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1457"/>
         <source>Delta</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="697"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1462"/>
         <source>Dist.</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="707"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1472"/>
         <source>Slope</source>
         <translation>Pente</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="712"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1477"/>
         <source>Ascend</source>
         <translation>Montée</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="717"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1482"/>
         <source>Descend</source>
         <translation>Descente</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="722"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1487"/>
         <source>Position</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="731"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1496"/>
         <source>Filter</source>
         <translation>Filtre</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="768"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1533"/>
         <source>Hist.</source>
         <translation></translation>
     </message>
@@ -3297,7 +4769,7 @@ If you want to keep just one half you can simply remove the points, or check thi
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="43"/>
         <source>Info</source>
-        <translation type="unfinished">Information</translation>
+        <translation>Info</translation>
     </message>
     <message>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="77"/>
@@ -3308,8 +4780,7 @@ If you want to keep just one half you can simply remove the points, or check thi
         <location filename="../gis/wpt/IDetailsWpt.ui" line="84"/>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="110"/>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="136"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="186"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="265"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="328"/>
         <source>-</source>
         <translation></translation>
     </message>
@@ -3324,22 +4795,22 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation>Proximité:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="258"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="321"/>
         <source>Date/Time:</source>
         <translation>Date/heure</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="350"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="413"/>
         <source>Hist.</source>
-        <translation type="unfinished"></translation>
+        <translation>Hist.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="205"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="268"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation><html><head/><body><p>Le waypoint a été importé dans QMapShack et a été modifié. Il ne représente plus les données originales. Veuillez consulter l'historique pour voir les modifications. </p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="221"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="284"/>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
         <translation>Inverser le mode lecture seule. Ouvrez le cadenas pour pouvoir éditer l'objet.</translation>
     </message>
@@ -3348,25 +4819,33 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation type="obsolete"><html><head/><body><p>Mode lecture seule</p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="224"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="279"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="299"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="331"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="287"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="342"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="362"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="394"/>
         <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="276"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="339"/>
         <source>Add images.</source>
         <translation>Ajouter des images</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="296"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="359"/>
         <source>Delete selected image.</source>
         <translation>Supprimer l'image sélectionnée</translation>
     </message>
 </context>
 <context>
+    <name>IDevice</name>
+    <message>
+        <location filename="../device/IDevice.cpp" line="204"/>
+        <source>There is another project with the same name. If you press 'ok' it will be removed and replaced.</source>
+        <translation type="unfinished">Un autre projet du même nom existe déjà. Si vous confirmez, il sera supprimé et remplacé.</translation>
+    </message>
+</context>
+<context>
     <name>IElevationDialog</name>
     <message>
         <location filename="../helpers/IElevationDialog.ui" line="14"/>
@@ -3402,19 +4881,47 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterDelete.ui" line="51"/>
-        <source><b>Remove Track Points</b></source>
-        <translation><b>Supprimer des points de trace</translation>
+        <location filename="../gis/trk/filter/IFilterDelete.ui" line="51"/>
+        <source><b>Remove Track Points</b></source>
+        <translation><b>Supprimer des points de trace</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDelete.ui" line="63"/>
+        <source>Remove all hidden track points permanently.</source>
+        <translation>Supprimer définitivement tous les points cachés.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDelete.ui" line="70"/>
+        <source>...</source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>IFilterDeleteExtension</name>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="51"/>
+        <source><b>Remove Extension from all Track Points</b></source>
+        <translation><b>Enlever les extensions de tous les points de la trace</b></translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterDelete.ui" line="63"/>
-        <source>Remove all hidden track points permanently.</source>
-        <translation>Supprimer définitivement tous les points cachés.</translation>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="63"/>
+        <source>Remove </source>
+        <translation>Enlever</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterDelete.ui" line="70"/>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="83"/>
+        <source>from all Track Points</source>
+        <translation>de tous les points de la trace</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="103"/>
         <source>...</source>
-        <translation></translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -3460,17 +4967,17 @@ If you want to keep just one half you can simply remove the points, or check thi
     <message>
         <location filename="../gis/trk/filter/IFilterInvalid.ui" line="41"/>
         <source>Hide Invalid Points</source>
-        <translation type="unfinished"></translation>
+        <translation>Cacher les points invalides</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterInvalid.ui" line="56"/>
         <source>Hide points with invalid coordinates at the beginning of the track.</source>
-        <translation type="unfinished"></translation>
+        <translation>Cacher les points aux coordonnées invalides du début de la trace.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterInvalid.ui" line="63"/>
         <source>...</source>
-        <translation type="unfinished">...</translation>
+        <translation>...</translation>
     </message>
 </context>
 <context>
@@ -3670,6 +5177,179 @@ If you want to keep just one half you can simply remove the points, or check thi
     </message>
 </context>
 <context>
+    <name>IFilterSplitSegment</name>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="14"/>
+        <source>Form</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="51"/>
+        <source><html><head/><body><p><span style=" font-weight:600;">Split Segments into Tracks</span></p></body></html></source>
+        <translation><html><head/><body><p><span style=" font-weight:600;">Séparer les segments en traces</span></p></body></html></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="63"/>
+        <source>Creates a new track for every segment within this track.</source>
+        <translation>Créer une nouvelle trace pour chaque segment dans cette trace.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="70"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+</context>
+<context>
+    <name>IFitDecoderState</name>
+    <message>
+        <location filename="../gis/fit/decoder/IFitDecoderState.cpp" line="32"/>
+        <source>FIT decoding error: Decoder not in correct state %1 after last data byte in file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>IGisItem</name>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="42"/>
+        <source>[no name]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="301"/>
+        <source>The item is not part of the project in the database.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="307"/>
+        <source>The item is not in the database.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="313"/>
+        <source>The item might need to be saved</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="397"/>
+        <source>Initial version.</source>
+        <translation type="unfinished">Version initiale</translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="505"/>
+        <source><h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press 'Ok'.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="506"/>
+        <source>Read Only Mode...</source>
+        <translation type="unfinished">Mode lecture seule</translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="670"/>
+        <location filename="../gis/IGisItem.cpp" line="729"/>
+        <source><h4>Description:</h4></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="673"/>
+        <location filename="../gis/IGisItem.cpp" line="732"/>
+        <source><p>--- no description ---</p></source>
+        <translation type="unfinished"><p>--- pas de description ---</p></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="684"/>
+        <source><h4>Comment:</h4></source>
+        <translation type="unfinished"><h4>Commentaire:</h4></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="687"/>
+        <source><p>--- no comment ---</p></source>
+        <translation type="unfinished"><p>--- pas de commentaire ---</p></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="698"/>
+        <location filename="../gis/IGisItem.cpp" line="743"/>
+        <source><h4>Links:</h4></source>
+        <translation type="unfinished"><h4>Liens:</h4></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="701"/>
+        <location filename="../gis/IGisItem.cpp" line="746"/>
+        <source><p>--- no links ---</p></source>
+        <translation type="unfinished"><p>--- pas de liens ---</p></translation>
+    </message>
+</context>
+<context>
+    <name>IGisProject</name>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="109"/>
+        <source>Save project?</source>
+        <translation type="unfinished">Enregistrer le projet ?</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="109"/>
+        <source><h3>%1</h3>The project was changed. Save before closing it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="261"/>
+        <source>%1: Correlate tracks and waypoints.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="271"/>
+        <source><h3>%1</h3>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project in the future?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="272"/>
+        <source>Canceled correlation...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="312"/>
+        <source>Save "%1" to...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="423"/>
+        <source><br/>
+Filename: %1</source>
+        <translation type="unfinished"><br/>
+Nom de fichier: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="428"/>
+        <source>Waypoints: %1</source>
+        <translation type="unfinished">Waypoints: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="432"/>
+        <source>Tracks: %1</source>
+        <translation type="unfinished">Traces: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="436"/>
+        <source>Routes: %1</source>
+        <translation type="unfinished">Routes: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="440"/>
+        <source>Areas: %1</source>
+        <translation type="unfinished">Surfaces: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="520"/>
+        <source>Are you sure you want to delete '%1' from project '%2'?</source>
+        <translation type="unfinished">Êtes-vous sûr de vouloir supprimer %1 du projet '%2'?</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="521"/>
+        <source>Delete...</source>
+        <translation type="unfinished">Supprimer...</translation>
+    </message>
+</context>
+<context>
     <name>IGisWidget</name>
     <message>
         <location filename="../gis/IGisWidget.ui" line="14"/>
@@ -3683,7 +5363,12 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation>Nom</translation>
     </message>
     <message>
-        <location filename="../gis/IGisWidget.ui" line="133"/>
+        <location filename="../gis/IGisWidget.ui" line="104"/>
+        <source>Age</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisWidget.ui" line="138"/>
         <source>To add a database do a right click on the database list above.</source>
         <translation>Pour ajouter une base de données cliquez droit sur la liste ci-dessus</translation>
     </message>
@@ -3956,178 +5641,183 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation>Aide</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="436"/>
+        <location filename="../IMainWindow.ui" line="430"/>
+        <source>F1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <location filename="../IMainWindow.ui" line="439"/>
+        <location filename="../IMainWindow.ui" line="442"/>
         <source>Setup Map View</source>
         <translation>Configurer la vue cartographique</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="448"/>
+        <location filename="../IMainWindow.ui" line="451"/>
         <source>Load GIS Data</source>
         <translation>Charger des données SIG...</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="451"/>
+        <location filename="../IMainWindow.ui" line="454"/>
         <source>Load projects from file</source>
         <translation>Charger un fichier projet</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="454"/>
+        <location filename="../IMainWindow.ui" line="457"/>
         <source>Ctrl+L</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="463"/>
+        <location filename="../IMainWindow.ui" line="466"/>
         <source>Save All GIS Data</source>
         <translation>Enregistrer toutes les données SIG</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="466"/>
+        <location filename="../IMainWindow.ui" line="469"/>
         <source>Save all projects in the workspace</source>
         <translation>Enregistrer tous les projets de l'espace de travail</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="469"/>
+        <location filename="../IMainWindow.ui" line="472"/>
         <source>Ctrl+S</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="478"/>
+        <location filename="../IMainWindow.ui" line="481"/>
         <source>Setup Time Zone</source>
         <translation>Configurer le fuseau horaire</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="487"/>
+        <location filename="../IMainWindow.ui" line="490"/>
         <source>Add empty project</source>
         <translation>Ajouter un projet vide</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="499"/>
+        <location filename="../IMainWindow.ui" line="502"/>
         <source>Search Google</source>
         <translation>Recherche Google</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="508"/>
+        <location filename="../IMainWindow.ui" line="511"/>
         <source>Close all projects</source>
         <translation>Fermer tous les projets</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="511"/>
+        <location filename="../IMainWindow.ui" line="514"/>
         <source>F8</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="520"/>
+        <location filename="../IMainWindow.ui" line="523"/>
         <source>Setup Units</source>
         <translation>Configurer les unités</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="529"/>
+        <location filename="../IMainWindow.ui" line="532"/>
         <source>Setup Workspace</source>
         <translation>Configurer l'espace de travail</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="532"/>
+        <location filename="../IMainWindow.ui" line="535"/>
         <source>Setup save on exit.</source>
         <translation>Sauvegarde de la configuration en quittant</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="541"/>
+        <location filename="../IMainWindow.ui" line="544"/>
         <source>Import Database from QLandkarte</source>
         <translation>Importer une base de données QLandkarte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="544"/>
+        <location filename="../IMainWindow.ui" line="547"/>
         <source>Import QLandkarte GT database</source>
         <translation>Importer une base de données QLandkarte GT</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="553"/>
+        <location filename="../IMainWindow.ui" line="556"/>
         <source>VRT Builder</source>
         <translation>Générateur de VRT</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="556"/>
+        <location filename="../IMainWindow.ui" line="559"/>
         <source>GUI front end to gdalbuildvrt</source>
         <translation>Interface utilisateur pour gdalbuildvrt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="565"/>
+        <location filename="../IMainWindow.ui" line="568"/>
         <source>Store Map View</source>
         <translation>Enregistrer une vue cartographique</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="568"/>
+        <location filename="../IMainWindow.ui" line="571"/>
         <source>Write current active map and DEM list including the properties to a file</source>
         <translation>Sauvegarder les cartes et calques DEM actives et leurs paramètres dans un fichier</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="577"/>
+        <location filename="../IMainWindow.ui" line="580"/>
         <source>Load Map View</source>
         <translation>Charger une vue cartographique</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="580"/>
+        <location filename="../IMainWindow.ui" line="583"/>
         <source>Restore view with active map and DEM list including the properties from a file</source>
         <translation>Rétablir une vue avec les cartes et calques DEM et leurs paramètres à partir d'un fichier</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="592"/>
+        <location filename="../IMainWindow.ui" line="595"/>
         <source>Ext. Profile</source>
         <translation>Profile externe</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="595"/>
+        <location filename="../IMainWindow.ui" line="598"/>
         <source>Ctrl+E</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="604"/>
+        <location filename="../IMainWindow.ui" line="607"/>
         <source>Close</source>
         <translation>Fermer</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="607"/>
+        <location filename="../IMainWindow.ui" line="610"/>
         <source>Ctrl+Q</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="616"/>
+        <location filename="../IMainWindow.ui" line="619"/>
         <source>Clone Map View</source>
         <translation>Dupliquer une vue cartographique</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="619"/>
+        <location filename="../IMainWindow.ui" line="622"/>
         <source>Ctrl+Shift+T</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="628"/>
+        <location filename="../IMainWindow.ui" line="631"/>
         <source>Create Routino Database</source>
-        <translation type="unfinished"></translation>
+        <translation type="unfinished">Créer une base de données Routino</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="637"/>
+        <location filename="../IMainWindow.ui" line="640"/>
         <source>Save(Print) Map Screenshot</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="640"/>
+        <location filename="../IMainWindow.ui" line="643"/>
         <source>Print a selected area of the map</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="643"/>
+        <location filename="../IMainWindow.ui" line="646"/>
         <source>Ctrl+P</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="652"/>
+        <location filename="../IMainWindow.ui" line="655"/>
         <source>Setup Coord. Format</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="655"/>
+        <location filename="../IMainWindow.ui" line="658"/>
         <source>Change the format coordinates are displayed</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4161,6 +5851,31 @@ Je n'ai pas envie de lire la documentation !</translation>
         <source>Activate</source>
         <translation>Activer</translation>
     </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="158"/>
+        <source>Move Up</source>
+        <translation type="unfinished">Déplacer vers le haut</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="161"/>
+        <source>Hide map behind previous map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="170"/>
+        <source>Move down</source>
+        <translation type="unfinished">Déplacer vers le bas</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="173"/>
+        <source>Show map on top of next map</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="182"/>
+        <source>Reload Maps</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>IMapPathSetup</name>
@@ -4317,64 +6032,64 @@ Je n'ai pas envie de lire la documentation !</translation>
         <translation type="obsolete">Ceci remplacera les données de l'original par une ligne simple de coordonnées. Toutes les autres données seront définitivement perdues.</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="255"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="269"/>
         <source><b>New Line</b><br/>Move the mouse and use the left mouse button to drop points. When done use the right mouse button to stop.<br/></source>
         <translation><b>Nouvelle ligne</b><br/>Déplacez la souris et utilisez le bouton gauche pour ajouter des points. Cliquez droit pour terminer.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="302"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="316"/>
         <source><b>Delete Point</b><br/>Move the mouse close to a point and press the left button to delete it.<br/></source>
         <translation><b>Supprimer un point</b><br/>Approchez le pointeur du point et cliquez gauche pour le supprimer.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="311"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="325"/>
         <source><b>Select Range of Points</b><br/>Left click on first point to start selection. Left click second point to complete selection and choose from options. Use the right mouse button to cancel.<br/></source>
         <translation><b>Sélectionner une série de points</b><br/> Pour commencer la sélection, cliquez gauche sur le premier point. Cliquez gauche sur le sur le deuxième point pour terminer la sélection et choisissez une option. Utilisez le bouton droit pour annuler.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="320"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="334"/>
         <source><b>Move Point</b><br/>Move the mouse close to a point and press the left button to make it stick to the cursor. Move the mouse to move the point. Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
         <translation><b>Déplacer un point</b><br/>Approchez le pointeur près d'un point et cliquez gauche pour le coller au pointeur. Déplacez le point avec la souris. Déposez le point avec un clic gauche. Utilisez le bouton droit pour annuler.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="329"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="343"/>
         <source><b>Add Point</b><br/>Move the mouse close to a line segment and press the left button to add a point. The point will stick to the cursor and you can move it.  Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
         <translation><b>Ajouter un point</b><br/>Placez le pointeur de la souris près d'un segment de ligne et cliquez gauche pour ajouter un point. Le nouveau point va coller au pointeur et vous pouvez le déplacer. Déposez le point par un clic gauche. Utilisez le clic droit pour annuler.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="338"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="352"/>
         <source><b>No Routing</b><br/>All points will be connected with a straight line.<br/></source>
         <translation><b>Aucun calcul d'itinéraire</b><br/>Les points seront connectés par une ligne droite.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="343"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="357"/>
         <source><b>Auto Routing</b><br/>The current router setup is used to derive a route between points. <b>Note:</b> The selected router must be able to route on-the-fly. Offline routers usually can do, online routers can't.<br/></source>
         <translation><b>Calcul d'itinéraire automatique</b><br/>Les paramètres de calcul d'itinéraire actuels serviront pour calculer un tracé entre les points. <b>Remarque :</b>Le routeur sélectionné doit être capable de faire le calcul à la volée. Généralement, les routeurs hors ligne en sont capables, les routeurs en ligne ne le sont pas.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="348"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="362"/>
         <source><b>Vector Routing</b><br/>Connect points with a line from a loaded vector map if possible.<br/></source>
         <translation><b>Calcul d'itinéraire vecteur</b><br/>Connecter les points avec une ligne basée sur une carte vecteur active, si possible.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="517"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="542"/>
         <source><b>%1 Metrics</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>%1 Mesures</b></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="520"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="545"/>
         <source>Distance:</source>
-        <translation type="unfinished"></translation>
+        <translation>Distance:</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="522"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="547"/>
         <source>Ascend:</source>
-        <translation type="unfinished"></translation>
+        <translation>Dénivelé positif:</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="524"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="549"/>
         <source>Descend:</source>
-        <translation type="unfinished"></translation>
+        <translation>Dénivelé négatif:</translation>
     </message>
 </context>
 <context>
@@ -4394,28 +6109,28 @@ Je n'ai pas envie de lire la documentation !</translation>
 <context>
     <name>IPlot</name>
     <message>
-        <location filename="../plot/IPlot.cpp" line="91"/>
+        <location filename="../plot/IPlot.cpp" line="93"/>
         <source>Reset Zoom</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="92"/>
+        <location filename="../plot/IPlot.cpp" line="94"/>
         <source>Stop Range</source>
         <translatorcomment>tbc: range</translatorcomment>
         <translation>Terminer la série</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="93"/>
+        <location filename="../plot/IPlot.cpp" line="95"/>
         <source>Save...</source>
         <translation>Enregistrer...</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="613"/>
+        <location filename="../plot/IPlot.cpp" line="638"/>
         <source>No or bad data.</source>
         <translation>Aucune donnée ou données invalides.</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="1200"/>
+        <location filename="../plot/IPlot.cpp" line="1230"/>
         <source>Select output file</source>
         <translation>Sélectionner le fichier de sortie</translation>
     </message>
@@ -4446,24 +6161,34 @@ or
     <message>
         <location filename="../print/IPrintDialog.ui" line="20"/>
         <source>Print map...</source>
-        <translation type="unfinished"></translation>
+        <translation>Imprimer la carte...</translation>
     </message>
     <message>
-        <location filename="../print/IPrintDialog.ui" line="50"/>
+        <location filename="../print/IPrintDialog.ui" line="79"/>
+        <source>When printing online maps make sure that the map has been loaded into the cache for the extent to be printed.</source>
+        <translation>Pour l'impression de cartes en lignes assurez-vous que l'ensemble de la zone à imprimer est bien déjà stockée dans le cache.</translation>
+    </message>
+    <message>
+        <location filename="../print/IPrintDialog.ui" line="60"/>
         <source>Save</source>
-        <translation type="unfinished">Enregistrer</translation>
+        <translation>Enregistrer</translation>
+    </message>
+    <message>
+        <location filename="../print/IPrintDialog.ui" line="37"/>
+        <source>When saving online maps make sure that the map has been loaded into the cache for the extent to be saved.</source>
+        <translation>Poursauvegarder des cartes en lignes assurez-vous que l'ensemble de la zone à sauvegarder est bien déjà stockée dans le cache.</translation>
     </message>
     <message>
-        <location filename="../print/IPrintDialog.ui" line="69"/>
-        <location filename="../print/IPrintDialog.ui" line="82"/>
-        <location filename="../print/IPrintDialog.ui" line="131"/>
+        <location filename="../print/IPrintDialog.ui" line="89"/>
+        <location filename="../print/IPrintDialog.ui" line="102"/>
+        <location filename="../print/IPrintDialog.ui" line="151"/>
         <source>TextLabel</source>
-        <translation type="unfinished">Libellé</translation>
+        <translation>Libellé</translation>
     </message>
     <message>
-        <location filename="../print/IPrintDialog.ui" line="98"/>
+        <location filename="../print/IPrintDialog.ui" line="118"/>
         <source>Print</source>
-        <translation type="unfinished"></translation>
+        <translation>Impression</translation>
     </message>
 </context>
 <context>
@@ -4471,13 +6196,13 @@ or
     <message>
         <location filename="../helpers/IProgressDialog.ui" line="14"/>
         <source>Please wait...</source>
-        <translation type="unfinished"></translation>
+        <translation>Patientez s'il-vous-plaît</translation>
     </message>
     <message>
         <location filename="../helpers/IProgressDialog.ui" line="20"/>
         <location filename="../helpers/IProgressDialog.ui" line="27"/>
         <source>TextLabel</source>
-        <translation type="unfinished">Libellé</translation>
+        <translation>Libellé</translation>
     </message>
 </context>
 <context>
@@ -4565,7 +6290,7 @@ or
         <source>m</source>
         <translation></translation>
     </message>
-    <message>
+    <message utf8="true">
         <location filename="../gis/wpt/IProjWpt.ui" line="76"/>
         <source>°</source>
         <translation></translation>
@@ -4747,82 +6472,86 @@ or
         <translation></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="53"/>
         <source>Save to orignal</source>
-        <translation>Enregistrer</translation>
+        <translation type="obsolete">Enregistrer</translation>
+    </message>
+    <message>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="40"/>
+        <source>Save to original</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="60"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="47"/>
         <source>Save as new</source>
         <translation>Enregistrer sous...</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="67"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="54"/>
         <source>Abort</source>
         <translation>Annuler</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="102"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="89"/>
         <source>Move points. (Ctrl+M)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="112"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="99"/>
         <source>Ctrl+M</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="128"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="115"/>
         <source>Add new points. (Ctrl++)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="138"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="125"/>
         <source>Ctrl++</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="151"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="138"/>
         <source>Select a range of points. (Ctrl+R)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="161"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="148"/>
         <source>Ctrl+R</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="174"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="161"/>
         <source>Delete a point. (Ctrl+D)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="184"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="171"/>
         <source>Ctrl+D</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="228"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="215"/>
         <source>No auto-routing or line snapping (Ctrl+O)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="238"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="225"/>
         <source>Ctrl+O</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="251"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="238"/>
         <source>Use auto-routing to between points. (Ctrl+A)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="261"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="248"/>
         <source>Ctrl+A</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="274"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="261"/>
         <source>Snap line along lines of a vector map. (Ctrl+V)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4831,12 +6560,12 @@ or
         <translation type="obsolete">Déplacer des points.</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="105"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="131"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="154"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="177"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="313"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="330"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="92"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="118"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="141"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="164"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="300"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="317"/>
         <source>...</source>
         <translation>...</translation>
     </message>
@@ -4858,7 +6587,7 @@ or
         <translation type="obsolete">Aucun calcul d'itinéraire automatique ou verrouillage </translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="231"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="218"/>
         <source>0</source>
         <translation></translation>
     </message>
@@ -4867,7 +6596,7 @@ or
         <translation type="obsolete">Utiliser le calcul d'itinéraire automatique entre deux points.</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="254"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="241"/>
         <source>A</source>
         <translation></translation>
     </message>
@@ -4876,22 +6605,22 @@ or
         <translation type="obsolete">Verrouiller la ligne aux lignes d'une carte vecteur.</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="277"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="264"/>
         <source>V</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="284"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="271"/>
         <source>Ctrl+V</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="310"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="297"/>
         <source>Undo last change</source>
         <translation>Annuler la dernière modification</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="327"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="314"/>
         <source>Redo last change</source>
         <translation>Rétablir la dernière modification</translation>
     </message>
@@ -4992,7 +6721,7 @@ or
     </message>
     <message>
         <source>Caclculate a route between the first and last selected point.</source>
-        <translation type="vanished">Calcluler un itinéraire entre le premier et le dernier point sélectionné.</translation>
+        <translation type="obsolete">Calcluler un itinéraire entre le premier et le dernier point sélectionné.</translation>
     </message>
 </context>
 <context>
@@ -5182,7 +6911,7 @@ or
     </message>
     <message>
         <source>Cut track at selected point into two tracks.</source>
-        <translation type="vanished">Couper la trace en deux au point sélectionné</translation>
+        <translation type="obsolete">Couper la trace en deux au point sélectionné</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="196"/>
@@ -5273,11 +7002,19 @@ or
     <message>
         <location filename="../gis/trk/ISelectActivity.ui" line="14"/>
         <source>Activities...</source>
-        <translation type="unfinished"></translation>
+        <translation>Activités...</translation>
     </message>
     <message>
         <location filename="../gis/trk/ISelectActivity.ui" line="20"/>
         <source>Select one:</source>
+        <translation>Faites une sélection :</translation>
+    </message>
+</context>
+<context>
+    <name>ISelectActivityColor</name>
+    <message>
+        <location filename="../gis/trk/ISelectActivityColor.ui" line="14"/>
+        <source>Form</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -5289,45 +7026,45 @@ or
         <translation>Copier un élément...</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="23"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="29"/>
         <source>Replace existing item</source>
         <translation>Remplacer l'élément existant</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="30"/>
-        <location filename="../helpers/ISelectCopyAction.ui" line="40"/>
-        <location filename="../helpers/ISelectCopyAction.ui" line="67"/>
-        <location filename="../helpers/ISelectCopyAction.ui" line="77"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="36"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="46"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="79"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="89"/>
         <source>TextLabel</source>
         <translation>Libellé</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="60"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="72"/>
         <source>Do not copy item</source>
         <translation>Ne pas copier l'élément</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="97"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="115"/>
         <source>Create a clone</source>
         <translation>Dupliquer l'élément</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="104"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="122"/>
         <source>Replace with:</source>
         <translation>Remplacer par:</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="111"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="129"/>
         <source>Keep item:</source>
         <translation>Conserver l'élément:</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="118"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="136"/>
         <source>The clone's name will be appended with '_Clone'</source>
         <translation>Le nom de la copie aura le suffixe '_Clone'</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="135"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="153"/>
         <source>And for all other items, too.</source>
         <translation>et pour tous les autres éléments</translation>
     </message>
@@ -5386,40 +7123,50 @@ or
 <context>
     <name>ISelectSaveAction</name>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="14"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="20"/>
         <source>Copy item...</source>
         <translation>Copier un élément...</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="23"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="35"/>
         <source>Replace existing item</source>
         <translation>Remplacer l'élément existant</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="30"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="87"/>
+        <source>Add a clone</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="100"/>
+        <source>The clone's name will be appended with '_Clone'</source>
+        <translation type="unfinished">Le nom de la copie aura le suffixe '_Clone'</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="171"/>
         <source>Replace with:</source>
         <translation>Remplacer par:</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="37"/>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="47"/>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="81"/>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="91"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="42"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="68"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="130"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="140"/>
         <source>TextLabel</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="67"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="61"/>
         <source>Do not replace item</source>
         <translation>Ne pas remplacer l'élément</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="74"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="123"/>
         <source>Use item:</source>
         <translation>Utiliser l'élément:</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="111"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="116"/>
         <source>And for all other items, too.</source>
         <translation>et pour tous les autres éléments</translation>
     </message>
@@ -5432,33 +7179,87 @@ or
         <translation>Ajouter une base de données...</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="25"/>
         <source>File</source>
-        <translation>Fichier</translation>
+        <translation type="obsolete">Fichier</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="32"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="68"/>
         <source>-</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="39"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="25"/>
         <source>Name</source>
         <translation>Nom</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="46"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="252"/>
+        <source><p align="justify"><span style=" font-weight:600;">Caution!</span> It is recommended to leave the password blank, as QMapShack will store it as plain text. If you don't give a password you will be asked for it on each startup.</p></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="239"/>
+        <source>Do not use a password.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="153"/>
+        <source>SQLite</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="115"/>
+        <source>MySQL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="181"/>
+        <source>Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="193"/>
+        <source>Port</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="206"/>
+        <source>00000</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="215"/>
+        <source>User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="225"/>
+        <source>Password</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="275"/>
+        <source><b>Port:</b> Leave the port field empty to use the default port.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="61"/>
+        <source>File:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="75"/>
         <source>Add new database.</source>
         <translation>Ajouter une nouvelle base de données.</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="49"/>
-        <location filename="../gis/db/ISetupDatabase.ui" line="63"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="78"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="92"/>
         <source>...</source>
         <translation></translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="60"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="89"/>
         <source>Open existing database.</source>
         <translation>Ouvrir une base de données existante.</translation>
     </message>
@@ -5552,6 +7353,16 @@ or
         <source>minutes</source>
         <translation></translation>
     </message>
+    <message>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="56"/>
+        <source>listen for database changes from other instances of QMapShack. On port</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="63"/>
+        <source>00000</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>ITextEditWidget</name>
@@ -5739,42 +7550,61 @@ or
 <context>
     <name>IToolShell</name>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="44"/>
+        <location filename="../tool/IToolShell.cpp" line="45"/>
         <source>Execution of external program `%1` failed: </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="48"/>
+        <location filename="../tool/IToolShell.cpp" line="49"/>
         <source>Process cannot be started.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="49"/>
+        <location filename="../tool/IToolShell.cpp" line="50"/>
         <source>Make sure the required packages are installed, `%1` exists and is executable.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="53"/>
+        <location filename="../tool/IToolShell.cpp" line="54"/>
         <source>External process crashed.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="57"/>
+        <location filename="../tool/IToolShell.cpp" line="58"/>
         <source>An unknown error occurred.
 </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="148"/>
+        <location filename="../tool/IToolShell.cpp" line="149"/>
         <source>!!! failed !!!
 </source>
         <translation type="unfinished">!!! échec !!!</translation>
     </message>
 </context>
 <context>
+    <name>IUnit</name>
+    <message>
+        <location filename="../units/IUnit.cpp" line="735"/>
+        <location filename="../units/IUnit.cpp" line="741"/>
+        <source>Error</source>
+        <translation type="unfinished">Erreur</translation>
+    </message>
+    <message>
+        <location filename="../units/IUnit.cpp" line="735"/>
+        <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
+        <translation type="unfinished">Mauvais format de position. Formats valides: "[N|S] ddd mm.sss [W|E] ddd mm.sss" ou "[N|S] ddd.ddd [W|E] ddd.ddd" </translation>
+    </message>
+    <message>
+        <location filename="../units/IUnit.cpp" line="741"/>
+        <source>Position values out of bounds. </source>
+        <translation type="unfinished">Valeurs de la position hors de la plage autorisée.</translation>
+    </message>
+</context>
+<context>
     <name>IUnitsSetup</name>
     <message>
         <location filename="../units/IUnitsSetup.ui" line="14"/>
@@ -5813,974 +7643,560 @@ or
 <context>
     <name>QObject</name>
     <message>
-        <location filename="../device/CDeviceGarmin.cpp" line="204"/>
         <source>Picture%1</source>
-        <translation>Image%1</translation>
+        <translation type="obsolete">Image%1</translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="745"/>
-        <location filename="../units/IUnit.cpp" line="751"/>
         <source>Error</source>
-        <translation>Erreur</translation>
+        <translation type="obsolete">Erreur</translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="745"/>
         <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
-        <translation>Mauvais format de position. Formats valides: "[N|S] ddd mm.sss [W|E] ddd mm.sss" ou "[N|S] ddd.ddd [W|E] ddd.ddd" </translation>
+        <translation type="obsolete">Mauvais format de position. Formats valides: "[N|S] ddd mm.sss [W|E] ddd mm.sss" ou "[N|S] ddd.ddd [W|E] ddd.ddd" </translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="751"/>
         <source>Position values out of bounds. </source>
-        <translation>Valeurs de la position hors de la plage autorisée.</translation>
+        <translation type="obsolete">Valeurs de la position hors de la plage autorisée.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="436"/>
         <source>Are you sure you want to delete '%1' from folder '%2'?</source>
-        <translation>Êtes-vous sûr de vouloir supprimer %1 du dossier %2?</translation>
+        <translation type="obsolete">Êtes-vous sûr de vouloir supprimer %1 du dossier %2?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="437"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="424"/>
         <source>Delete...</source>
-        <translation>Supprimer...</translation>
+        <translation type="obsolete">Supprimer...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1098"/>
         <source>Delete project...</source>
-        <translation>Supprimer le projet</translation>
+        <translation type="obsolete">Supprimer le projet</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1098"/>
         <source>Do you really want to delete %1?</source>
-        <translation>Êtes-vous sûr de vouloir supprimer %1?</translation>
+        <translation type="obsolete">Êtes-vous sûr de vouloir supprimer %1?</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderDatabase.cpp" line="28"/>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="30"/>
         <source>All your data grouped by folders.</source>
-        <translation>Vos données groupées par dossiers.</translation>
+        <translation type="obsolete">Vos données groupées par dossiers.</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="61"/>
         <source>Lost & Found (%1)</source>
-        <translation>Perdu & Trouvé (%1)</translation>
+        <translation type="obsolete">Perdu & Trouvé (%1)</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="66"/>
-        <location filename="../gis/db/CLostFoundProject.cpp" line="39"/>
         <source>Lost & Found</source>
-        <translation>Perdu & Trouvé</translation>
+        <translation type="obsolete">Perdu & Trouvé</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="158"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="222"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="95"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="159"/>
         <source>Save GIS data to...</source>
-        <translation>Enregistrer les données SIG dans...</translation>
+        <translation type="obsolete">Enregistrer les données SIG dans...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="262"/>
         <source>Save ...</source>
-        <translation>Enregistrer...</translation>
+        <translation type="obsolete">Enregistrer...</translation>
     </message>
     <message>
         <source>Abort save</source>
         <translation type="obsolete">Annuler l'enregistrement</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="98"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="144"/>
         <source>Failed to open...</source>
-        <translation>Impossible d'ouvrir...</translation>
+        <translation type="obsolete">Impossible d'ouvrir...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="98"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="144"/>
         <source>Failed to open %1</source>
-        <translation>Impossible d'ouvrir %1</translation>
+        <translation type="obsolete">Impossible d'ouvrir %1</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="111"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="120"/>
         <source>Failed to read...</source>
-        <translation>Impossible de lire...</translation>
+        <translation type="obsolete">Impossible de lire...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="111"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
-        <translation>Impossible de lire: %1
+        <translation type="obsolete">Impossible de lire: %1
 ligne %2, colonne %3:
 %4</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="120"/>
         <source>Not a GPX file: </source>
-        <translation>N'est pas un fichier GPX:</translation>
+        <translation type="obsolete">N'est pas un fichier GPX:</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="286"/>
         <source>File exists ...</source>
-        <translation>Le fichier existe...</translation>
+        <translation type="obsolete">Le fichier existe...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="287"/>
         <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
-        <translation>Le fichier existe et n'a pas été créé par QMapShack. Si vous cliquez sur 'oui' tous les données de ce fichier seront perdues. Même si ce fichier contient des données GPX et sera ouvert par QMapShack certains éléments de ce fichier ne pourront pas être lus ou enregistrés. Ces élements seront perdus. Il est conseillé d'utiliser un autre fichier.<b>Voulez-vous vraiment écraser ce fichier ?</b> </translation>
+        <translation type="obsolete">Le fichier existe et n'a pas été créé par QMapShack. Si vous cliquez sur 'oui' tous les données de ce fichier seront perdues. Même si ce fichier contient des données GPX et sera ouvert par QMapShack certains éléments de ce fichier ne pourront pas être lus ou enregistrés. Ces élements seront perdus. Il est conseillé d'utiliser un autre fichier.<b>Voulez-vous vraiment écraser ce fichier ?</b> </translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="395"/>
         <source>Failed to create file '%1'</source>
-        <translation>Impossible de créer le fichier: '%1'</translation>
+        <translation type="obsolete">Impossible de créer le fichier: '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="405"/>
         <source>Failed to write file '%1'</source>
-        <translation>Impossible d'écrire le fichier: '%1'</translation>
-    </message>
-    <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="410"/>
-        <source>Saving GIS data failed...</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Impossible d'écrire le fichier: '%1'</translation>
     </message>
     <message>
         <source>Saveing GIS data failed...</source>
-        <translation type="vanished">Impossible d'enregistrer les données SIG...</translation>
+        <translation type="obsolete">Impossible d'enregistrer les données SIG...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="582"/>
         <source>Archived</source>
-        <translation>Archivé</translation>
+        <translation type="obsolete">Archivé</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="586"/>
         <source>Available</source>
-        <translation>Disponible</translation>
+        <translation type="obsolete">Disponible</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="590"/>
         <source>Not Available</source>
-        <translation>Non disponible</translation>
+        <translation type="obsolete">Non disponible</translation>
+    </message>
+    <message>
+        <source>Unknown</source>
+        <translation type="obsolete">Inconnu</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="345"/>
         <source>Initial version.</source>
-        <translation>Version initiale</translation>
+        <translation type="obsolete">Version initiale</translation>
     </message>
     <message>
         <source>This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press'Ok'.</source>
         <translation type="obsolete">Cet élément est probablement en lecture seule parce qu'il n'a pas été créé avec QMapShack. Normelement, vous ne devriez pas modifier des données importées. Mais si vous êtes sûr de ce que vous faites, cliquez sur 'OK'</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="453"/>
-        <source><h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press 'Ok'.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/IGisItem.cpp" line="454"/>
         <source>Read Only Mode...</source>
-        <translation>Mode lecture seule</translation>
+        <translation type="obsolete">Mode lecture seule</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="615"/>
         <source><h4>Comment:</h4></source>
-        <translation><h4>Commentaire:</h4></translation>
+        <translation type="obsolete"><h4>Commentaire:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="618"/>
         <source><p>--- no comment ---</p></source>
-        <translation><p>--- pas de commentaire ---</p></translation>
-    </message>
-    <message>
-        <location filename="../gis/IGisItem.cpp" line="601"/>
-        <location filename="../gis/IGisItem.cpp" line="660"/>
-        <source><h4>Description:</h4></source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../gis/IGisItem.cpp" line="42"/>
-        <source>[no name]</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete"><p>--- pas de commentaire ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="604"/>
-        <location filename="../gis/IGisItem.cpp" line="663"/>
         <source><p>--- no description ---</p></source>
-        <translation><p>--- pas de description ---</p></translation>
+        <translation type="obsolete"><p>--- pas de description ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="629"/>
-        <location filename="../gis/IGisItem.cpp" line="674"/>
         <source><h4>Links:</h4></source>
-        <translation><h4>Liens:</h4></translation>
+        <translation type="obsolete"><h4>Liens:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="632"/>
-        <location filename="../gis/IGisItem.cpp" line="677"/>
         <source><p>--- no links ---</p></source>
-        <translation><p>--- pas de liens ---</p></translation>
+        <translation type="obsolete"><p>--- pas de liens ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="96"/>
         <source>thin</source>
-        <translation>fine</translation>
+        <translation type="obsolete">fine</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="97"/>
         <source>normal</source>
-        <translation>normal</translation>
+        <translation type="obsolete">normal</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="98"/>
         <source>wide</source>
-        <translation>large</translation>
+        <translation type="obsolete">large</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="99"/>
         <source>strong</source>
-        <translation>épaisse</translation>
+        <translation type="obsolete">épaisse</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="138"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="63"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="124"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="92"/>
         <source>_Clone</source>
-        <translation>_Clone</translation>
+        <translation type="obsolete">_Clone</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="431"/>
         <source>Area: %1%2</source>
-        <translation>Surface: %1%2</translation>
-    </message>
-    <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="493"/>
-        <source>Changed area shape.</source>
-        <translation></translation>
+        <translation type="obsolete">Surface: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="501"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="221"/>
         <source>Changed name.</source>
-        <translation>Nom modifié...</translation>
+        <translation type="obsolete">Nom modifié...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="507"/>
         <source>Changed border width.</source>
-        <translation>Largeur de la bordure modifiée...</translation>
+        <translation type="obsolete">Largeur de la bordure modifiée...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="513"/>
         <source>Changed fill pattern.</source>
-        <translation>Remplissage modifié...</translation>
+        <translation type="obsolete">Remplissage modifié...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="519"/>
         <source>Changed opacity.</source>
-        <translation>Opacité modifiée...</translation>
+        <translation type="obsolete">Opacité modifiée...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="525"/>
         <source>Changed comment.</source>
-        <translation>Commentaire modifié...</translation>
+        <translation type="obsolete">Commentaire modifié...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="531"/>
         <source>Changed description.</source>
-        <translation>Description modifiée...</translation>
+        <translation type="obsolete">Description modifiée...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="537"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="239"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2059"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="366"/>
         <source>Changed links</source>
-        <translation>Liens modifiés...</translation>
+        <translation type="obsolete">Liens modifiés...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="549"/>
         <source>Changed color</source>
-        <translation>Couleur modifiée...</translation>
+        <translation type="obsolete">Couleur modifiée...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="97"/>
         <source>Save project?</source>
-        <translation>Enregistrer le projet ?</translation>
+        <translation type="obsolete">Enregistrer le projet ?</translation>
     </message>
     <message>
         <source>The project "%1" was changed. Save before closing it?</source>
         <translation type="obsolete">Le projet "%1" a été modifié. Enregistrer avant de le fermer ?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="237"/>
-        <source>%1: Correlate tracks and waypoints.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <source>Abort</source>
         <translation type="obsolete">Annuler</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="97"/>
-        <source><h3>%1</h3>The project was changed. Save before closing it?</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="247"/>
-        <source><h3>%1</h3>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project in the future?</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="248"/>
-        <source>Canceled correlation...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="326"/>
         <source><br/>
 Filename: %1</source>
-        <translation><br/>
+        <translation type="obsolete"><br/>
 Nom de fichier: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="331"/>
         <source>Waypoints: %1</source>
-        <translation>Waypoints: %1</translation>
+        <translation type="obsolete">Waypoints: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="335"/>
         <source>Tracks: %1</source>
-        <translation>Traces: %1</translation>
+        <translation type="obsolete">Traces: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="339"/>
         <source>Routes: %1</source>
-        <translation>Routes: %1</translation>
+        <translation type="obsolete">Routes: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="343"/>
         <source>Areas: %1</source>
-        <translation>Surfaces: %1</translation>
+        <translation type="obsolete">Surfaces: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="423"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
-        <translation>Êtes-vous sûr de vouloir supprimer %1 du projet '%2'?</translation>
+        <translation type="obsolete">Êtes-vous sûr de vouloir supprimer %1 du projet '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="227"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2047"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="354"/>
         <source>Changed comment</source>
-        <translation>Commentaire modifié</translation>
+        <translation type="obsolete">Commentaire modifié</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="233"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2053"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="360"/>
         <source>Changed description</source>
-        <translation>Description modifiée</translation>
+        <translation type="obsolete">Description modifiée</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="266"/>
         <source>Length: -</source>
-        <translation>Longueur: -</translation>
+        <translation type="obsolete">Longueur: -</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="273"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="456"/>
         <source>Time: %1 %2</source>
-        <translation type="unfinished">Durée: %1 %2</translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="458"/>
-        <source>Distance: %1 %2</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Durée: %1 %2</translation>
     </message>
     <message>
         <source>Time: %2 days %1</source>
         <translation type="obsolete">Durée : %2 jours %1</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="277"/>
         <source>Time: -</source>
         <translatorcomment>tbc: heure/temps/durée</translatorcomment>
-        <translation>Heure : -</translation>
+        <translation type="obsolete">Heure : -</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="283"/>
         <source>Last time routed:<br/>%1</source>
         <translatorcomment>tbc</translatorcomment>
-        <translation>Date du dernier calcul d'itinéraire : <br/>%1</translation>
+        <translation type="obsolete">Date du dernier calcul d'itinéraire : <br/>%1</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="285"/>
         <source>with %1</source>
-        <translation>avec %1</translation>
+        <translation type="obsolete">avec %1</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="572"/>
         <source>Changed route points.</source>
-        <translation>Points de route modifiés.</translation>
+        <translation type="obsolete">Points de route modifiés.</translation>
     </message>
     <message>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
-        <location filename="../gis/tnv/serialization.cpp" line="211"/>
-        <location filename="../gis/tnv/serialization.cpp" line="347"/>
-        <location filename="../gis/tnv/serialization.cpp" line="376"/>
-        <location filename="../gis/tnv/serialization.cpp" line="387"/>
-        <location filename="../gis/tnv/serialization.cpp" line="420"/>
-        <location filename="../gis/tnv/serialization.cpp" line="560"/>
-        <location filename="../gis/tnv/serialization.cpp" line="588"/>
-        <location filename="../gis/tnv/serialization.cpp" line="599"/>
-        <location filename="../gis/tnv/serialization.cpp" line="617"/>
-        <location filename="../gis/tnv/serialization.cpp" line="645"/>
-        <location filename="../gis/tnv/serialization.cpp" line="719"/>
         <source>Error...</source>
-        <translation>Erreur...</translation>
+        <translation type="obsolete">Erreur...</translation>
     </message>
     <message>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
-        <location filename="../gis/tnv/serialization.cpp" line="211"/>
-        <location filename="../gis/tnv/serialization.cpp" line="347"/>
-        <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <source>Failed to open %1.</source>
-        <translation>Impossible d'ouvrir %1</translation>
+        <translation type="obsolete">Impossible d'ouvrir %1</translation>
     </message>
     <message>
-        <location filename="../gis/tnv/serialization.cpp" line="376"/>
-        <location filename="../gis/tnv/serialization.cpp" line="387"/>
-        <location filename="../gis/tnv/serialization.cpp" line="588"/>
-        <location filename="../gis/tnv/serialization.cpp" line="599"/>
         <source>Only support lon/lat WGS 84 format.</source>
-        <translation>Le seul format lon/lat autorisé est WGS 84</translation>
+        <translation type="obsolete">Le seul format lon/lat autorisé est WGS 84</translation>
     </message>
     <message>
-        <location filename="../gis/tnv/serialization.cpp" line="420"/>
-        <location filename="../gis/tnv/serialization.cpp" line="617"/>
-        <location filename="../gis/tnv/serialization.cpp" line="645"/>
-        <location filename="../gis/tnv/serialization.cpp" line="719"/>
         <source>Failed to read data.</source>
-        <translation>Impossible de lire les données.</translation>
+        <translation type="obsolete">Impossible de lire les données.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="249"/>
         <source>Changed trackpoints, sacrificed all previous data.</source>
-        <translation>Points de la trace modifiés, Les données antérieures sont perdues.</translation>
+        <translation type="obsolete">Points de la trace modifiés, Les données antérieures sont perdues.</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="262"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="371"/>
         <source>Length: %1 %2</source>
-        <translation>Longueur: %1 %2</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="378"/>
-        <source>, %1%2 %3, %4%5 %6</source>
-        <translation></translation>
+        <translation type="obsolete">Longueur: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="386"/>
         <source>Time: %1</source>
-        <translation>Durée: %1</translation>
+        <translation type="obsolete">Durée: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="389"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="399"/>
         <source>, Speed: %1 %2</source>
-        <translation>, vitesse %1 %2</translation>
+        <translation type="obsolete">, vitesse %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="396"/>
         <source>Moving: %1</source>
-        <translation>Déplacement: %1</translation>
+        <translation type="obsolete">Déplacement: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="405"/>
         <source>Start: %1</source>
-        <translation>Début: %1</translation>
+        <translation type="obsolete">Début: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="410"/>
         <source>End: %1</source>
-        <translation>Fin: %1</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="414"/>
-        <source>Points: %1 (%2)</source>
-        <translation></translation>
+        <translation type="obsolete">Fin: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="523"/>
         <source>Ele.: %1 %2</source>
-        <translation>Altitude: %1 %2</translation>
+        <translation type="obsolete">Altitude: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="526"/>
         <source> slope: %1%3 (%2%)</source>
-        <translation> Pente: %1%3(%2%)</translation>
+        <translation type="obsolete"> Pente: %1%3(%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="531"/>
         <source> speed: %1%2</source>
-        <translation> Vitesse: %1 %2</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="559"/>
-        <source>... and %1 tags not displayed</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete"> Vitesse: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="571"/>
         <source>Ascend: %1%2 (%3%)</source>
-        <translation>Montée: %1%2 (%3%)</translation>
+        <translation type="obsolete">Montée: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="575"/>
         <source>Ascend: - (-)</source>
-        <translation>Montées: - (-)</translation>
+        <translation type="obsolete">Montées: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="581"/>
         <source> Descend: %1%2 (%3%)</source>
-        <translation>  Descente: %1%2 (%3%)</translation>
+        <translation type="obsolete">  Descente: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="585"/>
         <source> Descend: - (-) </source>
-        <translation>Descente: - (-)</translation>
+        <translation type="obsolete">Descente: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="592"/>
         <source>Dist.: %1%2 (%3%)</source>
-        <translation>Dist.: %1%2 (%3%)</translation>
+        <translation type="obsolete">Dist.: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="596"/>
         <source>Dist.: - (-)</source>
-        <translation>Dist.: - (-)</translation>
+        <translation type="obsolete">Dist.: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="602"/>
         <source> Moving: %1%2 (%3%)</source>
-        <translation>  En mouvement: %1%2 (%3%)</translation>
+        <translation type="obsolete">  En mouvement: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="606"/>
         <source> Moving: - (-) </source>
-        <translation>En mouvement: - (-)</translation>
+        <translation type="obsolete">En mouvement: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="625"/>
         <source>Ascend: %1%2</source>
-        <translation>Montée : %1%2</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="630"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="647"/>
-        <source>, %1%2</source>
-        <translation></translation>
+        <translation type="obsolete">Montée : %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="635"/>
         <source>Ascend: -</source>
-        <translation>Montée : -</translation>
+        <translation type="obsolete">Montée : -</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="642"/>
         <source> Descend: %1%2</source>
-        <translation>Descente : %1%2</translation>
+        <translation type="obsolete">Descente : %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="652"/>
         <source>Descend: -</source>
-        <translation>Descente : -</translation>
+        <translation type="obsolete">Descente : -</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="658"/>
         <source>Dist.: %1%2</source>
-        <translation>Dist.: %1%2</translation>
+        <translation type="obsolete">Dist.: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="663"/>
         <source> Time: %1%2</source>
-        <translation> Temps : %1%2</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1307"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1331"/>
-        <source>Permanently removed points %1..%2</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2088"/>
-        <source>Changed activity to '%1' for complete track.</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete"> Temps : %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2163"/>
-        <source>Changed activity to '%1' for range(%2..%3).</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1245"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1264"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1340"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1399"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1578"/>
-        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
-        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
         <source>Edit name...</source>
-        <translation>Éditer le nom...</translation>
+        <translation type="obsolete">Éditer le nom...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1245"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1264"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1340"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1399"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1578"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
         <source>Enter new track name.</source>
-        <translation type="unfinished">Entrez le nom de la nouvelle trace.</translation>
+        <translation type="obsolete">Entrez le nom de la nouvelle trace.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1513"/>
         <source>Hide points.</source>
-        <translation>Cacher des points.</translation>
+        <translation type="obsolete">Cacher des points.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1553"/>
         <source>Show points.</source>
-        <translation>Afficher les points.</translation>
+        <translation type="obsolete">Afficher les points.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2041"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="312"/>
         <source>Changed name</source>
-        <translation>Nom modifié</translation>
+        <translation type="obsolete">Nom modifié</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="106"/>
         <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
-        <translation>Cacher des points avec l'algorithme Douglas Peuker (%1%2)</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="141"/>
-        <source>Hide points with invalid coordinates at the beginning of the track</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Cacher des points avec l'algorithme Douglas Peuker (%1%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="157"/>
         <source>Reset all hidden track points to visible</source>
-        <translation>Restaurer les points cachés</translation>
+        <translation type="obsolete">Restaurer les points cachés</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="191"/>
         <source>Permanently removed all hidden track points</source>
-        <translation>Supprimer définitivement tous les points cachés</translation>
+        <translation type="obsolete">Supprimer définitivement tous les points cachés</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="241"/>
         <source>Smoothed profile with a Median filter of size %1</source>
-        <translation>Profile lissé avec un filtre médian de dimension %1</translation>
+        <translation type="obsolete">Profile lissé avec un filtre médian de dimension %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="277"/>
         <source>Replaced elevation data with data from DEM files.</source>
-        <translation>Les altitudes ont été remplacées  par les données DEM</translation>
+        <translation type="obsolete">Les altitudes ont été remplacées  par les données DEM</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="300"/>
         <source>Offset elevation data by %1%2.</source>
-        <translation>Décaler les altitudes de %1%2.</translation>
+        <translation type="obsolete">Décaler les altitudes de %1%2.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="319"/>
         <source>Changed start of track to %1.</source>
-        <translation>Début de la trace modifié à %1.</translation>
+        <translation type="obsolete">Début de la trace modifié à %1.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="338"/>
         <source>Remove timestamps.</source>
-        <translation>Horodatage Supprimé.</translation>
+        <translation type="obsolete">Horodatage Supprimé.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="361"/>
         <source>Set artificial timestamps with delta of %1 sec.</source>
-        <translation>Horodatage artificiel ajouté avec un décalage de %1 sec.</translation>
+        <translation type="obsolete">Horodatage artificiel ajouté avec un décalage de %1 sec.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="394"/>
         <source>Changed speed to %1%2.</source>
-        <translation>Vitesse modifiée à %1%2.</translation>
+        <translation type="obsolete">Vitesse modifiée à %1%2.</translation>
     </message>
     <message>
         <source>Enter new waypoint name.</source>
         <translation type="obsolete">Saisir le nouveau nom du waypoint.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="227"/>
         <source>Elevation: %1 %2</source>
-        <translation>Altitude: %1 %2</translation>
+        <translation type="obsolete">Altitude: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="238"/>
         <source>Proximity: %1 %2</source>
-        <translation>Proximité: %1 %2</translation>
+        <translation type="obsolete">Proximité: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="322"/>
         <source>Changed position</source>
-        <translation>Position modifiée</translation>
+        <translation type="obsolete">Position modifiée</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="328"/>
         <source>Changed elevation</source>
-        <translation>Altitude modifiée</translation>
+        <translation type="obsolete">Altitude modifiée</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="334"/>
         <source>Changed proximity</source>
-        <translation>Rayon de proximité modifié</translation>
+        <translation type="obsolete">Rayon de proximité modifié</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="348"/>
         <source>Changed icon</source>
-        <translation>Icône modifié</translation>
+        <translation type="obsolete">Icône modifié</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="372"/>
         <source>Changed images</source>
-        <translation>Images modifiées</translation>
+        <translation type="obsolete">Images modifiées</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="378"/>
         <source>Add image</source>
-        <translation>Ajouter une image</translation>
+        <translation type="obsolete">Ajouter une image</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
         <source>Warning...</source>
-        <translation>Avertissement...</translation>
+        <translation type="obsolete">Avertissement...</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
         <source>This is a typ file with unknown polygon encoding. Please report!</source>
-        <translation>Ceci est un fichier type avec un encodage de polygone inconnu. Veuillez signaler ce problème.</translation>
+        <translation type="obsolete">Ceci est un fichier type avec un encodage de polygone inconnu. Veuillez signaler ce problème.</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
         <source>This is a typ file with unknown polyline encoding. Please report!</source>
-        <translation>Ceci est un fichier type avec un encodage de polyligne inconnu. Veuillez signaler ce problème.</translation>
+        <translation type="obsolete">Ceci est un fichier type avec un encodage de polyligne inconnu. Veuillez signaler ce problème.</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
         <source>Enter new area name.</source>
-        <translation type="unfinished">Entrez le nom de la nouvelle surface.</translation>
+        <translation type="obsolete">Entrez le nom de la nouvelle surface.</translation>
     </message>
     <message>
-        <location filename="../qlgt/converter.cpp" line="198"/>
         <source>Copy flag information from QLandkarte GT track</source>
-        <translation>Copier la balise d'information de la trace QLandkarte GT</translation>
+        <translation type="obsolete">Copier la balise d'information de la trace QLandkarte GT</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="163"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="217"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="264"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="290"/>
         <source>Corrupt track ...</source>
-        <translation>Trac invalide...</translation>
+        <translation type="obsolete">Trac invalide...</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="163"/>
         <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
-        <translation>Le nombre de points de trace ne correspond pas au nombre de points de trace de training.</translation>
+        <translation type="obsolete">Le nombre de points de trace ne correspond pas au nombre de points de trace de training.</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="217"/>
         <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
-        <translation>Le nombre de points de trace ne correspond pas au nombre de points de trace étendus.</translation>
+        <translation type="obsolete">Le nombre de points de trace ne correspond pas au nombre de points de trace étendus.</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="264"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="290"/>
         <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
-        <translation>Le nombre de points de trace ne correspond pas au nombre des points cachés</translation>
+        <translation type="obsolete">Le nombre de points de trace ne correspond pas au nombre des points cachés</translation>
     </message>
     <message>
-        <location filename="../device/IDevice.cpp" line="204"/>
         <source>There is another project with the same name. If you press 'ok' it will be removed and replaced.</source>
-        <translation>Un autre projet du même nom existe déjà. Si vous confirmez, il sera supprimé et remplacé.</translation>
+        <translation type="obsolete">Un autre projet du même nom existe déjà. Si vous confirmez, il sera supprimé et remplacé.</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
-        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
         <source>Enter new route name.</source>
-        <translation type="unfinished">Entrez le nom de la nouvelle route.</translation>
+        <translation type="obsolete">Entrez le nom de la nouvelle route.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="28"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="94"/>
         <source>Foot</source>
-        <translation type="unfinished">à pied</translation>
+        <translation type="obsolete">à pied</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="35"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="95"/>
         <source>Bicycle</source>
-        <translation type="unfinished">Vélo</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="42"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="96"/>
-        <source>Motor Bike</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="49"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="97"/>
-        <source>Car</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="56"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="98"/>
-        <source>Cable Car</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="63"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="99"/>
-        <source>Swim</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="70"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="100"/>
-        <source>Ship</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="77"/>
-        <source>Aeronautik</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="101"/>
-        <source>Aeronautics</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="210"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="254"/>
-        <source>Distance:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="212"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="276"/>
-        <source>Ascend:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="214"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="298"/>
-        <source>Descend:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="216"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="320"/>
-        <source>Speed Moving:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="218"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="342"/>
-        <source>Speed Total:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="220"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="364"/>
-        <source>Time Moving:</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="222"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="386"/>
-        <source>Time Total:</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Vélo</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="53"/>
         <source>Progress</source>
-        <translation type="unfinished">Progrès</translation>
+        <translation type="obsolete">Progrès</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="56"/>
         <source>time</source>
-        <translation type="unfinished">durée</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="57"/>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="82"/>
-        <source>distance [%1]</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="57"/>
-        <source>Slope (directed)</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">durée</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="62"/>
         <source>Speed</source>
-        <translation type="unfinished">Vitesse</translation>
+        <translation type="obsolete">Vitesse</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="67"/>
         <source>Elevation</source>
-        <translation type="unfinished">Altitude</translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="74"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="100"/>
-        <source>Heart Rate</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="79"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="105"/>
-        <source>Cadence</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="84"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="110"/>
-        <source>Air Temperature</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="89"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="115"/>
-        <source>Water Temperature</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="94"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="120"/>
-        <source>Depth</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Altitude</translation>
     </message>
 </context>
 </TS>
diff --git a/src/locale/qmapshack_nl.ts b/src/locale/qmapshack_nl.ts
index 8863e18..0329a03 100644
--- a/src/locale/qmapshack_nl.ts
+++ b/src/locale/qmapshack_nl.ts
@@ -15,6 +15,109 @@
     </message>
 </context>
 <context>
+    <name>CActivityTrk</name>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="29"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="117"/>
+        <source>Foot</source>
+        <translation>Wandelen</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="37"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="118"/>
+        <source>Bicycle</source>
+        <translation>Fiets</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="45"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="119"/>
+        <source>Motor Bike</source>
+        <translation>Motorfiets</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="53"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="120"/>
+        <source>Car</source>
+        <translation>Auto</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="61"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="121"/>
+        <source>Cable Car</source>
+        <translation>Kabelbaan</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="69"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="122"/>
+        <source>Swim</source>
+        <translation>Zwemmen</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="77"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="123"/>
+        <source>Ship</source>
+        <translation>Boot</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="85"/>
+        <source>Aeronautik</source>
+        <translation>Vliegen</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="93"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="125"/>
+        <source>Ski/Winter</source>
+        <translation>Ski/Winter</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="124"/>
+        <source>Aeronautics</source>
+        <translation>Vliegtuig</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="261"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="305"/>
+        <source>Distance:</source>
+        <translation>Afstand:</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="263"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="327"/>
+        <source>Ascend:</source>
+        <translation>Stijging:</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="265"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="349"/>
+        <source>Descend:</source>
+        <translation>Daling:</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="267"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="371"/>
+        <source>Speed Moving:</source>
+        <translation>Bewogen snelheid:</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="269"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="393"/>
+        <source>Speed Total:</source>
+        <translation>Totale snelheid:</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="271"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="415"/>
+        <source>Time Moving:</source>
+        <translation>Bewogen tijd:</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="273"/>
+        <location filename="../gis/trk/CActivityTrk.cpp" line="437"/>
+        <source>Time Total:</source>
+        <translation>Totale tijd:</translation>
+    </message>
+</context>
+<context>
     <name>CCanvas</name>
     <message>
         <location filename="../canvas/CCanvas.cpp" line="59"/>
@@ -23,6 +126,14 @@
     </message>
 </context>
 <context>
+    <name>CColorChooser</name>
+    <message>
+        <location filename="../widgets/CColorChooser.cpp" line="51"/>
+        <source>Esc.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>CCommandProcessor</name>
     <message>
         <location filename="../helpers/CCommandProcessor.cpp" line="31"/>
@@ -56,14 +167,181 @@
     </message>
 </context>
 <context>
+    <name>CCreateRouteFromWpt</name>
+    <message>
+        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
+        <source>Edit name...</source>
+        <translation>Bewerk naam...</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
+        <source>Enter new route name.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CDBFolderLostFound</name>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="30"/>
+        <source>All your data grouped by folders.</source>
+        <translation>Alle gegevens gegroepeerd per map.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="59"/>
+        <source>Lost & Found (%1)</source>
+        <translation>Lost & Found (%1)</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderLostFound.cpp" line="64"/>
+        <source>Lost & Found</source>
+        <translation>Lost & Found</translation>
+    </message>
+</context>
+<context>
+    <name>CDBFolderMysql</name>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="32"/>
+        <source>All your data grouped by folders.</source>
+        <translation>Alle gegevens gegroepeerd per map.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="53"/>
+        <source>MySQL Database</source>
+        <translation>MySQL Database</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="56"/>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="60"/>
+        <source>Server: </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="65"/>
+        <source> (No PW)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderMysql.cpp" line="73"/>
+        <source>Error: </source>
+        <translation>Fout: </translation>
+    </message>
+</context>
+<context>
+    <name>CDBFolderSqlite</name>
+    <message>
+        <location filename="../gis/db/CDBFolderSqlite.cpp" line="28"/>
+        <source>All your data grouped by folders.</source>
+        <translation>Alle gegevens gegroepeerd per map.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderSqlite.cpp" line="46"/>
+        <source>SQLite Database</source>
+        <translation>SQLite Database</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBFolderSqlite.cpp" line="56"/>
+        <source>File: </source>
+        <translation>Bestand: </translation>
+    </message>
+</context>
+<context>
+    <name>CDBItem</name>
+    <message>
+        <location filename="../gis/db/CDBItem.cpp" line="87"/>
+        <source>%1 min.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBItem.cpp" line="91"/>
+        <source>%1 h</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBItem.cpp" line="95"/>
+        <source>%1 days</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>CDBProject</name>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="195"/>
+        <source>The item %1 has been changed by %2 (%3). 
+
+To solve this conflict you can create and save a clone, force your version or drop your version and take the one from the database</source>
+        <translation>Het item %1 is verand door %2 (%3). 
+
+Om dit conflict op te lossen kan een kloon gemaakt en opgelagen worden, forceer huidige versie of verwijder deze versie en kies een ander uit de database</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="201"/>
+        <source>Conflict with database...</source>
+        <translation>Conflict met database...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="202"/>
+        <source>Clone && Save</source>
+        <translation>Kloon && Opslaan</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="203"/>
+        <source>Force Save</source>
+        <translation>Forceer opslaan</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="204"/>
+        <source>Take remote</source>
+        <translation>Neem huidige</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="507"/>
+        <source>Missing folder...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="508"/>
+        <source>Failed to save project. The folder has been deleted in the database.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="517"/>
+        <source>Save ...</source>
+        <translation>Opslaan...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <source>Error</source>
+        <translation>Fout</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="583"/>
+        <source>There was an unexpected database error:
+
+%1</source>
+        <translation>Er is een onverwachte database fout opgetreden:
+
+%1</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="704"/>
+        <source>The project '%1' is about to update itself from the database. However there are changes not saved.</source>
+        <translation>Het project '%1' zal geupdated worden met de database.Er zijn nog veranderingen niet opgeslagen.</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CDBProject.cpp" line="705"/>
+        <source>Save changes?</source>
+        <translation>Veranderingen opslaan?</translation>
+    </message>
+</context>
+<context>
     <name>CDemList</name>
     <message>
-        <location filename="../dem/CDemList.cpp" line="145"/>
+        <location filename="../dem/CDemList.cpp" line="198"/>
         <source>Deactivate</source>
         <translation>Deactiveer</translation>
     </message>
     <message>
-        <location filename="../dem/CDemList.cpp" line="145"/>
+        <location filename="../dem/CDemList.cpp" line="198"/>
         <source>Activate</source>
         <translation>Activeer</translation>
     </message>
@@ -85,7 +363,7 @@
     <name>CDemPropSetup</name>
     <message>
         <source><b>Grade %1</b></source>
-        <translation type="vanished"><b>Graad %1</b></translation>
+        <translation type="obsolete"><b>Graad %1</b></translation>
     </message>
 </context>
 <context>
@@ -93,8 +371,8 @@
     <message>
         <location filename="../dem/CDemVRT.cpp" line="44"/>
         <location filename="../dem/CDemVRT.cpp" line="52"/>
-        <location filename="../dem/CDemVRT.cpp" line="62"/>
-        <location filename="../dem/CDemVRT.cpp" line="91"/>
+        <location filename="../dem/CDemVRT.cpp" line="61"/>
+        <location filename="../dem/CDemVRT.cpp" line="90"/>
         <source>Error...</source>
         <translation>Fout...</translation>
     </message>
@@ -105,12 +383,12 @@
     </message>
     <message>
         <location filename="../dem/CDemVRT.cpp" line="52"/>
-        <location filename="../dem/CDemVRT.cpp" line="62"/>
+        <location filename="../dem/CDemVRT.cpp" line="61"/>
         <source>DEM must have one band with 16bit or 32bit data.</source>
         <translation>DEM moet 16 bit of 32 bit gegevens bevatten.</translation>
     </message>
     <message>
-        <location filename="../dem/CDemVRT.cpp" line="91"/>
+        <location filename="../dem/CDemVRT.cpp" line="90"/>
         <source>No georeference information found.</source>
         <translation>Geen geografische gegevens gevonden.</translation>
     </message>
@@ -142,121 +420,119 @@
 <context>
     <name>CDetailsOvlArea</name>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="134"/>
         <source>Edit name...</source>
-        <translation>Bewerk naam...</translation>
+        <translation type="obsolete">Bewerk naam...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CDetailsOvlArea.cpp" line="134"/>
         <source>Enter new area name.</source>
-        <translation>Geef gebied een nieuwe naam.</translation>
+        <translation type="obsolete">Geef gebied een nieuwe naam.</translation>
     </message>
 </context>
 <context>
     <name>CDetailsPrj</name>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="101"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="126"/>
         <source>You want to sort waypoints along a track, but you switched off track and waypoint correlation. Do you want to switch it on again?</source>
         <translation>Om wayponts van een track te sorteren dient de correlatie van track en waypoints ingeschakeld zijn.. Moet dit weer ingeschakeld worden?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="102"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="127"/>
         <source>Correlation...</source>
         <translation>Correlatie...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="247"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="687"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="270"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="738"/>
         <source>none</source>
         <translation>geen</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="320"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="343"/>
         <source>Build diary...</source>
         <translation>Dagboek maken...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="375"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="398"/>
         <source><b>Summary over all tracks in project</b><br/></source>
         <translation><b>Overzicht van alle tracks in project</b><br/></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="395"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="446"/>
         <source><h2>Waypoints</h2></source>
         <translation><h2>Waypoints</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="402"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="428"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="532"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="622"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="652"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="453"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="479"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="583"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="673"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="703"/>
         <source>Info</source>
         <translation>Info</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="403"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="429"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="533"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="623"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="653"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="454"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="480"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="584"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="674"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="704"/>
         <source>Comment</source>
         <translation>Notitie</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="421"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="472"/>
         <source><h2>Tracks</h2></source>
         <translation><h2>Tracks</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="551"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="602"/>
         <source>distance: %1%2</source>
         <translation>afstand:-%1%2</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="553"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="604"/>
         <source>ascent: %1%2</source>
         <translation>Stijging: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="555"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="606"/>
         <source>descend: %1%2</source>
         <translation>daling: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="615"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="666"/>
         <source><h2>Areas</h2></source>
         <translation><h2>Gebieden</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="645"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="696"/>
         <source><h2>Routes</h2></source>
         <translation><h2>Routes</h2></translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="673"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="700"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="724"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="751"/>
         <source>Edit name...</source>
         <translation>Bewerk naam...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="673"/>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="700"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="724"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="751"/>
         <source>Enter new project name.</source>
         <translation>Geef  project een nieuwe naam.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="682"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="733"/>
         <source>Edit keywords...</source>
         <translation>Bewerkt sleutelwoorden...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="682"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="733"/>
         <source>Enter keywords.</source>
         <translation>Geef sleutelwoorden.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/CDetailsPrj.cpp" line="816"/>
+        <location filename="../gis/prj/CDetailsPrj.cpp" line="882"/>
         <source>Print Diary</source>
         <translation>Dagboek afdrukken</translation>
     </message>
@@ -264,14 +540,12 @@
 <context>
     <name>CDetailsRte</name>
     <message>
-        <location filename="../gis/rte/CDetailsRte.cpp" line="119"/>
         <source>Edit name...</source>
-        <translation>Bewerk naam...</translation>
+        <translation type="obsolete">Bewerk naam...</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CDetailsRte.cpp" line="119"/>
         <source>Enter new route name.</source>
-        <translation>Geef  proute een nieuwe naam.</translation>
+        <translation type="obsolete">Geef  proute een nieuwe naam.</translation>
     </message>
 </context>
 <context>
@@ -293,62 +567,74 @@
         <translation type="obsolete">afstand. [%1]</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="409"/>
         <source>Solid color</source>
-        <translation>Vaste kleur</translation>
+        <translation type="obsolete">Vaste kleur</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="112"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="182"/>
         <source>Reduce visible track points</source>
         <translation>Reduceer zichtbare trackpunten</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="128"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="185"/>
         <source>Change elevation of track points</source>
         <translation>Verander hoogte van trackpunten</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="141"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="188"/>
         <source>Change timestamp of track points</source>
         <translation>Verander tijdstempels van trackpunten</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="154"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="191"/>
+        <source>Modify track points' extensions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="194"/>
         <source>Cut track into pieces</source>
         <translation>Knip track in delen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="309"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="318"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="321"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="327"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="346"/>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="348"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="411"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="419"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="422"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="427"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="441"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="443"/>
         <source>%1 %2</source>
         <translation>%1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="603"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="508"/>
+        <source>Color</source>
+        <translation>Kleur</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="509"/>
+        <source>Activity</source>
+        <translation>Activiteit</translation>
+    </message>
+    <message>
         <source>Edit name...</source>
-        <translation>Bewerk naam...</translation>
+        <translation type="obsolete">Bewerk naam...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="603"/>
         <source>Enter new track name.</source>
-        <translation>Geef track nieuwe naam.</translation>
+        <translation type="obsolete">Geef track nieuwe naam.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="655"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="742"/>
         <source>Reset activities...</source>
         <translation>Herstel activiteiten...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="655"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="742"/>
         <source>This will remove all activities from the track. Proceed?</source>
         <translation>Dit zal alle activiteiten uit de track verwijderen. Doorgaan?</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CDetailsTrk.cpp" line="661"/>
+        <location filename="../gis/trk/CDetailsTrk.cpp" line="748"/>
         <source>None</source>
         <translation>Geen</translation>
     </message>
@@ -356,22 +642,33 @@
 <context>
     <name>CDetailsWpt</name>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="134"/>
         <source>Edit name...</source>
-        <translation>Bewerk naam...</translation>
+        <translation type="obsolete">Bewerk naam...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="134"/>
         <source>Enter new waypoint name.</source>
-        <translation>Geef  waypoint nieuwe naam.</translation>
+        <translation type="obsolete">Geef  waypoint nieuwe naam.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CDetailsWpt.cpp" line="153"/>
+        <location filename="../gis/wpt/CDetailsWpt.cpp" line="166"/>
         <source>Enter new proximity range.</source>
         <translation>Geef nieuwe afstand in voor nabijheid.</translation>
     </message>
 </context>
 <context>
+    <name>CDeviceGarmin</name>
+    <message>
+        <location filename="../device/CDeviceGarmin.cpp" line="228"/>
+        <source>Picture%1</source>
+        <translation>Afbeelding%1</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/serialization.cpp" line="1039"/>
+        <source>Unknown</source>
+        <translation>Onbekend</translation>
+    </message>
+</context>
+<context>
     <name>CElevationDialog</name>
     <message>
         <location filename="../helpers/CElevationDialog.cpp" line="83"/>
@@ -380,265 +677,993 @@
     </message>
 </context>
 <context>
-    <name>CGisListDB</name>
-    <message>
-        <location filename="../gis/CGisListDB.cpp" line="75"/>
-        <source>Add Database</source>
-        <translation>Database toevoegen</translation>
-    </message>
-    <message>
-        <location filename="../gis/CGisListDB.cpp" line="78"/>
-        <source>Add Folder</source>
-        <translation>Map toevoegen</translation>
-    </message>
-    <message>
-        <location filename="../gis/CGisListDB.cpp" line="79"/>
-        <source>Delete Folder</source>
-        <translation>Map verwijderen</translation>
-    </message>
+    <name>CFilterDeleteExtension</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="82"/>
-        <location filename="../gis/CGisListDB.cpp" line="92"/>
-        <source>Delete Item</source>
+        <location filename="../gis/trk/filter/CFilterDeleteExtension.cpp" line="61"/>
+        <source>No extension available</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitCrcState</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="86"/>
-        <source>Remove Database</source>
-        <translation>Database verwijderen</translation>
+        <location filename="../gis/fit/decoder/CFitCrcState.cpp" line="32"/>
+        <source>FIT decoding error : invalid CRC.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitDecoder</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="89"/>
-        <source>Empty</source>
-        <translation>Leeg</translation>
+        <location filename="../gis/fit/decoder/CFitDecoder.cpp" line="116"/>
+        <source>FIT decoding error: unexpected end of file %1.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitFieldBuilder</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="281"/>
-        <source>Remove database...</source>
-        <translation>Database verwijderen...</translation>
+        <location filename="../gis/fit/decoder/CFitFieldBuilder.cpp" line="70"/>
+        <source>FIT decoding error: unknown base type %1.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitHeaderState</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="281"/>
-        <source>Do you really want to remove '%1' from the list?</source>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="70"/>
+        <source>FIT decoding error: protocol %1 version not supported.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="322"/>
-        <source>Delete database folder...</source>
-        <translation>Verwijder database map...</translation>
+        <location filename="../gis/fit/decoder/CFitHeaderState.cpp" line="121"/>
+        <source>FIT decoding error: file header signature mismatch. File is not FIT.</source>
+        <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitProject</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="322"/>
-        <source>Are you sure you want to delete "%1" from the database?</source>
-        <translation type="unfinished"></translation>
+        <location filename="../gis/fit/CFitProject.cpp" line="44"/>
+        <location filename="../gis/fit/CFitProject.cpp" line="62"/>
+        <source>Failed to load file %1...</source>
+        <translation>Kan bestand %1 niet laden...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="348"/>
-        <location filename="../gis/CGisListDB.cpp" line="363"/>
-        <source>Remove items...</source>
+        <location filename="../gis/fit/CFitProject.cpp" line="86"/>
+        <source>Failed to open FIT file %1.</source>
         <translation type="unfinished"></translation>
     </message>
+</context>
+<context>
+    <name>CFitRecordContentState</name>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="348"/>
-        <source>Are you sure you want to delete all items from Lost&Found? This will remove them permanently.</source>
+        <location filename="../gis/fit/decoder/CFitRecordContentState.cpp" line="66"/>
+        <source>FIT decoding error: architecture %1 not supported.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="363"/>
-        <source>Are you sure you want to delete all selected items from Lost&Found? This will remove them permanently.</source>
+        <location filename="../gis/fit/decoder/CFitRecordContentState.cpp" line="87"/>
+        <source>FIT decoding error: invalid offset %1 for state 'record content'</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
 <context>
-    <name>CGisListWks</name>
+    <name>CGarminTyp</name>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="97"/>
-        <source>Edit..</source>
-        <translation>Bewerken..</translation>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
+        <source>Warning...</source>
+        <translation>Waarschuwing...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="98"/>
-        <source>Show on Map</source>
-        <translation>Toon op kaart</translation>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
+        <source>This is a typ file with unknown polygon encoding. Please report!</source>
+        <translation>Dit is een bestand met onbekende polygon codering. Alstublieft melden!</translation>
     </message>
     <message>
+        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
+        <source>This is a typ file with unknown polyline encoding. Please report!</source>
+        <translation>Dit is een bestand met onbekende polylijn codering. Alstublieft melden!</translation>
+    </message>
+</context>
+<context>
+    <name>CGisItemOvlArea</name>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="36"/>
+        <source>thin</source>
+        <translation>dun</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="37"/>
+        <source>normal</source>
+        <translation>normaal</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="38"/>
+        <source>wide</source>
+        <translation>breed</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="39"/>
+        <source>strong</source>
+        <translation>vet</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="78"/>
+        <source>_Clone</source>
+        <translation>_Kloon</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="380"/>
+        <source>Area: %1%2</source>
+        <translation>Gebied: %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="442"/>
+        <source>Changed area shape.</source>
+        <translation>Vorm gebied aangepast.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="450"/>
+        <source>Changed name.</source>
+        <translation>Naam aangepast.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="456"/>
+        <source>Changed border width.</source>
+        <translation>Lijndikte aangepast.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="462"/>
+        <source>Changed fill pattern.</source>
+        <translation>Opvulling aangepast.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="468"/>
+        <source>Changed opacity.</source>
+        <translation>Transparantie aangepast.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="474"/>
+        <source>Changed comment.</source>
+        <translation>Notitie aangepast.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="480"/>
+        <source>Changed description.</source>
+        <translation>Beschrijving aangepast.</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="486"/>
+        <source>Changed links</source>
+        <translation>Link aangepast</translation>
+    </message>
+    <message>
+        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="497"/>
+        <source>Changed color</source>
+        <translation>Kleur aangepast</translation>
+    </message>
+</context>
+<context>
+    <name>CGisItemRte</name>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="63"/>
+        <source>_Clone</source>
+        <translation>_Kloon</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="249"/>
+        <source>Changed name.</source>
+        <translation>Naam aangepast.</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="255"/>
+        <source>Changed comment</source>
+        <translation>Notitie aangepast</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="261"/>
+        <source>Changed description</source>
+        <translation>Beschrijving aangepast</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="267"/>
+        <source>Changed links</source>
+        <translation>Link aangepast</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="285"/>
+        <source>Length: %1 %2</source>
+        <translation>Lengte: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="289"/>
+        <source>Length: -</source>
+        <translation>Lengte: -</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="296"/>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="479"/>
+        <source>Time: %1 %2</source>
+        <translation>Tijd: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="300"/>
+        <source>Time: -</source>
+        <translation>Tijd: -</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="306"/>
+        <source>Last time routed:<br/>%1</source>
+        <translation>Laatste routeberekening:<br/>%1</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="308"/>
+        <source>with %1</source>
+        <translation>met %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="481"/>
+        <source>Distance: %1 %2</source>
+        <translation>Afstand: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/rte/CGisItemRte.cpp" line="595"/>
+        <source>Changed route points.</source>
+        <translation>Routepunten aangepast.</translation>
+    </message>
+</context>
+<context>
+    <name>CGisItemTrk</name>
+    <message>
+        <location filename="../gis/fit/serialization.cpp" line="188"/>
+        <source>FIT file %1 contains no GPS data.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="211"/>
+        <location filename="../gis/tnv/serialization.cpp" line="347"/>
+        <location filename="../gis/tnv/serialization.cpp" line="376"/>
+        <location filename="../gis/tnv/serialization.cpp" line="387"/>
+        <location filename="../gis/tnv/serialization.cpp" line="420"/>
+        <source>Error...</source>
+        <translation>Fout...</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="211"/>
+        <location filename="../gis/tnv/serialization.cpp" line="347"/>
+        <source>Failed to open %1.</source>
+        <translation>Kan %1 niet openen.</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="376"/>
+        <location filename="../gis/tnv/serialization.cpp" line="387"/>
+        <source>Only support lon/lat WGS 84 format.</source>
+        <translation>Alleen lon/lat WGS 84 formaat word ondersteunt.</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="420"/>
+        <source>Failed to read data.</source>
+        <translation>Lezen gegevens mislukt.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="124"/>
+        <source>_Clone</source>
+        <translation>_Kloon</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="291"/>
+        <source>Changed trackpoints, sacrificed all previous data.</source>
+        <translation>Trackpunten aangepast, vorige gegevens overschreven.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="394"/>
+        <source>Length: %1 %2</source>
+        <translation>Lengte: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="401"/>
+        <source>, %1%2 %3, %4%5 %6</source>
+        <translation>, %1%2 %3, %4%5 %6</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="409"/>
+        <source>Time: %1</source>
+        <translation>Tijd: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="412"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="422"/>
+        <source>, Speed: %1 %2</source>
+        <translation>, Snelheid: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="419"/>
+        <source>Moving: %1</source>
+        <translation>Beweging: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="428"/>
+        <source>Start: %1</source>
+        <translation>Start: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="433"/>
+        <source>End: %1</source>
+        <translation>Einde: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="437"/>
+        <source>Points: %1 (%2)</source>
+        <translation>Punten: %1 (%2)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="546"/>
+        <source>Ele.: %1 %2</source>
+        <translation>Hoogte.: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="549"/>
+        <source> slope: %1%3 (%2%)</source>
+        <translation> helling: %1%3 (%2%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="554"/>
+        <source> speed: %1%2</source>
+        <translation> snelheid: %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="582"/>
+        <source>... and %1 tags not displayed</source>
+        <translation>... en %1 tags niet getoont</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="594"/>
+        <source>Ascend: %1%2 (%3%)</source>
+        <translation>Stijging: %1%2 (%3%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="598"/>
+        <source>Ascend: - (-)</source>
+        <translation>Stijging: - (-)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="604"/>
+        <source> Descend: %1%2 (%3%)</source>
+        <translation> Daling: %1%2 (%3%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="608"/>
+        <source> Descend: - (-) </source>
+        <translation> Daling: - (-) </translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="615"/>
+        <source>Dist.: %1%2 (%3%)</source>
+        <translation>Afstand.: %1%2 (%3%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="619"/>
+        <source>Dist.: - (-)</source>
+        <translation>Afstand.: - (-)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="625"/>
+        <source> Moving: %1%2 (%3%)</source>
+        <translation> Beweging: %1%2 (%3%)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="629"/>
+        <source> Moving: - (-) </source>
+        <translation> Beweging: - (-) </translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="648"/>
+        <source>Ascend: %1%2</source>
+        <translation>Stijging: %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="653"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="670"/>
+        <source>, %1%2</source>
+        <translation>, %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="658"/>
+        <source>Ascend: -</source>
+        <translation>Stijging: -</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="665"/>
+        <source> Descend: %1%2</source>
+        <translation> Daling: %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="675"/>
+        <source>Descend: -</source>
+        <translation>Daling: -</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="681"/>
+        <source>Dist.: %1%2</source>
+        <translation>Afstand.: %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="686"/>
+        <source> Time: %1%2</source>
+        <translation> Tijd: %1%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <source>Edit name...</source>
+        <translation>Bewerk naam...</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1269"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1288"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1364"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1423"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1602"/>
+        <source>Enter new track name.</source>
+        <translation>Geef track nieuwe naam.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1331"/>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1355"/>
+        <source>Permanently removed points %1..%2</source>
+        <translation>Permanent verwijderde punten %1..%2</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1537"/>
+        <source>Hide points.</source>
+        <translation>Verberg punten.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="1577"/>
+        <source>Show points.</source>
+        <translation>Toon punten.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2143"/>
+        <source>Changed name</source>
+        <translation>Naam aangepast</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2149"/>
+        <source>Changed comment</source>
+        <translation>Notitie aangepast</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2155"/>
+        <source>Changed description</source>
+        <translation>Beschrijving aangepast</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2161"/>
+        <source>Changed links</source>
+        <translation>Link aangepast</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2188"/>
+        <source>Changed activity to '%1' for complete track.</source>
+        <translation>Activiteit aangepast naar '%1' voor gehele track.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CGisItemTrk.cpp" line="2262"/>
+        <source>Changed activity to '%1' for range(%2..%3).</source>
+        <translation>Activiteit aangepast naar '%1' voor bereik(%2..%3).</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="108"/>
+        <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
+        <translation>Verberg alle punten via Douglas Peuker algoritme (%1%2)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="143"/>
+        <source>Hide points with invalid coordinates at the beginning of the track</source>
+        <translation>Verberg punten met slechte gegevens naar begin van de track</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="159"/>
+        <source>Reset all hidden track points to visible</source>
+        <translation>Verander alle verborgen trackpunten naar zichtbaar</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="193"/>
+        <source>Permanently removed all hidden track points</source>
+        <translation>Alle verborgen trackpunten permanent verwijderd</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="243"/>
+        <source>Smoothed profile with a Median filter of size %1</source>
+        <translation>Vloeiend profiel met een median filter van grootte %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="279"/>
+        <source>Replaced elevation data with data from DEM files.</source>
+        <translation>Vervang hoogte gegevens met gegevens van DEM bestanden.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="302"/>
+        <source>Offset elevation data by %1%2.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="321"/>
+        <source>Changed start of track to %1.</source>
+        <translation>Start van track veranderd naar %1.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="340"/>
+        <source>Remove timestamps.</source>
+        <translation>Verwijder tijdstempels.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="363"/>
+        <source>Set artificial timestamps with delta of %1 sec.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="396"/>
+        <source>Changed speed to %1%2.</source>
+        <translation>Snelheid veranderd naar %1%2.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="415"/>
+        <source>%1 (Segment %2)</source>
+        <translation>%1 (Segment %2)</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/filter.cpp" line="438"/>
+        <source>Removed extension %1 from all Track Points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/converter.cpp" line="198"/>
+        <source>Copy flag information from QLandkarte GT track</source>
+        <translation>Kopieer flag informatie vanuit QLandkarte GT track</translation>
+    </message>
+</context>
+<context>
+    <name>CGisItemWpt</name>
+    <message>
+        <location filename="../gis/gpx/serialization.cpp" line="588"/>
+        <source>Archived</source>
+        <translation>Gearchiveerd</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/serialization.cpp" line="592"/>
+        <source>Available</source>
+        <translation>Beschikbaar</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/serialization.cpp" line="596"/>
+        <source>Not Available</source>
+        <translation>Niet beschikbaar</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="102"/>
+        <source>_Clone</source>
+        <translation>_Kloon</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="267"/>
+        <source>Elevation: %1 %2</source>
+        <translation>Hoogte: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="278"/>
+        <source>Proximity: %1 %2</source>
+        <translation>Nabijheid: %1 %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="352"/>
+        <source>Changed name</source>
+        <translation>Naam aangepast</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="362"/>
+        <source>Changed position</source>
+        <translation>Positie aangepast</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="368"/>
+        <source>Changed elevation</source>
+        <translation>Hoogte aangepast</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="374"/>
+        <source>Changed proximity</source>
+        <translation>Nabijheid aangepast</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="388"/>
+        <source>Changed icon</source>
+        <translation>Pictogram aangepast</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="394"/>
+        <source>Changed comment</source>
+        <translation>Notitie aangepast</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="400"/>
+        <source>Changed description</source>
+        <translation>Beschrijving aangepast</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="406"/>
+        <source>Changed links</source>
+        <translation>Link aangepast</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="412"/>
+        <source>Changed images</source>
+        <translation>Afbeelding aangepast</translation>
+    </message>
+    <message>
+        <location filename="../gis/wpt/CGisItemWpt.cpp" line="418"/>
+        <source>Add image</source>
+        <translation>Afbeelding toevoegen</translation>
+    </message>
+</context>
+<context>
+    <name>CGisListDB</name>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="81"/>
+        <source>Due to changes in the database system QMapShack forgot about the filename of your database '%1'. You have to select it again in the next step.</source>
+        <translation>Door  een aanpassing in het database systeem is QMapShack de bestandnaam van database ''%1' vergeten. Selecteer dit weer in de volgende stap.</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="82"/>
+        <source>Select database file.</source>
+        <translation>Selecteer database bestand.</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="115"/>
+        <source>Add Database</source>
+        <translation>Database toevoegen</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="118"/>
+        <source>Add Folder</source>
+        <translation>Map toevoegen</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="119"/>
+        <source>Delete Folder</source>
+        <translation>Map verwijderen</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="122"/>
+        <location filename="../gis/CGisListDB.cpp" line="133"/>
+        <source>Delete Item</source>
+        <translation>Element verwijderen</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="126"/>
+        <source>Sync. with Database</source>
+        <translation>Syngroniseren met database</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="127"/>
+        <source>Remove Database</source>
+        <translation>Database verwijderen</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="130"/>
+        <source>Empty</source>
+        <translation>Leeg</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="418"/>
+        <source>Remove database...</source>
+        <translation>Database verwijderen...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="418"/>
+        <source>Do you really want to remove '%1' from the list?</source>
+        <translation>Moet '%1' werkelijk uit de lijst verwijderd worden?</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="476"/>
+        <source>Delete database folder...</source>
+        <translation>Verwijder database map...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="476"/>
+        <source>Are you sure you want to delete "%1" from the database?</source>
+        <translation>Moet "%1" werkelijk uit de database verwijderd worden?</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="503"/>
+        <location filename="../gis/CGisListDB.cpp" line="524"/>
+        <source>Remove items...</source>
+        <translation>Elementen verwijderen...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="503"/>
+        <source>Are you sure you want to delete all items from Lost&Found? This will remove them permanently.</source>
+        <translation>Moeten alle elementen worden verwijderd uit Verloren & Gevonden? Dit zal pemanent zijn.</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="524"/>
+        <source>Are you sure you want to delete all selected items from Lost&Found? This will remove them permanently.</source>
+        <translation>Moeten alle geselecteerde elementen worden verwijderd uit Verloren & Gevonden? Dit zal pemanent zijn.</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="611"/>
+        <source>Are you sure you want to delete '%1' from folder '%2'?</source>
+        <translation>Moet '%1' uit map '%2' verwijderd worden?</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListDB.cpp" line="612"/>
+        <source>Delete...</source>
+        <translation>Verwijderen...</translation>
+    </message>
+</context>
+<context>
+    <name>CGisListWks</name>
+    <message>
         <location filename="../gis/CGisListWks.cpp" line="99"/>
+        <source>Edit..</source>
+        <translation>Bewerken..</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="100"/>
+        <source>Show on Map</source>
+        <translation>Toon op kaart</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="101"/>
         <source>Hide from Map</source>
         <translation>Toon niet op kaart</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="101"/>
+        <location filename="../gis/CGisListWks.cpp" line="104"/>
         <source>Save</source>
         <translation>Opslaan</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="102"/>
+        <location filename="../gis/CGisListWks.cpp" line="105"/>
         <source>Save As...</source>
         <translation>Opslaan als...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="104"/>
+        <location filename="../gis/CGisListWks.cpp" line="108"/>
         <source>Send to Devices</source>
         <translation>Verzend naar GPS</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="106"/>
+        <location filename="../gis/CGisListWks.cpp" line="109"/>
+        <source>Sync. with Database</source>
+        <translation>Syngroniseren met database</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="112"/>
         <source>Close</source>
         <translation>Sluiten</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="112"/>
+        <location filename="../gis/CGisListWks.cpp" line="118"/>
         <source>Update Project on Device</source>
         <translation>Update project op GPS</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="113"/>
-        <location filename="../gis/CGisListWks.cpp" line="134"/>
+        <location filename="../gis/CGisListWks.cpp" line="119"/>
+        <location filename="../gis/CGisListWks.cpp" line="140"/>
         <source>Delete</source>
         <translation>Verwijder</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="124"/>
+        <location filename="../gis/CGisListWks.cpp" line="130"/>
         <source>Edit...</source>
         <translation>Bewerken...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="125"/>
+        <location filename="../gis/CGisListWks.cpp" line="131"/>
         <source>Copy to...</source>
         <translation>Kopieer naar...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="127"/>
+        <location filename="../gis/CGisListWks.cpp" line="133"/>
         <source>Track Profile</source>
         <translation>Track profiel</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="129"/>
+        <location filename="../gis/CGisListWks.cpp" line="135"/>
         <source>Select Range</source>
         <translation>Selecteer afstand</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="130"/>
+        <location filename="../gis/CGisListWks.cpp" line="136"/>
         <source>Edit Track Points</source>
         <translation>Trackpunten bewerken</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="131"/>
+        <location filename="../gis/CGisListWks.cpp" line="137"/>
         <source>Reverse Track</source>
         <translation>Track omdraaien</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="132"/>
+        <location filename="../gis/CGisListWks.cpp" line="138"/>
         <source>Combine Tracks</source>
         <translation>Combineer tracks</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="140"/>
+        <location filename="../gis/CGisListWks.cpp" line="146"/>
         <source>Show Bubble</source>
         <translation>Toon ballon</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="142"/>
+        <location filename="../gis/CGisListWks.cpp" line="148"/>
         <source>Move Waypoint</source>
         <translation>Verplaats waypoint</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="143"/>
+        <location filename="../gis/CGisListWks.cpp" line="149"/>
         <source>Proj. Waypoint...</source>
         <translation>Projecteer waypoint...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="151"/>
+        <location filename="../gis/CGisListWks.cpp" line="157"/>
         <source>Route Instructions</source>
         <translation>Route instructies</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="153"/>
+        <location filename="../gis/CGisListWks.cpp" line="159"/>
         <source>Calculate Route</source>
         <translation>Route berekenen</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="154"/>
+        <location filename="../gis/CGisListWks.cpp" line="160"/>
         <source>Reset Route</source>
         <translation>Route omkeren</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="155"/>
+        <location filename="../gis/CGisListWks.cpp" line="161"/>
         <source>Edit Route</source>
         <translation>Bewerk route</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="164"/>
+        <location filename="../gis/CGisListWks.cpp" line="170"/>
         <source>Edit Area Points</source>
         <translation>Bewerk gebied punten</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="171"/>
+        <location filename="../gis/CGisListWks.cpp" line="177"/>
         <source>Create Route</source>
         <translation>Maak route</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="613"/>
+        <location filename="../gis/CGisListWks.cpp" line="621"/>
         <source>Drop items...</source>
-        <translation type="unfinished"></translation>
+        <translation>Elementen wissen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="638"/>
-        <location filename="../gis/CGisListWks.cpp" line="1544"/>
-        <location filename="../gis/CGisListWks.cpp" line="1582"/>
+        <location filename="../gis/CGisListWks.cpp" line="646"/>
+        <location filename="../gis/CGisListWks.cpp" line="1632"/>
+        <location filename="../gis/CGisListWks.cpp" line="1670"/>
         <source><b>Update devices</b><p>Update %1<br/>Please wait...</p></source>
         <translation><b>Updaten GPS</b><p>Updaten %1<br/>Moment geduld...</p></translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="740"/>
+        <location filename="../gis/CGisListWks.cpp" line="775"/>
         <source>Saving workspace. Please wait.</source>
         <translation>Werkruimte opslaan. Moment geduld.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="787"/>
+        <location filename="../gis/CGisListWks.cpp" line="821"/>
         <source>Loading workspace. Please wait.</source>
         <translation>Laden werkruimte. Moment geduld.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1062"/>
+        <location filename="../gis/CGisListWks.cpp" line="1128"/>
         <source>Close all projects...</source>
         <translation>Sluit alle projecten...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1062"/>
+        <location filename="../gis/CGisListWks.cpp" line="1128"/>
         <source>This will remove all projects from the workspace.</source>
         <translation>Dit zal alle projecten uit de werkruimte verwijderen.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1266"/>
+        <location filename="../gis/CGisListWks.cpp" line="1151"/>
+        <source>Delete project...</source>
+        <translation>Project verwijderen...</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="1151"/>
+        <source>Do you really want to delete %1?</source>
+        <translation>Moet %1 werkelijk verwijderd worden?</translation>
+    </message>
+    <message>
+        <location filename="../gis/CGisListWks.cpp" line="1347"/>
         <source>Copy items...</source>
-        <translation type="unfinished"></translation>
+        <translation>Kopieer elementen...</translation>
     </message>
 </context>
 <context>
     <name>CGisWidget</name>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="114"/>
+        <location filename="../gis/CGisWidget.cpp" line="131"/>
         <source>Load project...</source>
         <translation>Project laden...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="114"/>
+        <location filename="../gis/CGisWidget.cpp" line="131"/>
         <source>The project "%1" is already in the workspace.</source>
         <translation>Het project "%1" is al geopend.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="461"/>
+        <location filename="../gis/CGisWidget.cpp" line="486"/>
         <source>Cut Track...</source>
         <translation>Track knippen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisWidget.cpp" line="461"/>
+        <location filename="../gis/CGisWidget.cpp" line="486"/>
         <source>Do you want to delete the original track?</source>
         <translation>Moet de orginele track verwijderd worden?</translation>
     </message>
 </context>
 <context>
+    <name>CGpsProject</name>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="90"/>
+        <source>Failed to load file %1...</source>
+        <translation>Kan bestand %1 niet laden...</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="112"/>
+        <source>Failed to open %1</source>
+        <translation>Openen mislukt-%1</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="124"/>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation>Lezen mislukt: %1
+lijn %2, kolom %3:
+ %4</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="132"/>
+        <source>Not a GPX file: %1</source>
+        <translation>Geen GPX bestand: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="238"/>
+        <source>File exists ...</source>
+        <translation>Bestand bestaat al...</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="239"/>
+        <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
+        <translation>Dit bestand bestaat al en is niet in QMapShack gemaakt. Wanneer op 'Ja' geklikt wordt zullen er gegevens verloren gaan. Alhoewel QMapShack dit GPX bestand kan openen is het mogelijk dat niet alle elementen opgeslagen kunnen worden. Geadviseerd wordt om een ander bestand te kiezen. <b>Moet dit bestand werkelijk overschreven worden?<b/></translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="347"/>
+        <source>Failed to create file '%1'</source>
+        <translation>Maken bestand mislukt '%1'</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="357"/>
+        <source>Failed to write file '%1'</source>
+        <translation>Schrijven bestand mislukt '%1'</translation>
+    </message>
+    <message>
+        <location filename="../gis/gpx/CGpxProject.cpp" line="362"/>
+        <source>Saving GIS data failed...</source>
+        <translation>Opslaan GIS gegevens mislukt...</translation>
+    </message>
+</context>
+<context>
     <name>CGrid</name>
     <message>
         <location filename="../grid/CGrid.cpp" line="61"/>
@@ -664,53 +1689,137 @@
 <context>
     <name>CHistoryListWidget</name>
     <message>
-        <location filename="../widgets/CHistoryListWidget.cpp" line="34"/>
-        <source>Cut history</source>
-        <translation>Historie wissen</translation>
+        <location filename="../widgets/CHistoryListWidget.cpp" line="34"/>
+        <source>Cut history</source>
+        <translation>Historie wissen</translation>
+    </message>
+    <message>
+        <location filename="../widgets/CHistoryListWidget.cpp" line="61"/>
+        <source> by %1</source>
+        <translation> per %1</translation>
+    </message>
+</context>
+<context>
+    <name>CImportDatabase</name>
+    <message>
+        <location filename="../tool/CImportDatabase.cpp" line="29"/>
+        <source>Import QLandkarte Database</source>
+        <translation>QLandkarte database importeren</translation>
+    </message>
+    <message>
+        <location filename="../tool/CImportDatabase.cpp" line="75"/>
+        <source>Select source database...</source>
+        <translation>Bron database selecteren...</translation>
+    </message>
+    <message>
+        <location filename="../tool/CImportDatabase.cpp" line="97"/>
+        <source>Select target database...</source>
+        <translation>Doel database selecteren...</translation>
+    </message>
+</context>
+<context>
+    <name>CKnownExtension</name>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="45"/>
+        <source>Air Temperature</source>
+        <translation>Luchttemperatuur</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="49"/>
+        <source>Water Temperature</source>
+        <translation>Watertemperatuur</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="53"/>
+        <source>Depth</source>
+        <translation>Diepte</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="57"/>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="69"/>
+        <source>Heart Rate</source>
+        <translation>Hartslag</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="61"/>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="73"/>
+        <source>Cadence</source>
+        <translation>Cadans</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="77"/>
+        <source>Speed</source>
+        <translation>Snelheid</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="81"/>
+        <source>Acceleration</source>
+        <translation>Versnelling</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="85"/>
+        <source>Course</source>
+        <translation>Richting</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="94"/>
+        <source>Slope*</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="99"/>
+        <source>Speed*</source>
+        <translation type="unfinished"></translation>
     </message>
-</context>
-<context>
-    <name>CImportDatabase</name>
     <message>
-        <location filename="../tool/CImportDatabase.cpp" line="29"/>
-        <source>Import QLandkarte Database</source>
-        <translation>QLandkarte database importeren</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="104"/>
+        <source>Elevation</source>
+        <translation>Hoogte</translation>
     </message>
     <message>
-        <location filename="../tool/CImportDatabase.cpp" line="75"/>
-        <source>Select source database...</source>
-        <translation>Bron database selecteren...</translation>
+        <location filename="../gis/trk/CKnownExtension.cpp" line="109"/>
+        <source>Progress</source>
+        <translation>Voortgang</translation>
     </message>
+</context>
+<context>
+    <name>CLostFoundProject</name>
     <message>
-        <location filename="../tool/CImportDatabase.cpp" line="97"/>
-        <source>Select target database...</source>
-        <translation>Doel database selecteren...</translation>
+        <location filename="../gis/db/CLostFoundProject.cpp" line="39"/>
+        <source>Lost & Found</source>
+        <translation>Lost & Found</translation>
     </message>
 </context>
 <context>
     <name>CMainWindow</name>
     <message>
-        <location filename="../CMainWindow.cpp" line="591"/>
+        <location filename="../CMainWindow.cpp" line="617"/>
         <source>Ele: %1%2</source>
         <translation>Hoogte: %1%2</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="607"/>
+        <location filename="../CMainWindow.cpp" line="633"/>
         <source>[Grid: %1]</source>
         <translation>[Raster: %1]</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="732"/>
+        <location filename="../CMainWindow.cpp" line="758"/>
         <source>Load GIS Data...</source>
         <translation>GIS gegevens laden...</translation>
     </message>
     <message>
-        <location filename="../CMainWindow.cpp" line="766"/>
+        <location filename="../CMainWindow.cpp" line="792"/>
         <source>Select output file</source>
         <translation>Selecteer bestand</translation>
     </message>
     <message>
         <location filename="../CMainWindow.cpp" line="792"/>
+        <location filename="../CMainWindow.cpp" line="818"/>
+        <source>QMapShack View (*.view)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../CMainWindow.cpp" line="818"/>
         <source>Select file to load</source>
         <translation>Selecteer bestand</translation>
     </message>
@@ -1011,32 +2120,32 @@
     <message>
         <location filename="../map/CMapIMG.cpp" line="283"/>
         <source>Minor land contour</source>
-        <translation type="unfinished"></translation>
+        <translation>Klein hoogteverschil</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="284"/>
         <source>Intermediate land contour</source>
-        <translation type="unfinished"></translation>
+        <translation>Gemiddeld hoogteverschil</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="285"/>
         <source>Major land contour</source>
-        <translation type="unfinished"></translation>
+        <translation>Groot hoogteverschil</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="286"/>
         <source>Minor depth contour</source>
-        <translation type="unfinished"></translation>
+        <translation>Klein diepteverschil</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="287"/>
         <source>Intermediate depth contour</source>
-        <translation type="unfinished"></translation>
+        <translation>Gemiddeld diepteverschil</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="288"/>
         <source>Major depth contour</source>
-        <translation type="unfinished"></translation>
+        <translation>Groot diepteverschil</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="289"/>
@@ -1294,7 +2403,7 @@
         <location filename="../map/CMapIMG.cpp" line="515"/>
         <location filename="../map/CMapIMG.cpp" line="519"/>
         <source>Bad file format: </source>
-        <translation type="unfinished">Verkeerd bestandsformaat:</translation>
+        <translation>Verkeerd bestandsformaat:</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="608"/>
@@ -1314,34 +2423,34 @@
     <message>
         <location filename="../map/CMapIMG.cpp" line="652"/>
         <source>File is NT format. QMapShack is unable to read map files with NT format: </source>
-        <translation type="unfinished"></translation>
+        <translation>Bestand is in NT formaat. QMapShack kan geen kaarten lezen met NT formaat:</translation>
     </message>
     <message>
         <location filename="../map/CMapIMG.cpp" line="744"/>
         <source>File contains locked / encypted data. Garmin does not want you to use this file with any other software than the one supplied by Garmin.</source>
-        <translation type="unfinished"></translation>
+        <translation>Bestand bevat geblokeerde / gecodeerde gegevens. Garmin staat niet toe dat deze gegeven door andere software gelezen kan worden.</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2504"/>
-        <location filename="../map/CMapIMG.cpp" line="2512"/>
-        <location filename="../map/CMapIMG.cpp" line="2516"/>
-        <location filename="../map/CMapIMG.cpp" line="2521"/>
-        <location filename="../map/CMapIMG.cpp" line="2567"/>
-        <location filename="../map/CMapIMG.cpp" line="2575"/>
-        <location filename="../map/CMapIMG.cpp" line="2579"/>
-        <location filename="../map/CMapIMG.cpp" line="2584"/>
+        <location filename="../map/CMapIMG.cpp" line="2502"/>
+        <location filename="../map/CMapIMG.cpp" line="2510"/>
+        <location filename="../map/CMapIMG.cpp" line="2514"/>
+        <location filename="../map/CMapIMG.cpp" line="2519"/>
+        <location filename="../map/CMapIMG.cpp" line="2565"/>
+        <location filename="../map/CMapIMG.cpp" line="2573"/>
+        <location filename="../map/CMapIMG.cpp" line="2577"/>
+        <location filename="../map/CMapIMG.cpp" line="2582"/>
         <source>Point of Interest</source>
-        <translation type="unfinished"></translation>
+        <translation>Interessant punt</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2711"/>
+        <location filename="../map/CMapIMG.cpp" line="2709"/>
         <source>Unknown</source>
         <translation>Onbekend</translation>
     </message>
     <message>
-        <location filename="../map/CMapIMG.cpp" line="2757"/>
-        <location filename="../map/CMapIMG.cpp" line="2765"/>
-        <location filename="../map/CMapIMG.cpp" line="2772"/>
+        <location filename="../map/CMapIMG.cpp" line="2755"/>
+        <location filename="../map/CMapIMG.cpp" line="2763"/>
+        <location filename="../map/CMapIMG.cpp" line="2770"/>
         <source>Area</source>
         <translation>Gebied</translation>
     </message>
@@ -1349,17 +2458,17 @@
 <context>
     <name>CMapList</name>
     <message>
-        <location filename="../map/CMapList.cpp" line="155"/>
+        <location filename="../map/CMapList.cpp" line="205"/>
         <source>Deactivate</source>
         <translation>Deactiveer</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="155"/>
+        <location filename="../map/CMapList.cpp" line="205"/>
         <source>Activate</source>
         <translation>Activeer</translation>
     </message>
     <message>
-        <location filename="../map/CMapList.cpp" line="174"/>
+        <location filename="../map/CMapList.cpp" line="228"/>
         <source>Where do you want to store maps?</source>
         <translation>Waar moeten de kaarten opgeslagen worden?</translation>
     </message>
@@ -1392,12 +2501,12 @@
     <message>
         <location filename="../map/CMapPathSetup.cpp" line="62"/>
         <source>Select map path...</source>
-        <translation type="unfinished"></translation>
+        <translation>Selecteer kaartmap...</translation>
     </message>
     <message>
         <location filename="../map/CMapPathSetup.cpp" line="81"/>
         <source>Select root path...</source>
-        <translation type="unfinished"></translation>
+        <translation>Selecteer hoofdmap...</translation>
     </message>
 </context>
 <context>
@@ -1474,32 +2583,32 @@ lijn %2, kolom %3:
     <message>
         <location filename="../map/CMapTMS.cpp" line="130"/>
         <source>This map requires OpenSSL support. However due to legal restrictions in some countries OpenSSL is not packaged with QMapShack. You can have a look at the <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> for binaries. You have to copy libeay32.dll and ssleay32.dll into the QMapShack program directory.</source>
-        <translation type="unfinished"></translation>
+        <translation>Deze kaart heeft OpenSSL onderteuning nodig. Door restricte beperkingen in bepaalde landen kan QMapShack geen OpenSSL pakket aanbieden. Neem een kijkje op <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> voor binaries. Er kan wel libeay32.dll en ssleay32.dll in de QMapShack map gekopieerd worden.</translation>
     </message>
     <message>
-        <location filename="../map/CMapTMS.cpp" line="306"/>
+        <location filename="../map/CMapTMS.cpp" line="304"/>
         <source><b>%1</b>: %2 tiles pending<br/></source>
-        <translation type="unfinished"></translation>
+        <translation><b>%1</b>: %2 delen ontvangen<br/></translation>
     </message>
 </context>
 <context>
     <name>CMapVRT</name>
     <message>
         <location filename="../map/CMapVRT.cpp" line="45"/>
-        <location filename="../map/CMapVRT.cpp" line="60"/>
-        <location filename="../map/CMapVRT.cpp" line="89"/>
+        <location filename="../map/CMapVRT.cpp" line="59"/>
+        <location filename="../map/CMapVRT.cpp" line="88"/>
         <location filename="../map/CMapVRT.cpp" line="126"/>
         <source>Error...</source>
         <translation>Fout...</translation>
     </message>
     <message>
         <location filename="../map/CMapVRT.cpp" line="45"/>
-        <location filename="../map/CMapVRT.cpp" line="60"/>
+        <location filename="../map/CMapVRT.cpp" line="59"/>
         <source>Failed to load file: %1</source>
         <translation>Bestand laden mislukt: %1</translation>
     </message>
     <message>
-        <location filename="../map/CMapVRT.cpp" line="89"/>
+        <location filename="../map/CMapVRT.cpp" line="88"/>
         <source>File must be 8 bit palette or gray indexed.</source>
         <translation>Bestand moet 8 bit kleur of grijs geindexeerd zijn.</translation>
     </message>
@@ -1514,7 +2623,7 @@ lijn %2, kolom %3:
     <message>
         <location filename="../tool/CMapVrtBuilder.cpp" line="28"/>
         <source>Build GDAL VRT</source>
-        <translation type="unfinished"></translation>
+        <translation>GDAL VRT maken</translation>
     </message>
     <message>
         <location filename="../tool/CMapVrtBuilder.cpp" line="46"/>
@@ -1570,12 +2679,12 @@ Onbekende structuur.</translation>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="72"/>
         <source>Unexpected service. '* WMTS 1.0.0' is expected. '%1 %2' is read.</source>
-        <translation type="unfinished"></translation>
+        <translation>Onverwachte service. '*WMTS 1.0.0' is verwacht. '%1 %2' is gelezen.</translation>
     </message>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="151"/>
         <source>This map requires OpenSSL support. However due to legal restrictions in some countries OpenSSL is not packaged with QMapShack. You can have a look at the <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> for binaries. You have to copy libeay32.dll and ssleay32.dll into the QMapShack program directory.</source>
-        <translation type="unfinished"></translation>
+        <translation>Deze kaart heeft OpenSSL onderteuning nodig. Door restricte beperkingen in bepaalde landen kan QMapShack geen OpenSSL pakket aanbieden. Neem een kijkje op <a href='https://www.openssl.org/community/binaries.html'>OpenSSL Homepage</a> voor binaries. Er kan wel libeay32.dll en ssleay32.dll in de QMapShack map gekopieerd worden.</translation>
     </message>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="217"/>
@@ -1585,7 +2694,7 @@ Onbekende structuur.</translation>
     <message>
         <location filename="../map/CMapWMTS.cpp" line="413"/>
         <source><b>%1</b>: %2 tiles pending<br/></source>
-        <translation type="unfinished"></translation>
+        <translation><b>%1</b>: %2 delen ontvangen<br/></translation>
     </message>
 </context>
 <context>
@@ -1601,6 +2710,16 @@ Onbekende structuur.</translation>
         <source><b>Edit Area</b><br/>Select a function and a routing mode via the tool buttons. Next select a point of the line. Only points marked with a large square can be changed. The ones with a black dot are subpoints introduced by routing.<br/></source>
         <translation><b>Bewerk gebied</b><br/>Selecteer een functie en een routeoptie via de gereedschapknoppen. Selecteer dan een punt op de lijn. Alleen zwarte vierkante punten kunnen gewijzigd worden. De ronde zwarte subpunten niet.<br/></translation>
     </message>
+    <message>
+        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
+        <source>Edit name...</source>
+        <translation>Bewerk naam...</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
+        <source>Enter new area name.</source>
+        <translation>Geef gebied een nieuwe naam.</translation>
+    </message>
 </context>
 <context>
     <name>CMouseEditRte</name>
@@ -1615,6 +2734,16 @@ Onbekende structuur.</translation>
         <source><b>Edit Route Points</b><br/>Select a function and a routing mode via the tool buttons. Next select a point of the line. Only points marked with a large square can be changed. The ones with a black dot are subpoints introduced by routing.<br/></source>
         <translation><b>Bewerk route punten</b><br/>Selecteer een functie en een routeoptie via de gereedschapknoppen. Selecteer dan een punt op de lijn. Alleen zwarte vierkante punten kunnen gewijzigd worden. De ronde zwarte subpunten niet.<br/></translation>
     </message>
+    <message>
+        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
+        <source>Edit name...</source>
+        <translation>Bewerk naam...</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
+        <source>Enter new route name.</source>
+        <translation>Geef  route een nieuwe naam.</translation>
+    </message>
 </context>
 <context>
     <name>CMouseEditTrk</name>
@@ -1637,7 +2766,17 @@ Onbekende structuur.</translation>
     <message>
         <location filename="../mouse/CMouseEditTrk.cpp" line="80"/>
         <source>This will replace all data of the original by a simple line of coordinates. All other data will be lost permanently.</source>
-        <translation type="unfinished"></translation>
+        <translation>Dit zal alle gegevens overschrijven van het origineel door een simpele lijn met coördinaten. Alle andere gegevens zullen verloren gaan.</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
+        <source>Edit name...</source>
+        <translation>Bewerk naam...</translation>
+    </message>
+    <message>
+        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
+        <source>Enter new track name.</source>
+        <translation>Geef track nieuwe naam.</translation>
     </message>
 </context>
 <context>
@@ -1686,7 +2825,7 @@ Onbekende structuur.</translation>
     <message>
         <location filename="../mouse/CMouseRangeTrk.cpp" line="42"/>
         <source><b>Select Range</b><br/>Select first track point. And then a second one.<br/></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Selecteer afstand</b><br/>Selecteer eerste trackpunt en dan de volgende.<br></translation>
     </message>
 </context>
 <context>
@@ -1701,30 +2840,30 @@ Onbekende structuur.</translation>
     <name>CPlotDistance</name>
     <message>
         <source>distance [%1]</source>
-        <translation type="vanished">afstand [%1]</translation>
+        <translation type="obsolete">afstand [%1]</translation>
     </message>
     <message>
         <source>time</source>
-        <translation type="vanished">tijd</translation>
+        <translation type="obsolete">tijd</translation>
     </message>
     <message>
         <source>distance. [%1]</source>
-        <translation type="vanished">afstand. [%1]</translation>
+        <translation type="obsolete">afstand. [%1]</translation>
     </message>
 </context>
 <context>
     <name>CPlotProfile</name>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="63"/>
+        <location filename="../plot/CPlotProfile.cpp" line="73"/>
         <source>distance [%1]</source>
         <translation>afstand [%1]</translation>
     </message>
     <message>
         <source>time [h]</source>
-        <translation type="vanished">tijd [u]</translation>
+        <translation type="obsolete">tijd [u]</translation>
     </message>
     <message>
-        <location filename="../plot/CPlotProfile.cpp" line="64"/>
+        <location filename="../plot/CPlotProfile.cpp" line="74"/>
         <source>alt. [%1]</source>
         <translation>hoogte [%1]</translation>
     </message>
@@ -1733,15 +2872,15 @@ Onbekende structuur.</translation>
     <name>CPlotSpeed</name>
     <message>
         <source>distance [%1]</source>
-        <translation type="vanished">afstand [%1]</translation>
+        <translation type="obsolete">afstand [%1]</translation>
     </message>
     <message>
         <source>time [h]</source>
-        <translation type="vanished">tijd [u]</translation>
+        <translation type="obsolete">tijd [u]</translation>
     </message>
     <message>
         <source>speed. [%1]</source>
-        <translation type="vanished">snelheid. [%1]</translation>
+        <translation type="obsolete">snelheid. [%1]</translation>
     </message>
 </context>
 <context>
@@ -1754,7 +2893,7 @@ Onbekende structuur.</translation>
     <message>
         <location filename="../print/CPrintDialog.cpp" line="74"/>
         <source>Save Map as Image...</source>
-        <translation>Sla kaart op  als afbeelding...</translation>
+        <translation>Sla kaart op als afbeelding...</translation>
     </message>
     <message>
         <location filename="../print/CPrintDialog.cpp" line="94"/>
@@ -1798,7 +2937,7 @@ y: %4 m/px</translation>
         <translation>Verstreken tijd: %1</translation>
     </message>
     <message>
-        <location filename="../helpers/CProgressDialog.cpp" line="74"/>
+        <location filename="../helpers/CProgressDialog.cpp" line="82"/>
         <source>Elapsed time: %1 seconds.</source>
         <translation>Verstreken tijd: %1 seconden.</translation>
     </message>
@@ -1816,12 +2955,12 @@ y: %4 m/px</translation>
         <translation>zuid</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="221"/>
+        <location filename="../grid/CProjWizard.cpp" line="222"/>
         <source>Error...</source>
         <translation>Fout...</translation>
     </message>
     <message>
-        <location filename="../grid/CProjWizard.cpp" line="221"/>
+        <location filename="../grid/CProjWizard.cpp" line="222"/>
         <source>The value
 '%1'
 is not a valid coordinate system definition:
@@ -1846,6 +2985,19 @@ is geen geldig coordinaat definitie:
     </message>
 </context>
 <context>
+    <name>CPropertyTrk</name>
+    <message>
+        <location filename="../gis/trk/CPropertyTrk.cpp" line="65"/>
+        <source>distance [%1]</source>
+        <translation>afstand [%1]</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/CPropertyTrk.cpp" line="77"/>
+        <source>time</source>
+        <translation>tijd</translation>
+    </message>
+</context>
+<context>
     <name>CQlgtDb</name>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="308"/>
@@ -1890,7 +3042,7 @@ is geen geldig coordinaat definitie:
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="564"/>
         <source>Routes:           %1 (Only the basic route will be copied)</source>
-        <translation type="unfinished"></translation>
+        <translation>Routes:           %1 (Alleen de basis route zal gekopieerd worden)</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="572"/>
@@ -1900,27 +3052,27 @@ is geen geldig coordinaat definitie:
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="580"/>
         <source>Overlays:         %1 (areas will be converted as areas, distance lines will be converted to tracks, all other overlay items will be lost)</source>
-        <translation type="unfinished"></translation>
+        <translation>Overlays:         %1 (gebieden zullen worden omgezet als gebieden, afstandlijnen zullen worden omgezet als tracks, alle andere overlay onderdelen zullen verloren gaan)</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="587"/>
         <source>Diaries:          %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Dagboeken:          %1</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="594"/>
         <source>Map selections:   %1 (can't be converted to QMapShack)</source>
-        <translation type="unfinished"></translation>
+        <translation>Kaarselecties: %1 Kunnen niet omgezet worden door QMapShack)</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="600"/>
         <source>------ Start to convert database to %1------</source>
-        <translation type="unfinished"></translation>
+        <translation>------ Start omzetten database naar %1------</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="604"/>
         <source>Failed to create target database.</source>
-        <translation type="unfinished"></translation>
+        <translation>Kan geen database maken.</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="605"/>
@@ -1935,17 +3087,17 @@ is geen geldig coordinaat definitie:
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="641"/>
         <source>Restore folders...</source>
-        <translation type="unfinished"></translation>
+        <translation>Herstel mappen...</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="661"/>
         <source>Imported %1 folders and %2 diaries</source>
-        <translation type="unfinished"></translation>
+        <translation>Geimporteerd %1 mappen en %2 dagboeken</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="667"/>
         <source>Copy items...</source>
-        <translation type="unfinished"></translation>
+        <translation>Kopieer elementen...</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="685"/>
@@ -1955,11 +3107,38 @@ is geen geldig coordinaat definitie:
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="686"/>
         <source>Import folders...</source>
-        <translation type="unfinished"></translation>
+        <translation>Importeer mappen...</translation>
     </message>
     <message>
         <location filename="../qlgt/CQlgtDb.cpp" line="751"/>
         <source>Overlay of type '%1' cant be converted</source>
+        <translation>Overlay van type '%1' kan niet omgezet worden</translation>
+    </message>
+</context>
+<context>
+    <name>CQlgtTrack</name>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="164"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="218"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="265"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="291"/>
+        <source>Corrupt track ...</source>
+        <translation>Slechte track...</translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="164"/>
+        <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="218"/>
+        <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="265"/>
+        <location filename="../qlgt/CQlgtTrack.cpp" line="291"/>
+        <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
         <translation type="unfinished"></translation>
     </message>
 </context>
@@ -1968,22 +3147,37 @@ is geen geldig coordinaat definitie:
     <message>
         <location filename="../qlgt/CQmsDb.cpp" line="47"/>
         <source>Existing file...</source>
-        <translation type="unfinished"></translation>
+        <translation>Bestaand bestand...</translation>
     </message>
     <message>
         <location filename="../qlgt/CQmsDb.cpp" line="47"/>
         <source>Remove existing %1?</source>
-        <translation type="unfinished"></translation>
+        <translation>Verwijder bestaand %1?</translation>
     </message>
     <message>
         <location filename="../qlgt/CQmsDb.cpp" line="52"/>
         <source>Remove existing file %1</source>
-        <translation type="unfinished"></translation>
+        <translation>Verwijder bestaand bestand %1</translation>
     </message>
     <message>
         <location filename="../qlgt/CQmsDb.cpp" line="163"/>
         <source>%1: drop item with QLGT DB ID %2</source>
-        <translation type="unfinished"></translation>
+        <translation>%1: verwerp element met QLTG DB ID %2</translation>
+    </message>
+</context>
+<context>
+    <name>CQmsProject</name>
+    <message>
+        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <source>Failed to open...</source>
+        <translation>Openen mislukt...</translation>
+    </message>
+    <message>
+        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
+        <location filename="../gis/qms/CQmsProject.cpp" line="84"/>
+        <source>Failed to open %1</source>
+        <translation>Openen mislukt-%1</translation>
     </message>
 </context>
 <context>
@@ -2061,7 +3255,7 @@ is geen geldig coordinaat definitie:
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="110"/>
         <source>mode "%1"</source>
-        <translation type="unfinished"></translation>
+        <translation>Modus '%1"</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterMapQuest.cpp" line="114"/>
@@ -2211,87 +3405,91 @@ is geen geldig coordinaat definitie:
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="128"/>
         <source>A function was called without the database variable set.</source>
-        <translation type="unfinished"></translation>
+        <translation>Een functie werd aangeroepen zonder database variabelen.</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="131"/>
         <source>A function was called without the profile variable set.</source>
-        <translation type="unfinished"></translation>
+        <translation>Een functie werd aangeroepen zonder profiel variabelen.</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="134"/>
         <source>A function was called without the translation variable set.</source>
-        <translation type="unfinished"></translation>
+        <translation>Een functie werd aangeroepen zonder vertaling variabelen.</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="137"/>
         <source>The specified database to load did not exist.</source>
-        <translation type="unfinished"></translation>
+        <translation>De opgegeven database bestaat niet.</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="140"/>
         <source>The specified database could not be loaded.</source>
-        <translation type="unfinished"></translation>
+        <translation>De opgegeven database kan niet geladen worden.</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="143"/>
         <source>The specified profiles XML file did not exist.</source>
-        <translation type="unfinished"></translation>
+        <translation>Het opgegeven XML profiel bestaat niet.</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="146"/>
         <source>The specified profiles XML file could not be loaded.</source>
-        <translation type="unfinished"></translation>
+        <translation>Het opgegeven XML profiel kan niet geladen worden.</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="149"/>
         <source>The specified translations XML file did not exist.</source>
-        <translation type="unfinished"></translation>
+        <translation>De opgegeven XML vertaling bestaat niet.</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="152"/>
         <source>The specified translations XML file could not be loaded.</source>
-        <translation type="unfinished"></translation>
+        <translation>De opgegeven XML vertaling kan niet geladen worden.</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="155"/>
         <source>The requested profile name does not exist in the loaded XML file.</source>
-        <translation type="unfinished"></translation>
+        <translation>De opgevraagde profielnaam bestaat niet in geladen XML bestand.</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="158"/>
         <source>The requested translation language does not exist in the loaded XML file.</source>
-        <translation type="unfinished"></translation>
+        <translation>De opgevraagde vertaling bestaat niet in geladen XML bestand.</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="161"/>
-        <source>There is no highway near the coordinates to place a waypoint.</source>
+        <source>In the routing database there is no highway near the coordinates to place a waypoint.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
+        <source>There is no highway near the coordinates to place a waypoint.</source>
+        <translation type="obsolete">Er is geen snelweg bij opgegeven coördinaten om waypoint te maken.</translation>
+    </message>
+    <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="164"/>
         <source>The profile and database do not work together.</source>
-        <translation type="unfinished"></translation>
+        <translation>Profiel en database kunnen niet samenwerken.</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="167"/>
         <source>The profile being used has not been validated.</source>
-        <translation type="unfinished"></translation>
+        <translation>Het gebruikte profiel is niet gevalideerd.</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="170"/>
         <source>The user specified profile contained invalid data.</source>
-        <translation type="unfinished"></translation>
+        <translation>Door gebruiker opgegeven profiel bevat ongeldige gegevens.</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="173"/>
         <source>The routing options specified are not consistent with each other.</source>
-        <translation type="unfinished"></translation>
+        <translation>De opgegeven routing opties komen niet overeen.</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="176"/>
         <source>There is a mismatch between the library and caller API version.</source>
-        <translation type="unfinished"></translation>
+        <translation>Er is een verschil is tussen de bibliotheek en de gebruiker API-versie.</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="179"/>
@@ -2316,21 +3514,21 @@ is geen geldig coordinaat definitie:
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="201"/>
         <source>, mode "%1"</source>
-        <translation type="unfinished"></translation>
+        <translation>, modus "%1"</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutino.cpp" line="238"/>
         <source>%1: Due to limitations in the Windows POSIX API Routino can't handle files larger than 4GB.</source>
-        <translation type="unfinished"></translation>
+        <translation>%1 Door beperkingen in de Windows POSIX API Routino kunnen geen bestanden groter dan 4GB gebruikt worden.</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="342"/>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="429"/>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="344"/>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="431"/>
         <source>Calculate route with %1</source>
         <translation>Bereken route met %1</translation>
     </message>
     <message>
-        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="350"/>
+        <location filename="../gis/rte/router/CRouterRoutino.cpp" line="352"/>
         <source><br/>Calculation time: %1s</source>
         <translation><br/>Berekenen tijd: %1s</translation>
     </message>
@@ -2340,12 +3538,12 @@ is geen geldig coordinaat definitie:
     <message>
         <location filename="../gis/rte/router/CRouterRoutinoPathSetup.cpp" line="40"/>
         <source>Add or remove paths containing Routino data. There can be multiple databases in a path but no sub-path is parsed.</source>
-        <translation type="unfinished"></translation>
+        <translation>Maak of verwijder mappen naar Routino gegevens.-Er kunnen meerdere bestanden in een map zijn maar geen submappen.</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/CRouterRoutinoPathSetup.cpp" line="55"/>
         <source>Select routing data file path...</source>
-        <translation type="unfinished"></translation>
+        <translation>Selecteer routing gegevensmap...</translation>
     </message>
 </context>
 <context>
@@ -2402,22 +3600,32 @@ is geen geldig coordinaat definitie:
 <context>
     <name>CSetupDatabase</name>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="70"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="47"/>
+        <source>Missing Requirement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="48"/>
+        <source>MySQL cannot be used at this point, because the corresponding driver (QMYSQL) is not available.<br />Please make sure you have installed the corresponding package.<br />If you don't know what to do now you should have <a href="%1">a look at the wiki</a>.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="102"/>
         <source>Error...</source>
         <translation>Fout...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="70"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="102"/>
         <source>There is already a database with name '%1'</source>
         <translation>Er is al een database met naam '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="84"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="115"/>
         <source>New database...</source>
         <translation>Nieuwe database...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupDatabase.cpp" line="109"/>
+        <location filename="../gis/db/CSetupDatabase.cpp" line="140"/>
         <source>Open database...</source>
         <translation>Open database...</translation>
     </message>
@@ -2425,17 +3633,67 @@ is geen geldig coordinaat definitie:
 <context>
     <name>CSetupWorkspace</name>
     <message>
-        <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="55"/>
         <source>Setup database...</source>
         <translation>Instelling database...</translation>
     </message>
     <message>
-        <location filename="../gis/db/CSetupWorkspace.cpp" line="51"/>
+        <location filename="../gis/db/CSetupWorkspace.cpp" line="55"/>
         <source>Changes will become active after an application's restart.</source>
         <translation>Veranderingen zullen na herstart toegepast worden.</translation>
     </message>
 </context>
 <context>
+    <name>CSlfProject</name>
+    <message>
+        <location filename="../gis/slf/CSlfProject.cpp" line="42"/>
+        <source>Failed to load file %1...</source>
+        <translation>Kan bestand %1 niet laden...</translation>
+    </message>
+</context>
+<context>
+    <name>CSlfReader</name>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="59"/>
+        <source>%1 does not exist</source>
+        <translation>%1 bestaat niet</translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="64"/>
+        <source>Failed to open %1</source>
+        <translation>Openen mislukt-%1</translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="75"/>
+        <source>Failed to read: %1
+line %2, column %3:
+ %4</source>
+        <translation>Lezen mislukt: %1
+lijn %2, kolom %3:
+ %4</translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="82"/>
+        <source>Not a SLF file: %1</source>
+        <translation>Geen SLF bestand: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="89"/>
+        <source>Unsupported revision %1: %2</source>
+        <translation>Niet ondersteunende revisie %1: %2</translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="164"/>
+        <source>Break %1</source>
+        <translation>Pauze %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/slf/CSlfReader.cpp" line="168"/>
+        <source>Lap %1</source>
+        <translation>Ronde %1</translation>
+    </message>
+</context>
+<context>
     <name>CTextEditWidget</name>
     <message>
         <location filename="../widgets/CTextEditWidget.cpp" line="73"/>
@@ -2444,6 +3702,46 @@ is geen geldig coordinaat definitie:
     </message>
 </context>
 <context>
+    <name>CTwoNavProject</name>
+    <message>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
+        <location filename="../gis/tnv/serialization.cpp" line="560"/>
+        <location filename="../gis/tnv/serialization.cpp" line="588"/>
+        <location filename="../gis/tnv/serialization.cpp" line="599"/>
+        <location filename="../gis/tnv/serialization.cpp" line="617"/>
+        <location filename="../gis/tnv/serialization.cpp" line="645"/>
+        <location filename="../gis/tnv/serialization.cpp" line="719"/>
+        <source>Error...</source>
+        <translation>Fout...</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
+        <location filename="../gis/tnv/serialization.cpp" line="560"/>
+        <source>Failed to open %1.</source>
+        <translation>Kan %1 niet openen.</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/CTwoNavProject.cpp" line="159"/>
+        <source>Save GIS data to...</source>
+        <translation>Sla GIS gegevens op naar...</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="588"/>
+        <location filename="../gis/tnv/serialization.cpp" line="599"/>
+        <source>Only support lon/lat WGS 84 format.</source>
+        <translation>Alleen lon/lat WGS 84 formaat word ondersteunt.</translation>
+    </message>
+    <message>
+        <location filename="../gis/tnv/serialization.cpp" line="617"/>
+        <location filename="../gis/tnv/serialization.cpp" line="645"/>
+        <location filename="../gis/tnv/serialization.cpp" line="719"/>
+        <source>Failed to read data.</source>
+        <translation>Lezen gegevens mislukt.</translation>
+    </message>
+</context>
+<context>
     <name>IAbout</name>
     <message>
         <location filename="../IAbout.ui" line="14"/>
@@ -2485,115 +3783,149 @@ is geen geldig coordinaat definitie:
         <translation>Routino</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="166"/>
+        <location filename="../IAbout.ui" line="172"/>
+        <source>Czech:</source>
+        <translation>Tsjechisch:</translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="195"/>
+        <source>German:</source>
+        <translation>Duits:</translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="218"/>
+        <source>Dutch:</source>
+        <translation>Nederlands:</translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="241"/>
+        <source>French:</source>
+        <translation>Frans:</translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="251"/>
         <source>Rainer Unseld </source>
         <translation>Rainer Unseld</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="173"/>
+        <location filename="../IAbout.ui" line="381"/>
+        <source>Christian Eichler (qms at christian-eichler.de)
+Ivo Kronenberg</source>
+        <translation>Christian Eichler (qms at christian-eichler.de)
+Ivo Kronenberg</translation>
+    </message>
+    <message>
         <source>French</source>
-        <translation>Frans</translation>
+        <translation type="obsolete">Frans</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="180"/>
         <source>Czech</source>
-        <translation>Tsjechisch</translation>
+        <translation type="obsolete">Tsjechisch</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="187"/>
+        <location filename="../IAbout.ui" line="182"/>
         <source>Pavel Fric</source>
         <translation>Pavel Fric</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="194"/>
         <source>German</source>
-        <translation>Duits</translation>
+        <translation type="obsolete">Duits</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="201"/>
+        <location filename="../IAbout.ui" line="281"/>
         <source><b>Translation:</b></source>
         <translation><b>Vertaling:</b></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="229"/>
         <source>Dutch</source>
-        <translation type="unfinished">Nederlands</translation>
+        <translation type="obsolete">Nederlands</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="236"/>
+        <location filename="../IAbout.ui" line="228"/>
         <source>Harrie Klomp</source>
-        <translation type="unfinished"></translation>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="271"/>
+        <source>Spanish:</source>
+        <translation>Spaans:</translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="305"/>
+        <source>Win64:</source>
+        <translation>Win64:</translation>
+    </message>
+    <message>
+        <location filename="../IAbout.ui" line="321"/>
+        <source>OS X:</source>
+        <translation>OS X:</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="295"/>
+        <location filename="../IAbout.ui" line="345"/>
         <source><b>Binaries:</b></source>
-        <translation><b>Binaries::</b></translation>
+        <translation><b>Binaries:</b></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="311"/>
+        <location filename="../IAbout.ui" line="374"/>
         <source><b>Contributors:</b></source>
-        <translation><b>Medewerkerss:</b></translation>
+        <translation><b>Medewerkers:</b></translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="318"/>
         <source>Christian Eichler (qms at christian-eichler.de)</source>
-        <translation>Christian Eichler (qms at christian-eichler.de)</translation>
+        <translation type="obsolete">Christian Eichler (qms at christian-eichler.de)</translation>
     </message>
     <message>
         <source>Translation:</source>
-        <translation type="vanished">Vertaling:</translation>
+        <translation type="obsolete">Vertaling:</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="208"/>
+        <location filename="../IAbout.ui" line="205"/>
         <source>Josef Latt</source>
         <translation>Josef Latt</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="215"/>
         <source>Spanish</source>
-        <translation>Spaans</translation>
+        <translation type="obsolete">Spaans</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="222"/>
+        <location filename="../IAbout.ui" line="258"/>
         <source>Jose Luis Domingo Lopez</source>
         <translation>Jose Luis Domingo Lopez</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="254"/>
+        <location filename="../IAbout.ui" line="338"/>
         <source>Ivo Kronenberg</source>
         <translation>Ivo Kronenberg</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="261"/>
+        <location filename="../IAbout.ui" line="331"/>
         <source>Helmut Schmidt</source>
         <translation>Helmut Schmidt</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="268"/>
         <source>Win64</source>
-        <translation>Win64</translation>
+        <translation type="obsolete">Win64</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="275"/>
         <source>OS X</source>
-        <translation>OS X</translation>
+        <translation type="obsolete">OS X</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="282"/>
+        <location filename="../IAbout.ui" line="354"/>
         <source>...and thanks to all Linux binary maintainers for doing a great job. Special thanks to Dan Horák and Bas Couwenberg for showing presence on the mailing list to discuss distribution related topics.</source>
         <translation>..en een dank naar alle Linux binarie beheerders voor het geleverde werk. Speciale dank aan  Dan Horák en Bas Couwenberg voor het tonen van hun aanwezigheid op de mailinglijst om de distributie-gerelateerde onderwerpen te bespreken.</translation>
     </message>
     <message>
         <source>Binaries:</source>
-        <translation type="vanished">Binaries:</translation>
+        <translation type="obsolete">Binaries:</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="332"/>
+        <location filename="../IAbout.ui" line="399"/>
         <source>This software is licensed under GPL3 or any later version</source>
         <translation>Deze software is gelicenseerd onder GPL3 of latere versies</translation>
     </message>
     <message>
-        <location filename="../IAbout.ui" line="339"/>
+        <location filename="../IAbout.ui" line="406"/>
         <source>© 2014 Oliver Eichler (oliver.eichler at gmx.de)</source>
         <translation>© 2014 Oliver Eichler (oliver.eichler at gmx.de)</translation>
     </message>
@@ -2632,6 +3964,14 @@ is geen geldig coordinaat definitie:
     </message>
 </context>
 <context>
+    <name>IColorChooser</name>
+    <message>
+        <location filename="../widgets/IColorChooser.ui" line="14"/>
+        <source>Dialog</source>
+        <translation>Dialoog</translation>
+    </message>
+</context>
+<context>
     <name>ICombineTrk</name>
     <message>
         <location filename="../gis/trk/ICombineTrk.ui" line="14"/>
@@ -2713,7 +4053,11 @@ is geen geldig coordinaat definitie:
 If you keep both parts of the track you have to create new ones. 
 
 If you want to keep just one half you can simply remove the points, or check this to create a new track.</source>
-        <translation type="unfinished"></translation>
+        <translation>Controleer eerst voordat dit in een nieuwe track opgelagen wordt. 
+
+Voor het opslaan van beide delen dienen er nieuwe tracks gemaakt te worden. 
+
+Als er alleen een halve track bewaard moet worden kunnen de overige punten verwijderd worden, of controleer dit bij het maken van de nieuwe track.</translation>
     </message>
     <message>
         <location filename="../gis/trk/ICutTrk.ui" line="67"/>
@@ -2722,6 +4066,58 @@ If you want to keep just one half you can simply remove the points, or check thi
     </message>
 </context>
 <context>
+    <name>IDB</name>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="60"/>
+        <source>The internal database format of '%1'' has changed. QMapShack will migrate your database, now. After the migration the database won't be usable with older versions of QMapShack. It is recommended to backup the database first.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="64"/>
+        <source>Migrate database...</source>
+        <translation>Migreren database...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="74"/>
+        <source>Failed to migrate '%1'.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="76"/>
+        <location filename="../gis/db/IDB.cpp" line="100"/>
+        <source>Error...</source>
+        <translation>Fout...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="85"/>
+        <source>The database version of '%1'' is more advanced as the one understood by your QMapShack installation. This won't work.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="88"/>
+        <source>Wrong database version...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDB.cpp" line="98"/>
+        <source>Failed to initialize '%1'.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>IDBMysql</name>
+    <message>
+        <location filename="../gis/db/IDBMysql.cpp" line="54"/>
+        <source>Password...</source>
+        <translation>Wachtwoord...</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/IDBMysql.cpp" line="54"/>
+        <source>Password for database '%1':</source>
+        <translation>Wachtwoord voor database '%1':</translation>
+    </message>
+</context>
+<context>
     <name>IDemPathSetup</name>
     <message>
         <location filename="../dem/IDemPathSetup.ui" line="14"/>
@@ -2755,7 +4151,7 @@ If you want to keep just one half you can simply remove the points, or check thi
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="50"/>
         <source><html><head/><body><p>Click to use current scale as minimum scale to display the map.</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Klik om huidige schaal als minimumschaal op kaart te tonen.</p></body></html></translation>
     </message>
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="53"/>
@@ -2766,17 +4162,17 @@ If you want to keep just one half you can simply remove the points, or check thi
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="74"/>
         <source><html><head/><body><p>Control the range of scale the map is displayed. Use the two buttons left and right to define the actual scale as either minimum or maximum scale.</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Instellen van het bereik van de schaal van de kaart wordt weergegeven. Gebruik de twee knoppen links en rechts om de omvang te definiëren als minimale of maximale omvang.</p></body></html></translation>
     </message>
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="87"/>
         <source><html><head/><body><p>Click to use current scale as maximum scale to display the map.</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Klik om huidige schaal als maximumschaal op kaart te tonen.</p></body></html></translation>
     </message>
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="118"/>
         <source>Hillshading</source>
-        <translation type="unfinished"></translation>
+        <translation>Hillshading</translation>
     </message>
     <message>
         <location filename="../dem/IDemPropSetup.ui" line="144"/>
@@ -2821,18 +4217,43 @@ If you want to keep just one half you can simply remove the points, or check thi
     <message>
         <location filename="../dem/IDemList.ui" line="118"/>
         <source>To add files with elevation data use File->Setup DEM Paths. </source>
-        <translation type="unfinished"></translation>
+        <translation>Om bestanden met hoogtegegevens toe te voegen gebruik Bestand ->Map DEM instellen. </translation>
     </message>
     <message>
         <location filename="../dem/IDemList.ui" line="131"/>
         <source>Use the context menu (right mouse button click on entry) to activate a file. Use drag-n-drop to move the activated file in the process order. </source>
-        <translation type="unfinished"></translation>
+        <translation>Gebruik het menu (rechter muisklik op item) om bestand te activeren. Gebruik selecteer en slepen om geactiveerde bestanden in volgorde te plaatsen.</translation>
     </message>
     <message>
         <location filename="../dem/IDemList.ui" line="156"/>
         <source>Activate</source>
         <translation>Activeer</translation>
     </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="165"/>
+        <source>Move Up</source>
+        <translation>Omhoog</translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="168"/>
+        <source>Hide DEM behind previous one</source>
+        <translation>Verberg DEM onder vorige</translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="177"/>
+        <source>Move down</source>
+        <translation>Omlaag</translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="180"/>
+        <source>Show DEM on top of next one</source>
+        <translation>Toon DEM op de volgende</translation>
+    </message>
+    <message>
+        <location filename="../dem/IDemList.ui" line="189"/>
+        <source>Reload DEM</source>
+        <translation>DEM herladen</translation>
+    </message>
 </context>
 <context>
     <name>IDetailsGeoCache</name>
@@ -2907,64 +4328,63 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation>Dialoog</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="44"/>
         <source>-</source>
-        <translation>-</translation>
+        <translation type="obsolete">-</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="69"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="132"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation><html><head/><body><p>Het waypoint was geimporteerd naar QMapShack en is aangepast. Het bevat geen orginele gegevens meer. Bekijk historie voor veranderingen. </p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="85"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="148"/>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
         <translation>Schrijfbeveiliging ingeschakeld. Klik op het slot om te kunnen bewerken.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="88"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="151"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="118"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="181"/>
         <source>Color</source>
         <translation>Kleur</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="139"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="202"/>
         <source>Border width</source>
         <translation>Lijndikte</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="153"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="216"/>
         <source>Style</source>
         <translation>Stijl</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="172"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="235"/>
         <source>Opacity</source>
         <translation>Transparantie</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="185"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="248"/>
         <source>Info</source>
         <translation>Info</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="214"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="277"/>
         <source>Points</source>
         <translation>Punten</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="241"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="304"/>
         <source>Position</source>
         <translation>Positie</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="250"/>
+        <location filename="../gis/ovl/IDetailsOvlArea.ui" line="313"/>
         <source>Hist.</source>
-        <translation>Hist.</translation>
+        <translation>Historie</translation>
     </message>
 </context>
 <context>
@@ -3020,7 +4440,7 @@ If you want to keep just one half you can simply remove the points, or check thi
     <message>
         <location filename="../gis/prj/IDetailsPrj.ui" line="135"/>
         <source>Rebuild diary.</source>
-        <translation type="unfinished"></translation>
+        <translation>Dagboek herindelen.</translation>
     </message>
 </context>
 <context>
@@ -3031,27 +4451,27 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation>Info</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="65"/>
+        <location filename="../gis/rte/IDetailsRte.ui" line="205"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="97"/>
+        <location filename="../gis/rte/IDetailsRte.ui" line="154"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation><html><head/><body><p>Het waypoint was geimporteerd naar QMapShack en is aangepast. Het bevat geen orginele gegevens meer. Bekijk historie voor veranderingen. </p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="113"/>
+        <location filename="../gis/rte/IDetailsRte.ui" line="170"/>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
         <translation>Schrijfbeveiliging ingeschakeld. Klik op het slot om te kunnen bewerken.</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="116"/>
+        <location filename="../gis/rte/IDetailsRte.ui" line="173"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/rte/IDetailsRte.ui" line="176"/>
+        <location filename="../gis/rte/IDetailsRte.ui" line="229"/>
         <source>Hist.</source>
         <translation>Hist.</translation>
     </message>
@@ -3074,160 +4494,248 @@ If you want to keep just one half you can simply remove the points, or check thi
     </message>
     <message>
         <source>Graph Control</source>
-        <translation type="vanished">Grafieken</translation>
+        <translation type="obsolete">Grafieken</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="533"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1026"/>
         <source>Profile</source>
         <translation>Profiel</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="702"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1467"/>
         <source>Speed</source>
         <translation>Snelheid</translation>
     </message>
     <message>
         <source>Track</source>
-        <translation type="vanished">Track</translation>
+        <translation type="obsolete">Track</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="163"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="277"/>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
         <translation>Schrijfbeveiliging ingeschakeld. Klik op het slot om te kunnen bewerken.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="166"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="280"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="445"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="474"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="549"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="578"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="682"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="708"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="737"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1047"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1076"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1108"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1144"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1173"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1205"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1241"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1270"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1302"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="202"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="255"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation><html><head/><body><p>Het waypoint was geimporteerd naar QMapShack en is aangepast. Het bevat geen orginele gegevens meer. Bekijk historie voor veranderingen. </p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="227"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="306"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="266"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="345"/>
         <source>Info</source>
         <translation>Info</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="298"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="377"/>
         <source>Style</source>
         <translation>Stijl</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="340"/>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="434"/>
         <source>from Data</source>
-        <translation>uit gegevens</translation>
+        <translation type="obsolete">uit gegevens</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="353"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="801"/>
         <source>Source</source>
         <translation>Bron</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="376"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="667"/>
         <source>Maximum</source>
         <translation>Maximum</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="405"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="442"/>
+        <source>Use/edit user defined visibility of arrows for this track</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="471"/>
+        <source>Use/edit system's visibility of arrows for all tracks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="527"/>
         <source>Minimum</source>
         <translation>Minimum</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="447"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="546"/>
+        <source>Use/edit user defined scale factor for this track</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="575"/>
+        <source>Use/edit system's default factor for all tracks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
         <source>Solid color</source>
-        <translation>Vaste kleur</translation>
+        <translation type="obsolete">Vaste kleur</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="642"/>
+        <source>x </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="534"/>
+        <source>Width</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="495"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="625"/>
+        <source>with arrows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="839"/>
         <source>Graphs</source>
         <translation>Grafieken</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="540"/>
         <source>Graph 3</source>
-        <translation>Grafiek 3</translation>
+        <translation type="obsolete">Grafiek 3</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="547"/>
         <source>Graph 2</source>
-        <translation>Grafiek 2</translation>
+        <translation type="obsolete">Grafiek 2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="554"/>
         <source>Graph 1</source>
-        <translation>Grafiek 1</translation>
+        <translation type="obsolete">Grafiek 1</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="852"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="872"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="958"/>
+        <source>max.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="991"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="998"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1012"/>
+        <source>min.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="679"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1044"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1141"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1238"/>
+        <source>User defined limits for this track</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="705"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1073"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1170"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1267"/>
+        <source>Automatic limits</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="734"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1105"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1202"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1299"/>
+        <source>User defined limits for all tracks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="788"/>
+        <source>Color</source>
+        <translation>Kleur</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="562"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1331"/>
         <source>Activity</source>
         <translation>Activiteit</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="607"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1372"/>
         <source>To differentiate the track statistics select an activity from the list for the complete track. Or select a part of the track to assign an activity.</source>
         <translation>Om de track statistieken te onderscheiden selecteer een activiteit uit de lijst voor de volledige track. Of selecteer een deel van de track om een activieteit toe te kennen.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="634"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1399"/>
         <source>Points</source>
         <translation>Punten</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="682"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1447"/>
         <source>Time</source>
         <translation>Tijd</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="687"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1452"/>
         <source>Ele.</source>
-        <translation>Hoogte.</translation>
+        <translation>Hoogte</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="692"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1457"/>
         <source>Delta</source>
         <translation>Delta</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="697"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1462"/>
         <source>Dist.</source>
         <translation>Afstand.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="707"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1472"/>
         <source>Slope</source>
         <translation>Helling</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="712"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1477"/>
         <source>Ascend</source>
         <translation>Stijging</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="717"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1482"/>
         <source>Descend</source>
         <translation>Daling</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="722"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1487"/>
         <source>Position</source>
         <translation>Positie</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="731"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1496"/>
         <source>Filter</source>
         <translation>Filter</translation>
     </message>
     <message>
-        <location filename="../gis/trk/IDetailsTrk.ui" line="768"/>
+        <location filename="../gis/trk/IDetailsTrk.ui" line="1533"/>
         <source>Hist.</source>
         <translation>Hist.</translation>
     </message>
@@ -3253,8 +4761,7 @@ If you want to keep just one half you can simply remove the points, or check thi
         <location filename="../gis/wpt/IDetailsWpt.ui" line="84"/>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="110"/>
         <location filename="../gis/wpt/IDetailsWpt.ui" line="136"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="186"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="265"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="328"/>
         <source>-</source>
         <translation>-</translation>
     </message>
@@ -3269,45 +4776,53 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation>Nabijheid:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="205"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="268"/>
         <source><html><head/><body><p>The waypoint was imported to QMapShack and was changed. It does not show the original data anymore. Please see history for changes. </p></body></html></source>
         <translation><html><head/><body><p>Het waypoint was geimporteerd naar QMapShack en is aangepast. Het bevat geen orginele gegevens meer. Bekijk historie voor veranderingen. </p></body></html></translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="221"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="284"/>
         <source>Toggle read only mode. You have to open the lock to edit the item.</source>
         <translation>Schrijfbeveiliging ingeschakeld. Klik op het slot om te kunnen bewerken.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="224"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="279"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="299"/>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="331"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="287"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="342"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="362"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="394"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="258"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="321"/>
         <source>Date/Time:</source>
         <translation>Datum/Tijd:</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="276"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="339"/>
         <source>Add images.</source>
         <translation>Afbeelding toevoegen.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="296"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="359"/>
         <source>Delete selected image.</source>
         <translation>Verwijder geselecteerde afbeelding.</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/IDetailsWpt.ui" line="350"/>
+        <location filename="../gis/wpt/IDetailsWpt.ui" line="413"/>
         <source>Hist.</source>
         <translation>Hist.</translation>
     </message>
 </context>
 <context>
+    <name>IDevice</name>
+    <message>
+        <location filename="../device/IDevice.cpp" line="204"/>
+        <source>There is another project with the same name. If you press 'ok' it will be removed and replaced.</source>
+        <translation>Er is al een ander project met dezelfde naam. Bij drukken op 'OK' zal deze overschreven worden.</translation>
+    </message>
+</context>
+<context>
     <name>IElevationDialog</name>
     <message>
         <location filename="../helpers/IElevationDialog.ui" line="14"/>
@@ -3359,6 +4874,34 @@ If you want to keep just one half you can simply remove the points, or check thi
     </message>
 </context>
 <context>
+    <name>IFilterDeleteExtension</name>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="14"/>
+        <source>Form</source>
+        <translation>Formulier</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="51"/>
+        <source><b>Remove Extension from all Track Points</b></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="63"/>
+        <source>Remove </source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="83"/>
+        <source>from all Track Points</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterDeleteExtension.ui" line="103"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+</context>
+<context>
     <name>IFilterDouglasPeuker</name>
     <message>
         <location filename="../gis/trk/filter/IFilterDouglasPeuker.ui" line="14"/>
@@ -3518,17 +5061,17 @@ If you want to keep just one half you can simply remove the points, or check thi
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="51"/>
         <source><b>Offset Elevation</b></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Hoogte aanpassen</b></translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="69"/>
         <source>Add offset of</source>
-        <translation type="unfinished"></translation>
+        <translation>Verander hoogte naar</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="95"/>
         <source>to track points elevation.</source>
-        <translation type="unfinished"></translation>
+        <translation>van trackpunt hoogte.</translation>
     </message>
     <message>
         <location filename="../gis/trk/filter/IFilterOffsetElevation.ui" line="115"/>
@@ -3581,33 +5124,206 @@ If you want to keep just one half you can simply remove the points, or check thi
         <source>...</source>
         <translation>...</translation>
     </message>
-</context>
-<context>
-    <name>IFilterSpeed</name>
+</context>
+<context>
+    <name>IFilterSpeed</name>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="14"/>
+        <source>Form</source>
+        <translation>Formulier</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="35"/>
+        <source><b>Change Speed</b></source>
+        <translation><b>Verander snelheid</b></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="44"/>
+        <source>Set speed to </source>
+        <translation>Zet snelheid op </translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="51"/>
+        <source> km/h</source>
+        <translation> km/u</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="102"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+</context>
+<context>
+    <name>IFilterSplitSegment</name>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="14"/>
+        <source>Form</source>
+        <translation>Formulier</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="51"/>
+        <source><html><head/><body><p><span style=" font-weight:600;">Split Segments into Tracks</span></p></body></html></source>
+        <translation><html><head/><body><p><span style=" font-weight:600;">Maak delen in een track</span></p></body></html></translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="63"/>
+        <source>Creates a new track for every segment within this track.</source>
+        <translation>Maakt een nieuwe track van delen in deze track.</translation>
+    </message>
+    <message>
+        <location filename="../gis/trk/filter/IFilterSplitSegment.ui" line="70"/>
+        <source>...</source>
+        <translation>...</translation>
+    </message>
+</context>
+<context>
+    <name>IFitDecoderState</name>
+    <message>
+        <location filename="../gis/fit/decoder/IFitDecoderState.cpp" line="32"/>
+        <source>FIT decoding error: Decoder not in correct state %1 after last data byte in file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>IGisItem</name>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="42"/>
+        <source>[no name]</source>
+        <translation>[geen naam]</translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="301"/>
+        <source>The item is not part of the project in the database.</source>
+        <translation>Het item is geen deel van het project in de database.</translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="307"/>
+        <source>The item is not in the database.</source>
+        <translation>Het item is niet in de database.</translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="313"/>
+        <source>The item might need to be saved</source>
+        <translation>Het item dient opgeslagen te worden</translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="397"/>
+        <source>Initial version.</source>
+        <translation>Orginele versie.</translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="505"/>
+        <source><h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press 'Ok'.</source>
+        <translation><h3>%1<h3>Dit element is waarschijnlijk alleen lezen omdat dit niet gemaakt is in QMapShack. Normaal hoeven geen gegevens aangepast te worden na het importeren.  Om toch aan te passen druk dan op 'OK'.</translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="506"/>
+        <source>Read Only Mode...</source>
+        <translation>Alleen lezen modus...</translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="670"/>
+        <location filename="../gis/IGisItem.cpp" line="729"/>
+        <source><h4>Description:</h4></source>
+        <translation><h4>Beschrijving:</h4></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="673"/>
+        <location filename="../gis/IGisItem.cpp" line="732"/>
+        <source><p>--- no description ---</p></source>
+        <translation><p>--- geen beschrijving ---</p></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="684"/>
+        <source><h4>Comment:</h4></source>
+        <translation><h4>Notitie:</h4></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="687"/>
+        <source><p>--- no comment ---</p></source>
+        <translation><p>--- geen notitie ---</p></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="698"/>
+        <location filename="../gis/IGisItem.cpp" line="743"/>
+        <source><h4>Links:</h4></source>
+        <translation><h4>Links:</h4></translation>
+    </message>
+    <message>
+        <location filename="../gis/IGisItem.cpp" line="701"/>
+        <location filename="../gis/IGisItem.cpp" line="746"/>
+        <source><p>--- no links ---</p></source>
+        <translation><p>--- geen links ---</p></translation>
+    </message>
+</context>
+<context>
+    <name>IGisProject</name>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="109"/>
+        <source>Save project?</source>
+        <translation>Project opslaan?</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="109"/>
+        <source><h3>%1</h3>The project was changed. Save before closing it?</source>
+        <translation><h3>%1</h3>Het project is veranderd. Voor het sluiten opslaan?</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="261"/>
+        <source>%1: Correlate tracks and waypoints.</source>
+        <translation>%1: Correlatie van tracks en waypointen.</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="271"/>
+        <source><h3>%1</h3>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project in the future?</source>
+        <translation><h3>%1</h3>Duurde dit te lang? Moet de correlatie van tracks en waypointen in dit project in de toekomst overgeslagen worden?</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="272"/>
+        <source>Canceled correlation...</source>
+        <translation>Correlatie geanuleerd...</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="312"/>
+        <source>Save "%1" to...</source>
+        <translation>Opslaan "%1" als...</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="423"/>
+        <source><br/>
+Filename: %1</source>
+        <translation><br/>
+Bestandsnaam: %1</translation>
+    </message>
+    <message>
+        <location filename="../gis/prj/IGisProject.cpp" line="428"/>
+        <source>Waypoints: %1</source>
+        <translation>Waypoints: %1</translation>
+    </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="14"/>
-        <source>Form</source>
-        <translation>Formulier</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="432"/>
+        <source>Tracks: %1</source>
+        <translation>Tracks: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="35"/>
-        <source><b>Change Speed</b></source>
-        <translation><b>Verander snelheid</b></translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="436"/>
+        <source>Routes: %1</source>
+        <translation>Routes: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="44"/>
-        <source>Set speed to </source>
-        <translation>Zet snelheid op </translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="440"/>
+        <source>Areas: %1</source>
+        <translation>Gebieden: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="51"/>
-        <source> km/h</source>
-        <translation> km/u</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="520"/>
+        <source>Are you sure you want to delete '%1' from project '%2'?</source>
+        <translation>Moet '%1' werkelijk verwijderd worden uit project '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/IFilterSpeed.ui" line="102"/>
-        <source>...</source>
-        <translation>...</translation>
+        <location filename="../gis/prj/IGisProject.cpp" line="521"/>
+        <source>Delete...</source>
+        <translation>Verwijderen...</translation>
     </message>
 </context>
 <context>
@@ -3624,10 +5340,15 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation>Naam</translation>
     </message>
     <message>
-        <location filename="../gis/IGisWidget.ui" line="133"/>
-        <source>To add a database do a right click on the database list above.</source>
+        <location filename="../gis/IGisWidget.ui" line="104"/>
+        <source>Age</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../gis/IGisWidget.ui" line="138"/>
+        <source>To add a database do a right click on the database list above.</source>
+        <translation>Om nieuwe database te maken doe een rechterklik op database erboven.</translation>
+    </message>
 </context>
 <context>
     <name>IGridSetup</name>
@@ -3864,7 +5585,7 @@ If you want to keep just one half you can simply remove the points, or check thi
     <message>
         <location filename="../IMainWindow.ui" line="373"/>
         <source>POI Text</source>
-        <translation type="unfinished"></translation>
+        <translation>POI tekst</translation>
     </message>
     <message>
         <location filename="../IMainWindow.ui" line="385"/>
@@ -3874,7 +5595,7 @@ If you want to keep just one half you can simply remove the points, or check thi
     <message>
         <location filename="../IMainWindow.ui" line="397"/>
         <source>Map Tool Tip</source>
-        <translation type="unfinished"></translation>
+        <translation>Map Tool Tip</translation>
     </message>
     <message>
         <location filename="../IMainWindow.ui" line="400"/>
@@ -3897,178 +5618,183 @@ If you want to keep just one half you can simply remove the points, or check thi
         <translation>Help</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="436"/>
+        <location filename="../IMainWindow.ui" line="430"/>
+        <source>F1</source>
+        <translation>F1</translation>
+    </message>
+    <message>
         <location filename="../IMainWindow.ui" line="439"/>
+        <location filename="../IMainWindow.ui" line="442"/>
         <source>Setup Map View</source>
         <translation>Kaartinstellingen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="448"/>
+        <location filename="../IMainWindow.ui" line="451"/>
         <source>Load GIS Data</source>
         <translation>GIS gegevens laden</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="451"/>
+        <location filename="../IMainWindow.ui" line="454"/>
         <source>Load projects from file</source>
         <translation>Project laden uit bestand</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="454"/>
+        <location filename="../IMainWindow.ui" line="457"/>
         <source>Ctrl+L</source>
         <translation>Ctrl+L</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="463"/>
+        <location filename="../IMainWindow.ui" line="466"/>
         <source>Save All GIS Data</source>
         <translation>GIS gegevens opslaan</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="466"/>
+        <location filename="../IMainWindow.ui" line="469"/>
         <source>Save all projects in the workspace</source>
         <translation>Sla alle projecten op in werkruimte</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="469"/>
+        <location filename="../IMainWindow.ui" line="472"/>
         <source>Ctrl+S</source>
         <translation>Ctrl+S</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="478"/>
+        <location filename="../IMainWindow.ui" line="481"/>
         <source>Setup Time Zone</source>
         <translation>Tijdzone instellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="487"/>
+        <location filename="../IMainWindow.ui" line="490"/>
         <source>Add empty project</source>
         <translation>Nieuw leeg project</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="499"/>
+        <location filename="../IMainWindow.ui" line="502"/>
         <source>Search Google</source>
         <translation>Zoeken Google</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="508"/>
+        <location filename="../IMainWindow.ui" line="511"/>
         <source>Close all projects</source>
         <translation>Sluit alle projecten</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="511"/>
+        <location filename="../IMainWindow.ui" line="514"/>
         <source>F8</source>
         <translation>F8</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="520"/>
+        <location filename="../IMainWindow.ui" line="523"/>
         <source>Setup Units</source>
         <translation>Eenheden instellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="529"/>
+        <location filename="../IMainWindow.ui" line="532"/>
         <source>Setup Workspace</source>
         <translation>Werkruimte instellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="532"/>
+        <location filename="../IMainWindow.ui" line="535"/>
         <source>Setup save on exit.</source>
         <translation>Oplaan bij afsluiten instellen.</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="541"/>
+        <location filename="../IMainWindow.ui" line="544"/>
         <source>Import Database from QLandkarte</source>
         <translation>Database van QLandkarte importeren</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="544"/>
+        <location filename="../IMainWindow.ui" line="547"/>
         <source>Import QLandkarte GT database</source>
         <translation>QLandkarte database importeren</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="553"/>
+        <location filename="../IMainWindow.ui" line="556"/>
         <source>VRT Builder</source>
-        <translation type="unfinished"></translation>
+        <translation>VRT maken</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="556"/>
+        <location filename="../IMainWindow.ui" line="559"/>
         <source>GUI front end to gdalbuildvrt</source>
-        <translation type="unfinished"></translation>
+        <translation>GUI front end naar gdalbuildvrt</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="565"/>
+        <location filename="../IMainWindow.ui" line="568"/>
         <source>Store Map View</source>
         <translation>Kaart opslaan</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="568"/>
+        <location filename="../IMainWindow.ui" line="571"/>
         <source>Write current active map and DEM list including the properties to a file</source>
-        <translation type="unfinished"></translation>
+        <translation>Schrijf huidige actieve kaart en DEM lijst inclusief de eigenschappen naar een bestand</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="577"/>
+        <location filename="../IMainWindow.ui" line="580"/>
         <source>Load Map View</source>
         <translation>Kaart laden</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="580"/>
+        <location filename="../IMainWindow.ui" line="583"/>
         <source>Restore view with active map and DEM list including the properties from a file</source>
-        <translation type="unfinished"></translation>
+        <translation>Herstel huidige actieve kaart en DEM lijst inclusief de eigenschappen naar een bestand</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="592"/>
+        <location filename="../IMainWindow.ui" line="595"/>
         <source>Ext. Profile</source>
-        <translation type="unfinished"></translation>
+        <translation>Ext. profiel</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="595"/>
+        <location filename="../IMainWindow.ui" line="598"/>
         <source>Ctrl+E</source>
         <translation>Ctrl+E</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="604"/>
+        <location filename="../IMainWindow.ui" line="607"/>
         <source>Close</source>
         <translation>Sluiten</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="607"/>
+        <location filename="../IMainWindow.ui" line="610"/>
         <source>Ctrl+Q</source>
         <translation>Ctrl+Q</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="616"/>
+        <location filename="../IMainWindow.ui" line="619"/>
         <source>Clone Map View</source>
         <translation>Kloon venster</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="619"/>
+        <location filename="../IMainWindow.ui" line="622"/>
         <source>Ctrl+Shift+T</source>
         <translation>Ctrl+Shift+T</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="628"/>
+        <location filename="../IMainWindow.ui" line="631"/>
         <source>Create Routino Database</source>
         <translation>Maak Routino database</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="637"/>
+        <location filename="../IMainWindow.ui" line="640"/>
         <source>Save(Print) Map Screenshot</source>
         <translation>Kaartdeel opslaan/afdrukken</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="640"/>
+        <location filename="../IMainWindow.ui" line="643"/>
         <source>Print a selected area of the map</source>
         <translation>Geselecteerde deel van kaart afdrukken</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="643"/>
+        <location filename="../IMainWindow.ui" line="646"/>
         <source>Ctrl+P</source>
         <translation>Ctrl+P</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="652"/>
+        <location filename="../IMainWindow.ui" line="655"/>
         <source>Setup Coord. Format</source>
         <translation>Coördinaat formaat instellen</translation>
     </message>
     <message>
-        <location filename="../IMainWindow.ui" line="655"/>
+        <location filename="../IMainWindow.ui" line="658"/>
         <source>Change the format coordinates are displayed</source>
         <translation>Getoonde coördinaat formaat aanpassen</translation>
     </message>
@@ -4088,7 +5814,7 @@ If you want to keep just one half you can simply remove the points, or check thi
     <message>
         <location filename="../map/IMapList.ui" line="116"/>
         <source>Use the context menu (right mouse button click on entry) to activate a map. Use drag-n-drop to move the activated map in the draw order. </source>
-        <translation type="unfinished"></translation>
+        <translation>Gebruik het menu (rechter muisklik op item) om kaart te activeren. Gebruik selecteer en slepen om geactiveerde kaarten in volgorde te plaatsen.</translation>
     </message>
     <message>
         <location filename="../map/IMapList.ui" line="129"/>
@@ -4102,6 +5828,31 @@ Ik wil de documentatie niet lezen!</translation>
         <source>Activate</source>
         <translation>Activeer</translation>
     </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="158"/>
+        <source>Move Up</source>
+        <translation>Omhoog</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="161"/>
+        <source>Hide map behind previous map</source>
+        <translation>Verberg DEM onder vorige kaart</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="170"/>
+        <source>Move down</source>
+        <translation>Omlaag</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="173"/>
+        <source>Show map on top of next map</source>
+        <translation>Toon DEM op de volgende kaart</translation>
+    </message>
+    <message>
+        <location filename="../map/IMapList.ui" line="182"/>
+        <source>Reload Maps</source>
+        <translation>Kaarten herladen</translation>
+    </message>
 </context>
 <context>
     <name>IMapPathSetup</name>
@@ -4151,7 +5902,7 @@ Ik wil de documentatie niet lezen!</translation>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="50"/>
         <source><html><head/><body><p>Click to use current scale as minimum scale to display the map.</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Klik om huidige schaal als minimumschaal op kaart te tonen.</p></body></html></translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="53"/>
@@ -4162,12 +5913,12 @@ Ik wil de documentatie niet lezen!</translation>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="74"/>
         <source><html><head/><body><p>Control the range of scale the map is displayed. Use the two buttons left and right to define the actual scale as either minimum or maximum scale.</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Instellen van het bereik van de schaal van de kaart wordt weergegeven. Gebruik de twee knoppen links en rechts om de omvang te definiëren als minimale of maximale omvang.</p></body></html></translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="87"/>
         <source><html><head/><body><p>Click to use current scale as maximum scale to display the map.</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Klik om huidige schaal als maximumschaal op kaart te tonen.</p></body></html></translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="137"/>
@@ -4187,7 +5938,7 @@ Ik wil de documentatie niet lezen!</translation>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="196"/>
         <source>Cache Size (MB)</source>
-        <translation>Ceheugen grootte</translation>
+        <translation>Cache grootte (MB)</translation>
     </message>
     <message>
         <location filename="../map/IMapPropSetup.ui" line="216"/>
@@ -4242,62 +5993,62 @@ Ik wil de documentatie niet lezen!</translation>
 <context>
     <name>IMouseEditLine</name>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="255"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="269"/>
         <source><b>New Line</b><br/>Move the mouse and use the left mouse button to drop points. When done use the right mouse button to stop.<br/></source>
         <translation><b>Nieuwe lijn</b><br/>Verplaats de muis en gebruik linker muisknop om een punt te plaatsen. Gebruik rechter muisknop om te stoppen.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="302"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="316"/>
         <source><b>Delete Point</b><br/>Move the mouse close to a point and press the left button to delete it.<br/></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Verwijder punt</b><br/>Beweeg de muis dicht bij een punt en druk op linkermuisknop om te verwijderen.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="311"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="325"/>
         <source><b>Select Range of Points</b><br/>Left click on first point to start selection. Left click second point to complete selection and choose from options. Use the right mouse button to cancel.<br/></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Selecteer reeks punten</b><br/>Klik op eerste punt van reeks. Klik op laatste punt van reeks en selecteer een optie. Gebruik rechter muisknop om te annuleren.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="320"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="334"/>
         <source><b>Move Point</b><br/>Move the mouse close to a point and press the left button to make it stick to the cursor. Move the mouse to move the point. Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Verplaats punt</b><br/>Beweeg de muis dicht bij een punt en druk op linkermuisknop om het punt te laten plakken. Beweeg de muis om het punt te verplaatsen. Laat het punt los met linker muisknop. Gebruik rechterknop om te annuleren.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="329"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="343"/>
         <source><b>Add Point</b><br/>Move the mouse close to a line segment and press the left button to add a point. The point will stick to the cursor and you can move it.  Drop the point by a left click. Use the right mouse button to cancel.<br/></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Punt toevoegen</b><br/>Beweeg de muis dicht bij een lijndeel en druk op linkermuisknop om het punt te laten plakken. Beweeg de muis om het punt te verplaatsen. Laat het punt los met linker muisknop. Gebruik rechterknop om te annuleren.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="338"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="352"/>
         <source><b>No Routing</b><br/>All points will be connected with a straight line.<br/></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Geen routing</b><br/>Alle punten zullen met rechte lijnen verbonden worden.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="343"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="357"/>
         <source><b>Auto Routing</b><br/>The current router setup is used to derive a route between points. <b>Note:</b> The selected router must be able to route on-the-fly. Offline routers usually can do, online routers can't.<br/></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Auto routing</b><br/>De huidige instelling wordt gebruikt voor berekening van een route tussen punten. <b>Notitie:</b>De geselecteerd route moet zelf routes kunnen maken. Offline routers kunnen dit online routers meestal niet.<br/></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="348"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="362"/>
         <source><b>Vector Routing</b><br/>Connect points with a line from a loaded vector map if possible.<br/></source>
-        <translation type="unfinished"></translation>
+        <translation><b>Vector routing</b><br/>Verbind punten met een lijn op een geladen vector kaart indien mogelijk.</br></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="517"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="542"/>
         <source><b>%1 Metrics</b></source>
         <translation><b>%1 gegevens</b></translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="520"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="545"/>
         <source>Distance:</source>
         <translation>Afstand:</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="522"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="547"/>
         <source>Ascend:</source>
         <translation>Stijging:</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IMouseEditLine.cpp" line="524"/>
+        <location filename="../mouse/line/IMouseEditLine.cpp" line="549"/>
         <source>Descend:</source>
         <translation>Daling:</translation>
     </message>
@@ -4319,27 +6070,27 @@ Ik wil de documentatie niet lezen!</translation>
 <context>
     <name>IPlot</name>
     <message>
-        <location filename="../plot/IPlot.cpp" line="91"/>
+        <location filename="../plot/IPlot.cpp" line="93"/>
         <source>Reset Zoom</source>
-        <translation type="unfinished"></translation>
+        <translation>Herstel zoom</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="92"/>
+        <location filename="../plot/IPlot.cpp" line="94"/>
         <source>Stop Range</source>
-        <translation type="unfinished"></translation>
+        <translation>Stop bereik</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="93"/>
+        <location filename="../plot/IPlot.cpp" line="95"/>
         <source>Save...</source>
         <translation>Opslaan...</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="613"/>
+        <location filename="../plot/IPlot.cpp" line="638"/>
         <source>No or bad data.</source>
         <translation>Geen of ontbrekende gegevens.</translation>
     </message>
     <message>
-        <location filename="../plot/IPlot.cpp" line="1200"/>
+        <location filename="../plot/IPlot.cpp" line="1230"/>
         <source>Select output file</source>
         <translation>Selecteer bestand</translation>
     </message>
@@ -4376,19 +6127,29 @@ of
         <translation>Kaart afdrukken...</translation>
     </message>
     <message>
-        <location filename="../print/IPrintDialog.ui" line="50"/>
+        <location filename="../print/IPrintDialog.ui" line="79"/>
+        <source>When printing online maps make sure that the map has been loaded into the cache for the extent to be printed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../print/IPrintDialog.ui" line="60"/>
         <source>Save</source>
         <translation>Opslaan</translation>
     </message>
     <message>
-        <location filename="../print/IPrintDialog.ui" line="69"/>
-        <location filename="../print/IPrintDialog.ui" line="82"/>
-        <location filename="../print/IPrintDialog.ui" line="131"/>
+        <location filename="../print/IPrintDialog.ui" line="37"/>
+        <source>When saving online maps make sure that the map has been loaded into the cache for the extent to be saved.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../print/IPrintDialog.ui" line="89"/>
+        <location filename="../print/IPrintDialog.ui" line="102"/>
+        <location filename="../print/IPrintDialog.ui" line="151"/>
         <source>TextLabel</source>
         <translation>Benaming</translation>
     </message>
     <message>
-        <location filename="../print/IPrintDialog.ui" line="98"/>
+        <location filename="../print/IPrintDialog.ui" line="118"/>
         <source>Print</source>
         <translation>Afdrukken</translation>
     </message>
@@ -4581,7 +6342,7 @@ of
     <message>
         <location filename="../gis/rte/router/IRouterRoutino.ui" line="52"/>
         <source>Add paths with Routino database.</source>
-        <translation type="unfinished"></translation>
+        <translation>Map toevoegen met Routino database.</translation>
     </message>
     <message>
         <location filename="../gis/rte/router/IRouterRoutino.ui" line="55"/>
@@ -4596,7 +6357,7 @@ of
     <message>
         <location filename="../gis/rte/router/IRouterRoutino.ui" line="131"/>
         <source>To use offline routing you need to define paths to local routing data. Use the setup tool button to register a path.</source>
-        <translation type="unfinished"></translation>
+        <translation>Om offline routeing te gebruiken moet een map met gegevens gemaakt worden. Gebruik de setup toolknop om map te maken.</translation>
     </message>
 </context>
 <context>
@@ -4662,7 +6423,7 @@ of
     <message>
         <location filename="../tool/IRoutinoDatabaseBuilder.ui" line="100"/>
         <source>File Prefix</source>
-        <translation type="unfinished"></translation>
+        <translation>Bestandsextentie</translation>
     </message>
 </context>
 <context>
@@ -4673,124 +6434,124 @@ of
         <translation>Formulier</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="53"/>
-        <source>Save to orignal</source>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="40"/>
+        <source>Save to original</source>
         <translation>Opslaan als origineel</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="60"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="47"/>
         <source>Save as new</source>
         <translation>Opslaan als nieuw</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="67"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="54"/>
         <source>Abort</source>
         <translation>Annuleren</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="102"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="89"/>
         <source>Move points. (Ctrl+M)</source>
         <translation>Verplaats punten. (Ctrl+M)</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="105"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="131"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="154"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="177"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="313"/>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="330"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="92"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="118"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="141"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="164"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="300"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="317"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="112"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="99"/>
         <source>Ctrl+M</source>
         <translation>Ctrl+M</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="128"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="115"/>
         <source>Add new points. (Ctrl++)</source>
         <translation>Maak nieuwe punten. (Ctrl++)</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="138"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="125"/>
         <source>Ctrl++</source>
         <translation>Ctrl++</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="151"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="138"/>
         <source>Select a range of points. (Ctrl+R)</source>
         <translation>Selecteer een reeks punten. (Ctrl+R)</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="161"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="148"/>
         <source>Ctrl+R</source>
         <translation>Ctrl+R</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="174"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="161"/>
         <source>Delete a point. (Ctrl+D)</source>
         <translation>Verwijder een punt. (Ctrl+D)</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="184"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="171"/>
         <source>Ctrl+D</source>
         <translation>Ctrl+D</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="228"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="215"/>
         <source>No auto-routing or line snapping (Ctrl+O)</source>
-        <translation type="unfinished"></translation>
+        <translation>Geen auto-routing of startlijn (Ctrl+O)</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="231"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="218"/>
         <source>0</source>
         <translation>O</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="238"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="225"/>
         <source>Ctrl+O</source>
         <translation>Ctrl+O</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="251"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="238"/>
         <source>Use auto-routing to between points. (Ctrl+A)</source>
-        <translation type="unfinished"></translation>
+        <translation>Gebruik auto-routing tussen punten. (Ctrl+A)</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="254"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="241"/>
         <source>A</source>
         <translation>A</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="261"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="248"/>
         <source>Ctrl+A</source>
         <translation>Ctrl+A</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="274"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="261"/>
         <source>Snap line along lines of a vector map. (Ctrl+V)</source>
-        <translation type="unfinished"></translation>
+        <translation>Start de lijn langs een lijn van een vector kaart. (Ctrl+V)</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="277"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="264"/>
         <source>V</source>
         <translation>V</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="284"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="271"/>
         <source>Ctrl+V</source>
         <translation>Ctrl+V</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="310"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="297"/>
         <source>Undo last change</source>
-        <translation type="unfinished"></translation>
+        <translation>Wis laatste verandering</translation>
     </message>
     <message>
-        <location filename="../mouse/line/IScrOptEditLine.ui" line="327"/>
+        <location filename="../mouse/line/IScrOptEditLine.ui" line="314"/>
         <source>Redo last change</source>
-        <translation type="unfinished"></translation>
+        <translation>Herplaats laatste verandering</translation>
     </message>
 </context>
 <context>
@@ -4855,11 +6616,11 @@ of
     <message>
         <location filename="../mouse/line/IScrOptRangeLine.ui" line="34"/>
         <source><html><head/><body><p>Calculate a route between the first and last selected point.</p></body></html></source>
-        <translation type="unfinished"></translation>
+        <translation><html><head/><body><p>Bereken een route tussen het eerste en laatst geselecteerde punt..</p></body></html></translation>
     </message>
     <message>
         <source>Caclculate a route between the first and last selected point.</source>
-        <translation type="vanished">Bereken een route tussen eerste en laatste gecelecteerde punt.</translation>
+        <translation type="obsolete">Bereken een route tussen eerste en laatste gecelecteerde punt.</translation>
     </message>
 </context>
 <context>
@@ -5034,7 +6795,7 @@ of
     </message>
     <message>
         <source>Cut track at selected point into two tracks.</source>
-        <translation type="vanished">Knip track op geselecteerde punt in 2 tracks.</translation>
+        <translation type="obsolete">Knip track op geselecteerde punt in 2 tracks.</translation>
     </message>
     <message>
         <location filename="../gis/trk/IScrOptTrk.ui" line="196"/>
@@ -5117,54 +6878,62 @@ of
     </message>
 </context>
 <context>
+    <name>ISelectActivityColor</name>
+    <message>
+        <location filename="../gis/trk/ISelectActivityColor.ui" line="14"/>
+        <source>Form</source>
+        <translation>Formulier</translation>
+    </message>
+</context>
+<context>
     <name>ISelectCopyAction</name>
     <message>
         <location filename="../helpers/ISelectCopyAction.ui" line="14"/>
         <source>Copy item...</source>
-        <translation type="unfinished"></translation>
+        <translation>Element kopiëren...</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="23"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="29"/>
         <source>Replace existing item</source>
-        <translation type="unfinished"></translation>
+        <translation>Vervang bestand element</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="30"/>
-        <location filename="../helpers/ISelectCopyAction.ui" line="40"/>
-        <location filename="../helpers/ISelectCopyAction.ui" line="67"/>
-        <location filename="../helpers/ISelectCopyAction.ui" line="77"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="36"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="46"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="79"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="89"/>
         <source>TextLabel</source>
         <translation>Benaming</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="60"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="72"/>
         <source>Do not copy item</source>
-        <translation type="unfinished"></translation>
+        <translation>Element niet kopiëren</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="97"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="115"/>
         <source>Create a clone</source>
         <translation>Maak een kloon</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="104"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="122"/>
         <source>Replace with:</source>
-        <translation type="unfinished"></translation>
+        <translation>Vervang door:</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="111"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="129"/>
         <source>Keep item:</source>
-        <translation type="unfinished"></translation>
+        <translation>Behoud element:</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="118"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="136"/>
         <source>The clone's name will be appended with '_Clone'</source>
         <translation>De naam van de kloon zal aangeduid worden als '_Kloon'</translation>
     </message>
     <message>
-        <location filename="../helpers/ISelectCopyAction.ui" line="135"/>
+        <location filename="../helpers/ISelectCopyAction.ui" line="153"/>
         <source>And for all other items, too.</source>
-        <translation type="unfinished"></translation>
+        <translation>En ook voor alle andere elementen.</translation>
     </message>
 </context>
 <context>
@@ -5172,7 +6941,7 @@ of
     <message>
         <location filename="../gis/db/ISelectDBFolder.ui" line="14"/>
         <source>Select Parent Folder...</source>
-        <translation type="unfinished"></translation>
+        <translation>Selecteer map...</translation>
     </message>
     <message>
         <location filename="../gis/db/ISelectDBFolder.ui" line="26"/>
@@ -5221,42 +6990,52 @@ of
 <context>
     <name>ISelectSaveAction</name>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="14"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="20"/>
         <source>Copy item...</source>
-        <translation type="unfinished"></translation>
+        <translation>Element kopiëren...</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="23"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="35"/>
         <source>Replace existing item</source>
-        <translation type="unfinished"></translation>
+        <translation>Vervang bestand element</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="87"/>
+        <source>Add a clone</source>
+        <translation>Maak een kloon</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="100"/>
+        <source>The clone's name will be appended with '_Clone'</source>
+        <translation>De naam van de kloon zal aangeduid worden als '_Kloon'</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="30"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="171"/>
         <source>Replace with:</source>
-        <translation type="unfinished"></translation>
+        <translation>Vervang door:</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="37"/>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="47"/>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="81"/>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="91"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="42"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="68"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="130"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="140"/>
         <source>TextLabel</source>
         <translation>Benaming</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="67"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="61"/>
         <source>Do not replace item</source>
-        <translation type="unfinished"></translation>
+        <translation>Vervang element niet</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="74"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="123"/>
         <source>Use item:</source>
-        <translation type="unfinished"></translation>
+        <translation>Gebruik element:</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISelectSaveAction.ui" line="111"/>
+        <location filename="../gis/db/ISelectSaveAction.ui" line="116"/>
         <source>And for all other items, too.</source>
-        <translation type="unfinished"></translation>
+        <translation>En ook voor alle andere elementen.</translation>
     </message>
 </context>
 <context>
@@ -5267,33 +7046,91 @@ of
         <translation>Database toevoegen...</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="25"/>
         <source>File</source>
-        <translation>Bestand</translation>
+        <translation type="obsolete">Bestand</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="32"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="68"/>
         <source>-</source>
         <translation>-</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="39"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="25"/>
         <source>Name</source>
         <translation>Naam </translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="46"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="252"/>
+        <source><p align="justify"><span style=" font-weight:600;">Caution!</span> It is recommended to leave the password blank, as QMapShack will store it as plain text. If you don't give a password you will be asked for it on each startup.</p></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="239"/>
+        <source>Do not use a password.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="153"/>
+        <source>SQLite</source>
+        <translation>SQLite</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="115"/>
+        <source>MySQL</source>
+        <translation>MySQL</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="181"/>
+        <source>Server</source>
+        <translation>Server</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="193"/>
+        <source>Port</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="206"/>
+        <source>00000</source>
+        <translation>O {00000?}</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="215"/>
+        <source>User</source>
+        <translation>Gebruiker</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="225"/>
+        <source>Password</source>
+        <translation>Wachtwoord</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="275"/>
+        <source><b>Port:</b> Leave the port field empty to use the default port.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source><html><head/><body><p align="justify"><span style=" font-weight:600;">Caution!</span> It is recommended to leave the password blank, as QMapShack will store it as plain text. If you don't give a password you will be asked for it on each startup.</p></body></html></source>
+        <translation type="obsolete"><html><head/><body><p align="justify"><span style=" font-weight:600;">Caution!</span>Het is aanbevolen het wachtwoord leeg te laten, omdat dit als gewone tekst opgeslagen wordt.. Bij leeg laten van wachtwoord zal dit bij elke opstart gevraagd worden.</p></body></html></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="61"/>
+        <source>File:</source>
+        <translation>Bestand:</translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupDatabase.ui" line="75"/>
         <source>Add new database.</source>
         <translation>Maak nieuwe database.</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="49"/>
-        <location filename="../gis/db/ISetupDatabase.ui" line="63"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="78"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="92"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../gis/db/ISetupDatabase.ui" line="60"/>
+        <location filename="../gis/db/ISetupDatabase.ui" line="89"/>
         <source>Open existing database.</source>
         <translation>Open bestaande database.</translation>
     </message>
@@ -5382,6 +7219,16 @@ of
         <source>minutes</source>
         <translation>minuten</translation>
     </message>
+    <message>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="56"/>
+        <source>listen for database changes from other instances of QMapShack. On port</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../gis/db/ISetupWorkspace.ui" line="63"/>
+        <source>00000</source>
+        <translation>O {00000?}</translation>
+    </message>
 </context>
 <context>
     <name>ITextEditWidget</name>
@@ -5569,36 +7416,40 @@ of
 <context>
     <name>IToolShell</name>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="44"/>
+        <location filename="../tool/IToolShell.cpp" line="45"/>
         <source>Execution of external program `%1` failed: </source>
-        <translation type="unfinished"></translation>
+        <translation>Starten van extern programma `%1` mislukt:</translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="48"/>
+        <location filename="../tool/IToolShell.cpp" line="49"/>
         <source>Process cannot be started.
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Het proces kan niet gestart worden.
+</translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="49"/>
+        <location filename="../tool/IToolShell.cpp" line="50"/>
         <source>Make sure the required packages are installed, `%1` exists and is executable.
 </source>
-        <translation type="unfinished"></translation>
+        <translation>De benodigde pakketten dienen geïnstalleerd te zijn, `%1` bestaat en is uitvoerbaar.
+</translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="53"/>
+        <location filename="../tool/IToolShell.cpp" line="54"/>
         <source>External process crashed.
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Extern proces is vast gelopen.
+</translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="57"/>
+        <location filename="../tool/IToolShell.cpp" line="58"/>
         <source>An unknown error occurred.
 </source>
-        <translation type="unfinished"></translation>
+        <translation>Een onbekende fout is opgetreden.
+</translation>
     </message>
     <message>
-        <location filename="../tool/IToolShell.cpp" line="148"/>
+        <location filename="../tool/IToolShell.cpp" line="149"/>
         <source>!!! failed !!!
 </source>
         <translation>!!! Mislukt !!!
@@ -5606,6 +7457,28 @@ of
     </message>
 </context>
 <context>
+    <name>IUnit</name>
+    <message>
+        <location filename="../units/IUnit.cpp" line="735"/>
+        <location filename="../units/IUnit.cpp" line="741"/>
+        <source>Error</source>
+        <translation>Fout</translation>
+    </message>
+    <message>
+        <location filename="../units/IUnit.cpp" line="735"/>
+        <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
+        <translation>Verkeerde invoer. Moet zijn: 
+"[N|Z] ddd mm.sss [W|O] ddd mm.sss"
+of
+"[N|Z] ddd.ddd [W|O] ddd.ddd"</translation>
+    </message>
+    <message>
+        <location filename="../units/IUnit.cpp" line="741"/>
+        <source>Position values out of bounds. </source>
+        <translation>Positiewaarden vallen buiten bereik. </translation>
+    </message>
+</context>
+<context>
     <name>IUnitsSetup</name>
     <message>
         <location filename="../units/IUnitsSetup.ui" line="14"/>
@@ -5644,948 +7517,793 @@ of
 <context>
     <name>QObject</name>
     <message>
-        <location filename="../device/CDeviceGarmin.cpp" line="204"/>
         <source>Picture%1</source>
-        <translation>Afbeelding%1</translation>
+        <translation type="obsolete">Afbeelding%1</translation>
     </message>
     <message>
-        <location filename="../device/IDevice.cpp" line="204"/>
         <source>There is another project with the same name. If you press 'ok' it will be removed and replaced.</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Er is al een ander project met dezelfde naam. Bij drukken op 'OK' zal deze overschreven worden.</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="436"/>
         <source>Are you sure you want to delete '%1' from folder '%2'?</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Moet '%1' uit map '%2' verwijderd worden?</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListDB.cpp" line="437"/>
-        <location filename="../gis/prj/IGisProject.cpp" line="424"/>
         <source>Delete...</source>
-        <translation>Verwijder...</translation>
+        <translation type="obsolete">Verwijderen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1098"/>
         <source>Delete project...</source>
-        <translation>Project verwijderen...</translation>
+        <translation type="obsolete">Project verwijderen...</translation>
     </message>
     <message>
-        <location filename="../gis/CGisListWks.cpp" line="1098"/>
         <source>Do you really want to delete %1?</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Moet %1 werkelijk verwijderd worden?</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderDatabase.cpp" line="28"/>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="30"/>
         <source>All your data grouped by folders.</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Alle gegevens gegroepeerd per map.</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="61"/>
         <source>Lost & Found (%1)</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Lost & Found (%1)</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBFolderLostFound.cpp" line="66"/>
-        <location filename="../gis/db/CLostFoundProject.cpp" line="39"/>
         <source>Lost & Found</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Lost & Found</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="158"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="222"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="95"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="159"/>
         <source>Save GIS data to...</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Sla GIS gegevens op naar...</translation>
+    </message>
+    <message>
+        <source>The item %1 has been changed by %2 (%3). 
+
+To solve this conflict you can create and save a clone, force your version or drop your version and take the one from the database</source>
+        <translation type="obsolete">Het item %1 is verand door %2 (%3). 
+
+Om dit conflict op te lossen kan een kloon gemaakt en opgelagen worden, forceer huidige versie of verwijder deze versie en kies een ander uit de database</translation>
+    </message>
+    <message>
+        <source>Conflict with database...</source>
+        <translation type="obsolete">Conflict met database...</translation>
+    </message>
+    <message>
+        <source>Clone && Save</source>
+        <translation type="obsolete">Kloon && Opslaan</translation>
+    </message>
+    <message>
+        <source>Force Save</source>
+        <translation type="obsolete">Forceer opslaan</translation>
+    </message>
+    <message>
+        <source>Take remote</source>
+        <translation type="obsolete">Neem huidige</translation>
     </message>
     <message>
-        <location filename="../gis/db/CDBProject.cpp" line="262"/>
         <source>Save ...</source>
-        <translation>Opslaan...</translation>
+        <translation type="obsolete">Opslaan...</translation>
+    </message>
+    <message>
+        <source>There was an unexpected database error:
+
+%1</source>
+        <translation type="obsolete">Er is een onverwachte database fout opgetreden:
+
+%1</translation>
+    </message>
+    <message>
+        <source>The project '%1' is about to update itself from the database. However there are changes not saved.</source>
+        <translation type="obsolete">Het project '%1' zal geupdated worden met de database.Er zijn nog veranderingen niet opgeslagen.</translation>
+    </message>
+    <message>
+        <source>Save changes?</source>
+        <translation type="obsolete">Veranderingen opslaan?</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="98"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="144"/>
         <source>Failed to open...</source>
-        <translation>Openen mislukt...</translation>
+        <translation type="obsolete">Openen mislukt...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="98"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="48"/>
-        <location filename="../gis/qms/CQmsProject.cpp" line="144"/>
         <source>Failed to open %1</source>
-        <translation>Openen mislukt-%1</translation>
+        <translation type="obsolete">Openen mislukt-%1</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="111"/>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="120"/>
         <source>Failed to read...</source>
-        <translation>Lezen mislukt...</translation>
+        <translation type="obsolete">Lezen mislukt...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="111"/>
         <source>Failed to read: %1
 line %2, column %3:
  %4</source>
-        <translation>Lezen mislukt: %1
+        <translation type="obsolete">Lezen mislukt: %1
 lijn %2, kolom %3:
  %4</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="120"/>
         <source>Not a GPX file: </source>
-        <translation>Geen GPX bestand:</translation>
+        <translation type="obsolete">Geen GPX bestand:</translation>
+    </message>
+    <message>
+        <source>Failed to load file %1...</source>
+        <translation type="obsolete">Kan bestand %1 niet laden...</translation>
+    </message>
+    <message>
+        <source>Not a GPX file: %1</source>
+        <translation type="obsolete">Geen GPX bestand: %1</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="286"/>
         <source>File exists ...</source>
-        <translation>Bestand bestaat al...</translation>
+        <translation type="obsolete">Bestand bestaat al...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="287"/>
         <source>The file exists and it has not been created by QMapShack. If you press 'yes' all data in this file will be lost. Even if this file contains GPX data and has been loaded by QMapShack, QMapShack might not be able to load and store all elements of this file.  Those elements will be lost. I recommend to use another file. <b>Do you really want to overwrite the file?</b></source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Dit bestand bestaat al en is niet in QMapShack gemaakt. Wanneer op 'Ja' geklikt wordt zullen er gegevens verloren gaan. Alhoewel QMapShack dit GPX bestand kan openen is het mogelijk dat niet alle elementen opgeslagen kunnen worden. Geadviseerd wordt om een ander bestand te kiezen. <b>Moet dit bestand werkelijk overschreven worden?<b/></translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="395"/>
         <source>Failed to create file '%1'</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Maken bestand mislukt '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="405"/>
         <source>Failed to write file '%1'</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Schrijven bestand mislukt '%1'</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/CGpxProject.cpp" line="410"/>
         <source>Saving GIS data failed...</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Opslaan GIS gegevens mislukt...</translation>
     </message>
     <message>
         <source>Saveing GIS data failed...</source>
-        <translation type="vanished">Opslaan GIS gegevens mislukt...</translation>
+        <translation type="obsolete">Opslaan GIS gegevens mislukt...</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="582"/>
         <source>Archived</source>
-        <translation>Gearchiveerd</translation>
+        <translation type="obsolete">Gearchiveerd</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="586"/>
         <source>Available</source>
-        <translation>Beschikbaar</translation>
+        <translation type="obsolete">Beschikbaar</translation>
     </message>
     <message>
-        <location filename="../gis/gpx/serialization.cpp" line="590"/>
         <source>Not Available</source>
-        <translation>Niet beschikbaar</translation>
+        <translation type="obsolete">Niet beschikbaar</translation>
+    </message>
+    <message>
+        <source>Unknown</source>
+        <translation type="obsolete">Onbekend</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="42"/>
         <source>[no name]</source>
-        <translation>[geen naam]</translation>
+        <translation type="obsolete">[geen naam]</translation>
+    </message>
+    <message>
+        <source>The item is not part of the project in the database.</source>
+        <translation type="obsolete">Het item is geen deel van het project in de database.</translation>
+    </message>
+    <message>
+        <source>The item is not in the database.</source>
+        <translation type="obsolete">Het item is niet in de database.</translation>
+    </message>
+    <message>
+        <source>The item might need to be saved</source>
+        <translation type="obsolete">Het item dient opgeslagen te worden</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="345"/>
         <source>Initial version.</source>
-        <translation>Orginele versie.</translation>
+        <translation type="obsolete">Orginele versie.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="453"/>
         <source><h3>%1</h3> This element is probably read-only because it was not created within QMapShack. Usually you should not want to change imported data. But if you think that is ok press 'Ok'.</source>
-        <translation><h3>%1<h3>Dit element is waarschijnlijk alleen lezen omdat dit niet gemaakt is in QMapShack. Normaal hoeven geen gegevens aangepast te worden na het importeren.  Om toch aan te passen druk dan op 'OK'.</translation>
+        <translation type="obsolete"><h3>%1<h3>Dit element is waarschijnlijk alleen lezen omdat dit niet gemaakt is in QMapShack. Normaal hoeven geen gegevens aangepast te worden na het importeren.  Om toch aan te passen druk dan op 'OK'.</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="454"/>
         <source>Read Only Mode...</source>
-        <translation>Alleen lezen modus...</translation>
+        <translation type="obsolete">Alleen lezen modus...</translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="601"/>
-        <location filename="../gis/IGisItem.cpp" line="660"/>
         <source><h4>Description:</h4></source>
-        <translation><h4>Beschrijving:</h4></translation>
+        <translation type="obsolete"><h4>Beschrijving:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="604"/>
-        <location filename="../gis/IGisItem.cpp" line="663"/>
         <source><p>--- no description ---</p></source>
-        <translation><p>--- geen beschrijving ---</p></translation>
+        <translation type="obsolete"><p>--- geen beschrijving ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="615"/>
         <source><h4>Comment:</h4></source>
-        <translation><h4>Notitie:</h4></translation>
+        <translation type="obsolete"><h4>Notitie:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="618"/>
         <source><p>--- no comment ---</p></source>
-        <translation><p>--- geen notitie ---</p></translation>
+        <translation type="obsolete"><p>--- geen notitie ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="629"/>
-        <location filename="../gis/IGisItem.cpp" line="674"/>
         <source><h4>Links:</h4></source>
-        <translation><h4>Links:</h4></translation>
+        <translation type="obsolete"><h4>Links:</h4></translation>
     </message>
     <message>
-        <location filename="../gis/IGisItem.cpp" line="632"/>
-        <location filename="../gis/IGisItem.cpp" line="677"/>
         <source><p>--- no links ---</p></source>
-        <translation><p>--- geen links ---</p></translation>
+        <translation type="obsolete"><p>--- geen links ---</p></translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="96"/>
         <source>thin</source>
-        <translation>dun</translation>
+        <translation type="obsolete">dun</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="97"/>
         <source>normal</source>
-        <translation>normaal</translation>
+        <translation type="obsolete">normaal</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="98"/>
         <source>wide</source>
-        <translation>breed</translation>
+        <translation type="obsolete">breed</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="99"/>
         <source>strong</source>
-        <translation>vet</translation>
+        <translation type="obsolete">vet</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="138"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="63"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="124"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="92"/>
         <source>_Clone</source>
-        <translation>_Kloon</translation>
+        <translation type="obsolete">_Kloon</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="431"/>
         <source>Area: %1%2</source>
-        <translation>Gebied: %1%2</translation>
+        <translation type="obsolete">Gebied: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="493"/>
         <source>Changed area shape.</source>
-        <translation>Vorm gebied aangepast.</translation>
+        <translation type="obsolete">Vorm gebied aangepast.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="501"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="221"/>
         <source>Changed name.</source>
-        <translation>Naam aangepast.</translation>
+        <translation type="obsolete">Naam aangepast.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="507"/>
         <source>Changed border width.</source>
-        <translation>Lijndikte aangepast.</translation>
+        <translation type="obsolete">Lijndikte aangepast.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="513"/>
         <source>Changed fill pattern.</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Opvulling aangepast.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="519"/>
         <source>Changed opacity.</source>
-        <translation>Transparantie aangepast.</translation>
+        <translation type="obsolete">Transparantie aangepast.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="525"/>
         <source>Changed comment.</source>
-        <translation>Notitie aangepast.</translation>
+        <translation type="obsolete">Notitie aangepast.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="531"/>
         <source>Changed description.</source>
-        <translation>Beschrijving aangepast.</translation>
+        <translation type="obsolete">Beschrijving aangepast.</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="537"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="239"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2059"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="366"/>
         <source>Changed links</source>
-        <translation>Link aangepast</translation>
+        <translation type="obsolete">Link aangepast</translation>
     </message>
     <message>
-        <location filename="../gis/ovl/CGisItemOvlArea.cpp" line="549"/>
         <source>Changed color</source>
-        <translation>Kleur aangepast</translation>
+        <translation type="obsolete">Kleur aangepast</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="97"/>
         <source>Save project?</source>
-        <translation>Project opslaan?</translation>
+        <translation type="obsolete">Project opslaan?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="97"/>
         <source><h3>%1</h3>The project was changed. Save before closing it?</source>
-        <translation><h3>%1</h3>Het project is veranderd. Voor het sluiten opslaan?</translation>
+        <translation type="obsolete"><h3>%1</h3>Het project is veranderd. Voor het sluiten opslaan?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="237"/>
         <source>%1: Correlate tracks and waypoints.</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">%1: Correlatie van tracks en waypointen.</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="247"/>
         <source><h3>%1</h3>Did that take too long for you? Do you want to skip correlation of tracks and waypoints for this project in the future?</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete"><h3>%1</h3>Duurde dit te lang? Moet de correlatie van tracks en waypointen in dit project in de toekomst overgeslagen worden?</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="248"/>
         <source>Canceled correlation...</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Correlatie geanuleerd...</translation>
+    </message>
+    <message>
+        <source>Save "%1" to...</source>
+        <translation type="obsolete">Opslaan "%1" als...</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="326"/>
         <source><br/>
 Filename: %1</source>
-        <translation><br/>
+        <translation type="obsolete"><br/>
 Bestandsnaam: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="331"/>
         <source>Waypoints: %1</source>
-        <translation>Waypoints: %1</translation>
+        <translation type="obsolete">Waypoints: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="335"/>
         <source>Tracks: %1</source>
-        <translation>Tracks: %1</translation>
+        <translation type="obsolete">Tracks: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="339"/>
         <source>Routes: %1</source>
-        <translation>Routes: %1</translation>
+        <translation type="obsolete">Routes: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="343"/>
         <source>Areas: %1</source>
-        <translation>Gebieden: %1</translation>
+        <translation type="obsolete">Gebieden: %1</translation>
     </message>
     <message>
-        <location filename="../gis/prj/IGisProject.cpp" line="423"/>
         <source>Are you sure you want to delete '%1' from project '%2'?</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Moet '%1' werkelijk verwijderd worden uit project '%2'?</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1245"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1264"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1340"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1399"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1578"/>
-        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
-        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
         <source>Edit name...</source>
-        <translation>Bewerk naam...</translation>
+        <translation type="obsolete">Bewerk naam...</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CCreateRouteFromWpt.cpp" line="65"/>
-        <location filename="../mouse/CMouseEditRte.cpp" line="111"/>
         <source>Enter new route name.</source>
-        <translation>Geef  route een nieuwe naam.</translation>
+        <translation type="obsolete">Geef  route een nieuwe naam.</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="227"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2047"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="354"/>
         <source>Changed comment</source>
-        <translation>Notitie aangepast</translation>
+        <translation type="obsolete">Notitie aangepast</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="233"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2053"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="360"/>
         <source>Changed description</source>
-        <translation>Beschrijving aangepast</translation>
+        <translation type="obsolete">Beschrijving aangepast</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="262"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="371"/>
         <source>Length: %1 %2</source>
-        <translation>Lengte: %1 %2</translation>
+        <translation type="obsolete">Lengte: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="266"/>
         <source>Length: -</source>
-        <translation>Lengte: -</translation>
+        <translation type="obsolete">Lengte: -</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="273"/>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="456"/>
         <source>Time: %1 %2</source>
-        <translation>Tijd: %1 %2</translation>
+        <translation type="obsolete">Tijd: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="277"/>
         <source>Time: -</source>
-        <translation>Tijd: -</translation>
+        <translation type="obsolete">Tijd: -</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="283"/>
         <source>Last time routed:<br/>%1</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Laatste routeberekening:<br/>%1</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="285"/>
         <source>with %1</source>
-        <translation>met %1</translation>
+        <translation type="obsolete">met %1</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="458"/>
         <source>Distance: %1 %2</source>
-        <translation>Afstand: %1 %2</translation>
+        <translation type="obsolete">Afstand: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/rte/CGisItemRte.cpp" line="572"/>
         <source>Changed route points.</source>
-        <translation>Routepunten aangepast.</translation>
+        <translation type="obsolete">Routepunten aangepast.</translation>
     </message>
     <message>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
-        <location filename="../gis/tnv/serialization.cpp" line="211"/>
-        <location filename="../gis/tnv/serialization.cpp" line="347"/>
-        <location filename="../gis/tnv/serialization.cpp" line="376"/>
-        <location filename="../gis/tnv/serialization.cpp" line="387"/>
-        <location filename="../gis/tnv/serialization.cpp" line="420"/>
-        <location filename="../gis/tnv/serialization.cpp" line="560"/>
-        <location filename="../gis/tnv/serialization.cpp" line="588"/>
-        <location filename="../gis/tnv/serialization.cpp" line="599"/>
-        <location filename="../gis/tnv/serialization.cpp" line="617"/>
-        <location filename="../gis/tnv/serialization.cpp" line="645"/>
-        <location filename="../gis/tnv/serialization.cpp" line="719"/>
         <source>Error...</source>
-        <translation>Fout...</translation>
+        <translation type="obsolete">Fout...</translation>
     </message>
     <message>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="87"/>
-        <location filename="../gis/tnv/CTwoNavProject.cpp" line="191"/>
-        <location filename="../gis/tnv/serialization.cpp" line="211"/>
-        <location filename="../gis/tnv/serialization.cpp" line="347"/>
-        <location filename="../gis/tnv/serialization.cpp" line="560"/>
         <source>Failed to open %1.</source>
-        <translation>Kan %1 niet openen.</translation>
+        <translation type="obsolete">Kan %1 niet openen.</translation>
     </message>
     <message>
-        <location filename="../gis/tnv/serialization.cpp" line="376"/>
-        <location filename="../gis/tnv/serialization.cpp" line="387"/>
-        <location filename="../gis/tnv/serialization.cpp" line="588"/>
-        <location filename="../gis/tnv/serialization.cpp" line="599"/>
         <source>Only support lon/lat WGS 84 format.</source>
-        <translation>Alleen lon/lat WGS 84 formaat word ondersteunt.</translation>
+        <translation type="obsolete">Alleen lon/lat WGS 84 formaat word ondersteunt.</translation>
     </message>
     <message>
-        <location filename="../gis/tnv/serialization.cpp" line="420"/>
-        <location filename="../gis/tnv/serialization.cpp" line="617"/>
-        <location filename="../gis/tnv/serialization.cpp" line="645"/>
-        <location filename="../gis/tnv/serialization.cpp" line="719"/>
         <source>Failed to read data.</source>
-        <translation>Lezen gegevens mislukt.</translation>
+        <translation type="obsolete">Lezen gegevens mislukt.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="28"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="94"/>
         <source>Foot</source>
-        <translation>Wandelen</translation>
+        <translation type="obsolete">Wandelen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="35"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="95"/>
         <source>Bicycle</source>
-        <translation>Fiets</translation>
+        <translation type="obsolete">Fiets</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="42"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="96"/>
         <source>Motor Bike</source>
-        <translation>Motorfiets</translation>
+        <translation type="obsolete">Motorfiets</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="49"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="97"/>
         <source>Car</source>
-        <translation>Auto</translation>
+        <translation type="obsolete">Auto</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="56"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="98"/>
         <source>Cable Car</source>
-        <translation>Kabelbaan</translation>
+        <translation type="obsolete">Kabelbaan</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="63"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="99"/>
         <source>Swim</source>
-        <translation>Zwemmen</translation>
+        <translation type="obsolete">Zwemmen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="70"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="100"/>
         <source>Ship</source>
-        <translation>Boot</translation>
+        <translation type="obsolete">Boot</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="77"/>
         <source>Aeronautik</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Vliegen</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="101"/>
         <source>Aeronautics</source>
-        <translation>Vliegtuig</translation>
+        <translation type="obsolete">Vliegtuig</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="210"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="254"/>
         <source>Distance:</source>
-        <translation>Afstand:</translation>
+        <translation type="obsolete">Afstand:</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="212"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="276"/>
         <source>Ascend:</source>
-        <translation>Stijging:</translation>
+        <translation type="obsolete">Stijging:</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="214"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="298"/>
         <source>Descend:</source>
-        <translation>Daling:</translation>
+        <translation type="obsolete">Daling:</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="216"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="320"/>
         <source>Speed Moving:</source>
-        <translation>Bewogen snelheid:</translation>
+        <translation type="obsolete">Bewogen snelheid:</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="218"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="342"/>
         <source>Speed Total:</source>
-        <translation>Totale snelheid:</translation>
+        <translation type="obsolete">Totale snelheid:</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="220"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="364"/>
         <source>Time Moving:</source>
-        <translation>Bewogen tijd:</translation>
+        <translation type="obsolete">Bewogen tijd:</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="222"/>
-        <location filename="../gis/trk/CActivityTrk.cpp" line="386"/>
         <source>Time Total:</source>
-        <translation>Totale tijd:</translation>
+        <translation type="obsolete">Totale tijd:</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="249"/>
         <source>Changed trackpoints, sacrificed all previous data.</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Trackpunten aangepast, vorige gegevens overschreven.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="378"/>
         <source>, %1%2 %3, %4%5 %6</source>
-        <translation>, %1%2 %3, %4%5 %6</translation>
+        <translation type="obsolete">, %1%2 %3, %4%5 %6</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="386"/>
         <source>Time: %1</source>
-        <translation>Tijd: %1</translation>
+        <translation type="obsolete">Tijd: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="389"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="399"/>
         <source>, Speed: %1 %2</source>
-        <translation>, Snelheid: %1 %2</translation>
+        <translation type="obsolete">, Snelheid: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="396"/>
         <source>Moving: %1</source>
-        <translation>Beweging: %1</translation>
+        <translation type="obsolete">Beweging: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="405"/>
         <source>Start: %1</source>
-        <translation>Start: %1</translation>
+        <translation type="obsolete">Start: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="410"/>
         <source>End: %1</source>
-        <translation>Einde: %1</translation>
+        <translation type="obsolete">Einde: %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="414"/>
         <source>Points: %1 (%2)</source>
-        <translation>Punten: %1 (%2)</translation>
+        <translation type="obsolete">Punten: %1 (%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="523"/>
         <source>Ele.: %1 %2</source>
-        <translation>Hoogte.: %1 %2</translation>
+        <translation type="obsolete">Hoogte.: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="526"/>
         <source> slope: %1%3 (%2%)</source>
-        <translation> helling: %1%3 (%2%)</translation>
+        <translation type="obsolete"> helling: %1%3 (%2%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="531"/>
         <source> speed: %1%2</source>
-        <translation> snelheid: %1%2</translation>
+        <translation type="obsolete"> snelheid: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="559"/>
         <source>... and %1 tags not displayed</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">... en %1 tags niet getoont</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="571"/>
         <source>Ascend: %1%2 (%3%)</source>
-        <translation>Stijging: %1%2 (%3%)</translation>
+        <translation type="obsolete">Stijging: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="575"/>
         <source>Ascend: - (-)</source>
-        <translation>Stijging: - (-)</translation>
+        <translation type="obsolete">Stijging: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="581"/>
         <source> Descend: %1%2 (%3%)</source>
-        <translation> Daling: %1%2 (%3%)</translation>
+        <translation type="obsolete"> Daling: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="585"/>
         <source> Descend: - (-) </source>
-        <translation> Daling: - (-) </translation>
+        <translation type="obsolete"> Daling: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="592"/>
         <source>Dist.: %1%2 (%3%)</source>
-        <translation>Afstand.: %1%2 (%3%)</translation>
+        <translation type="obsolete">Afstand.: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="596"/>
         <source>Dist.: - (-)</source>
-        <translation>Afstand.: - (-)</translation>
+        <translation type="obsolete">Afstand.: - (-)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="602"/>
         <source> Moving: %1%2 (%3%)</source>
-        <translation> Beweging: %1%2 (%3%)</translation>
+        <translation type="obsolete"> Beweging: %1%2 (%3%)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="606"/>
         <source> Moving: - (-) </source>
-        <translation> Beweging: - (-) </translation>
+        <translation type="obsolete"> Beweging: - (-) </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="625"/>
         <source>Ascend: %1%2</source>
-        <translation>Stijging: %1%2</translation>
+        <translation type="obsolete">Stijging: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="630"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="647"/>
         <source>, %1%2</source>
-        <translation>, %1%2</translation>
+        <translation type="obsolete">, %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="635"/>
         <source>Ascend: -</source>
-        <translation>Stijging: -</translation>
+        <translation type="obsolete">Stijging: -</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="642"/>
         <source> Descend: %1%2</source>
-        <translation> Daling: %1%2</translation>
+        <translation type="obsolete"> Daling: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="652"/>
         <source>Descend: -</source>
-        <translation>Daling: -</translation>
+        <translation type="obsolete">Daling: -</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="658"/>
         <source>Dist.: %1%2</source>
-        <translation>Afstand.: %1%2</translation>
+        <translation type="obsolete">Afstand.: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="663"/>
         <source> Time: %1%2</source>
-        <translation> Tijd: %1%2</translation>
+        <translation type="obsolete"> Tijd: %1%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1245"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1264"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1340"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1399"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1578"/>
-        <location filename="../mouse/CMouseEditTrk.cpp" line="116"/>
         <source>Enter new track name.</source>
-        <translation>Geef track nieuwe naam.</translation>
+        <translation type="obsolete">Geef track nieuwe naam.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1307"/>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1331"/>
         <source>Permanently removed points %1..%2</source>
-        <translation>Permanent verwijderde punten %1..%2</translation>
+        <translation type="obsolete">Permanent verwijderde punten %1..%2</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1513"/>
         <source>Hide points.</source>
-        <translation>Verberg punten.</translation>
+        <translation type="obsolete">Verberg punten.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="1553"/>
         <source>Show points.</source>
-        <translation>Toon punten.</translation>
+        <translation type="obsolete">Toon punten.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2041"/>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="312"/>
         <source>Changed name</source>
-        <translation>Naam aangepast</translation>
+        <translation type="obsolete">Naam aangepast</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2088"/>
         <source>Changed activity to '%1' for complete track.</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Activiteit aangepast naar '%1' voor gehele track.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CGisItemTrk.cpp" line="2163"/>
         <source>Changed activity to '%1' for range(%2..%3).</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Activiteit aangepast naar '%1' voor bereik(%2..%3).</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="106"/>
         <source>Hide points by Douglas Peuker algorithm (%1%2)</source>
-        <translation>Verberg alle punten via Douglas Peuker algoritme (%1%2)</translation>
+        <translation type="obsolete">Verberg alle punten via Douglas Peuker algoritme (%1%2)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="141"/>
         <source>Hide points with invalid coordinates at the beginning of the track</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Verberg punten met slechte gegevens naar begin van de track</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="157"/>
         <source>Reset all hidden track points to visible</source>
-        <translation>Verander alle verborgen trackpunten naar zichtbaar</translation>
+        <translation type="obsolete">Verander alle verborgen trackpunten naar zichtbaar</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="191"/>
         <source>Permanently removed all hidden track points</source>
-        <translation>Alle verborgen trackpunten permanent verwijderd</translation>
+        <translation type="obsolete">Alle verborgen trackpunten permanent verwijderd</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="241"/>
         <source>Smoothed profile with a Median filter of size %1</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Vloeiend profiel met een median filter van grootte %1</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="277"/>
         <source>Replaced elevation data with data from DEM files.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="300"/>
-        <source>Offset elevation data by %1%2.</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Vervang hoogte gegevens met gegevens van DEM bestanden.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="319"/>
         <source>Changed start of track to %1.</source>
-        <translation>Start van track veranderd naar %1.</translation>
+        <translation type="obsolete">Start van track veranderd naar %1.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="338"/>
         <source>Remove timestamps.</source>
-        <translation>Verwijder tijdstempels.</translation>
+        <translation type="obsolete">Verwijder tijdstempels.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="361"/>
-        <source>Set artificial timestamps with delta of %1 sec.</source>
-        <translation type="unfinished"></translation>
+        <source>Changed speed to %1%2.</source>
+        <translation type="obsolete">Snelheid veranderd naar %1%2.</translation>
     </message>
     <message>
-        <location filename="../gis/trk/filter/filter.cpp" line="394"/>
-        <source>Changed speed to %1%2.</source>
-        <translation>Snelheid veranderd naar %1%2.</translation>
+        <source>%1 (Segment %2)</source>
+        <translation type="obsolete">%1 (Segment %2)</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="227"/>
         <source>Elevation: %1 %2</source>
-        <translation>Hoogte: %1 %2</translation>
+        <translation type="obsolete">Hoogte: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="238"/>
         <source>Proximity: %1 %2</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Nabijheid: %1 %2</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="322"/>
         <source>Changed position</source>
-        <translation>Positie aangepast</translation>
+        <translation type="obsolete">Positie aangepast</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="328"/>
         <source>Changed elevation</source>
-        <translation>Hoogte aangepast</translation>
+        <translation type="obsolete">Hoogte aangepast</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="334"/>
         <source>Changed proximity</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Nabijheid aangepast</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="348"/>
         <source>Changed icon</source>
-        <translation>Pictogram aangepast</translation>
+        <translation type="obsolete">Pictogram aangepast</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="372"/>
         <source>Changed images</source>
-        <translation>Afbeelding aangepast</translation>
+        <translation type="obsolete">Afbeelding aangepast</translation>
     </message>
     <message>
-        <location filename="../gis/wpt/CGisItemWpt.cpp" line="378"/>
         <source>Add image</source>
-        <translation>Afbeelding toevoegen</translation>
+        <translation type="obsolete">Afbeelding toevoegen</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
         <source>Warning...</source>
-        <translation>Waarschuwing...</translation>
+        <translation type="obsolete">Waarschuwing...</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="457"/>
         <source>This is a typ file with unknown polygon encoding. Please report!</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Dit is een bestand met onbekende polygon codering. Alstublieft melden!</translation>
     </message>
     <message>
-        <location filename="../map/garmin/CGarminTyp.cpp" line="838"/>
         <source>This is a typ file with unknown polyline encoding. Please report!</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Dit is een bestand met onbekende polylijn codering. Alstublieft melden!</translation>
     </message>
     <message>
-        <location filename="../mouse/CMouseEditArea.cpp" line="100"/>
         <source>Enter new area name.</source>
-        <translation>Geef gebied een nieuwe naam.</translation>
+        <translation type="obsolete">Geef gebied een nieuwe naam.</translation>
     </message>
     <message>
-        <location filename="../qlgt/converter.cpp" line="198"/>
         <source>Copy flag information from QLandkarte GT track</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Kopieer flag informatie vanuit QLandkarte GT track</translation>
     </message>
     <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="163"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="217"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="264"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="290"/>
         <source>Corrupt track ...</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="163"/>
-        <source>Number of trackpoints is not equal the number of training data trackpoints.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="217"/>
-        <source>Number of trackpoints is not equal the number of extended data trackpoints.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="264"/>
-        <location filename="../qlgt/CQlgtTrack.cpp" line="290"/>
-        <source>Number of trackpoints is not equal the number of shadow data trackpoints.</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Slechte track...</translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="745"/>
-        <location filename="../units/IUnit.cpp" line="751"/>
         <source>Error</source>
-        <translation>Fout</translation>
+        <translation type="obsolete">Fout</translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="745"/>
         <source>Bad position format. Must be: "[N|S] ddd mm.sss [W|E] ddd mm.sss" or "[N|S] ddd.ddd [W|E] ddd.ddd"</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Verkeerde invoer. Moet zijn: 
+"[N|Z] ddd mm.sss [W|O] ddd mm.sss"
+of
+"[N|Z] ddd.ddd [W|O] ddd.ddd"</translation>
     </message>
     <message>
-        <location filename="../units/IUnit.cpp" line="751"/>
         <source>Position values out of bounds. </source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Positiewaarden vallen buiten bereik. </translation>
     </message>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="53"/>
         <source>Progress</source>
-        <translation>Voortgang</translation>
+        <translation type="obsolete">Voortgang</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="56"/>
         <source>time</source>
-        <translation>tijd</translation>
+        <translation type="obsolete">tijd</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="57"/>
-        <location filename="../gis/trk/CPropertyTrk.cpp" line="82"/>
         <source>distance [%1]</source>
-        <translation>afstand [%1]</translation>
+        <translation type="obsolete">afstand [%1]</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="57"/>
         <source>Slope (directed)</source>
-        <translation>Helling (getekend)</translation>
+        <translation type="obsolete">Helling (getekend)</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="62"/>
         <source>Speed</source>
-        <translation>Snelheid</translation>
+        <translation type="obsolete">Snelheid</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="67"/>
         <source>Elevation</source>
-        <translation>Hoogte</translation>
+        <translation type="obsolete">Hoogte</translation>
+    </message>
+    <message>
+        <source>Slope (directed, derived)</source>
+        <translation type="obsolete">Helling</translation>
+    </message>
+    <message>
+        <source>Speed (derived)</source>
+        <translation type="obsolete">Snelheid</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="74"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="100"/>
         <source>Heart Rate</source>
-        <translation>Hartslag</translation>
+        <translation type="obsolete">Hartslag</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="79"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="105"/>
         <source>Cadence</source>
-        <translation>Cadans</translation>
+        <translation type="obsolete">Cadans</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="84"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="110"/>
         <source>Air Temperature</source>
-        <translation>Luchttemperatuur</translation>
+        <translation type="obsolete">Luchttemperatuur</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="89"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="115"/>
         <source>Water Temperature</source>
-        <translation>Watertemperatuur</translation>
+        <translation type="obsolete">Watertemperatuur</translation>
     </message>
     <message>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="94"/>
-        <location filename="../gis/trk/CKnownExtension.cpp" line="120"/>
         <source>Depth</source>
-        <translation>Diepte</translation>
+        <translation type="obsolete">Diepte</translation>
+    </message>
+    <message>
+        <source>Acceleration</source>
+        <translation type="obsolete">Versnelling</translation>
+    </message>
+    <message>
+        <source>Course</source>
+        <translation type="obsolete">Richting</translation>
+    </message>
+    <message>
+        <source>The internal database format has changed. QMapShack will migrate your database, now. After the migration the database won't be usable with older versions of QMapShack. It is recommended to backup the database first.</source>
+        <translation type="obsolete">Het interne database formaat is gewijzigd. QMapShack zal de database migreren maar na de migratie zal de database niet bruikbaar zijn in de vorige versies van QMapShack. Het is aanbevolen eerst een backup te maken van de database.</translation>
+    </message>
+    <message>
+        <source>Migrate database...</source>
+        <translation type="obsolete">Migreren database...</translation>
+    </message>
+    <message>
+        <source>%1 does not exist</source>
+        <translation type="obsolete">%1 bestaat niet</translation>
+    </message>
+    <message>
+        <source>Not a SLF file: %1</source>
+        <translation type="obsolete">Geen SLF bestand: %1</translation>
+    </message>
+    <message>
+        <source>Unsupported revision %1: %2</source>
+        <translation type="obsolete">Niet ondersteunende revisie %1: %2</translation>
+    </message>
+    <message>
+        <source>Break %1</source>
+        <translation type="obsolete">Pauze %1</translation>
+    </message>
+    <message>
+        <source>Lap %1</source>
+        <translation type="obsolete">Ronde %1</translation>
+    </message>
+    <message>
+        <source>Password...</source>
+        <translation type="obsolete">Wachtwoord...</translation>
+    </message>
+    <message>
+        <source>Password for database '%1':</source>
+        <translation type="obsolete">Wachtwoord voor database '%1':</translation>
     </message>
 </context>
 </TS>
diff --git a/src/main.cpp b/src/main.cpp
index ae8566f..9c809e6 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -45,7 +45,7 @@ int main(int argc, char ** argv)
     env->prepareTranslators(&app);
     env->prepareGdal();
 
-    QSplashScreen *splash = 0;
+    QSplashScreen *splash = nullptr;
     if (!qlOpts->nosplash)
     {
         QPixmap pic(":/pics/splash.png");
@@ -58,13 +58,21 @@ int main(int argc, char ** argv)
         p.drawText(400,395,"V " VER_STR);
 
         splash = new QSplashScreen(pic);
+#ifdef Q_OS_MAC
+        // remove the splash screen flag on OS-X as workaround for the reported bug
+        // https://bugreports.qt.io/browse/QTBUG-49576
+        splash->setWindowFlags(splash->windowFlags() & (~Qt::SplashScreen));
+#endif
         splash->show();
     }
 
+    uint seed = QDateTime::currentDateTime().toTime_t();
+    qsrand(seed);
+
     CMainWindow w;
     w.show();
 
-    if (splash != 0)
+    if(nullptr != splash)
     {
         splash->finish(&w);
         delete splash;
diff --git a/src/map/CMapDraw.cpp b/src/map/CMapDraw.cpp
index 482d863..73841da 100644
--- a/src/map/CMapDraw.cpp
+++ b/src/map/CMapDraw.cpp
@@ -18,6 +18,7 @@
 
 #include "CMainWindow.h"
 #include "canvas/CCanvas.h"
+#include "helpers/CDraw.h"
 #include "helpers/CSettings.h"
 #include "map/CMapDraw.h"
 #include "map/CMapItem.h"
@@ -32,7 +33,7 @@
 QList<CMapDraw*> CMapDraw::maps;
 QString CMapDraw::cachePath = QDir::home().absoluteFilePath(".QMapShack/");
 QStringList CMapDraw::mapPaths;
-QStringList CMapDraw::supportedFormats = QString("*.vrt|*.jnx|*.img|*.rmap|*.wmts|*.tms").split('|');
+QStringList CMapDraw::supportedFormats = QString("*.vrt|*.jnx|*.img|*.rmap|*.wmts|*.tms|*.gemf").split('|');
 
 
 CMapDraw::CMapDraw(CCanvas *parent)
@@ -40,8 +41,8 @@ CMapDraw::CMapDraw(CCanvas *parent)
 {
     mapList = new CMapList(canvas);
     CMainWindow::self().addMapList(mapList, canvas->objectName());
-    connect(canvas, SIGNAL(destroyed()), mapList, SLOT(deleteLater()));
-    connect(mapList, SIGNAL(sigChanged()), this, SLOT(emitSigCanvasUpdate()));
+    connect(canvas,  &CCanvas::destroyed,   mapList, &CMapList::deleteLater);
+    connect(mapList, &CMapList::sigChanged, this,    &CMapDraw::emitSigCanvasUpdate);
 
     buildMapList();
 
@@ -53,7 +54,7 @@ CMapDraw::~CMapDraw()
     maps.removeOne(this);
 }
 
-void CMapDraw::setProjection(const QString& proj)
+void CMapDraw::setProjection(const QString& proj) /* override */
 {
     // --- save the active maps
     QStringList keys;
@@ -204,7 +205,7 @@ bool CMapDraw::findPolylineCloseBy(const QPointF& pt1, const QPointF& pt2, qint3
     return res;
 }
 
-void CMapDraw::saveConfig(QSettings& cfg)
+void CMapDraw::saveConfig(QSettings& cfg) /* override */
 {
     // store group context for later use
     cfgGroup = cfg.group();
@@ -217,7 +218,7 @@ void CMapDraw::saveConfig(QSettings& cfg)
     cfg.endGroup();
 }
 
-void CMapDraw::loadConfig(QSettings& cfg)
+void CMapDraw::loadConfig(QSettings& cfg) /* override */
 {
     // store group context for later use
     cfgGroup = cfg.group();
@@ -367,11 +368,11 @@ void CMapDraw::reportStatusToCanvas(const QString& key, const QString& msg)
     canvas->reportStatus(key, msg);
 }
 
-void CMapDraw::drawt(IDrawContext::buffer_t& currentBuffer)
+void CMapDraw::drawt(IDrawContext::buffer_t& currentBuffer) /* override */
 {
     // iterate over all active maps and call the draw method
     CMapItem::mutexActiveMaps.lock();
-    if(mapList)
+    if(mapList && (mapList->count() != 0))
     {
         for(int i = 0; i < mapList->count(); i++)
         {
@@ -388,6 +389,26 @@ void CMapDraw::drawt(IDrawContext::buffer_t& currentBuffer)
             item->mapfile->draw(currentBuffer);
         }
     }
+    else
+    {
+        const int offMargin = currentBuffer.image.size().width()*0.1;
+        const int offTop    = currentBuffer.image.size().height()/2;
+        QPainter p(&currentBuffer.image);
+        p.setPen(Qt::black);
+        p.translate(offMargin,offTop);
+
+        QString msg = tr(
+            "There are no maps right now. "
+            "QMapShack is no fun without maps. "
+            "You can install maps by pressing the 'Help! I want maps!' button in the 'Maps' dock window. "
+            "Or you can press the F1 key to open the online documentation that tells you how to use QMapShack. "
+            );
+
+        QTextDocument doc;
+        doc.setPlainText(msg);
+        doc.setTextWidth(currentBuffer.image.width() - offMargin*2);
+        doc.drawContents(&p);
+    }
     CMapItem::mutexActiveMaps.unlock();
 }
 
diff --git a/src/map/CMapDraw.h b/src/map/CMapDraw.h
index 41a804d..c60b051 100644
--- a/src/map/CMapDraw.h
+++ b/src/map/CMapDraw.h
@@ -72,7 +72,12 @@ public:
        @brief Set projection of this draw context
        @param proj      a proj4 string
      */
-    void setProjection(const QString& proj);
+    void setProjection(const QString& proj) override;
+
+    static const QStringList& getMapPaths()
+    {
+        return mapPaths;
+    }
 
     static void setupMapPath();
     static void setupMapPath(const QString &path);
@@ -116,7 +121,7 @@ public:
     bool findPolylineCloseBy(const QPointF& pt1, const QPointF& pt2, qint32 threshold, QPolygonF& polyline);
 
 protected:
-    void drawt(buffer_t& currentBuffer);
+    void drawt(buffer_t& currentBuffer) override;
 
 
 private:
diff --git a/src/map/CMapGEMF.cpp b/src/map/CMapGEMF.cpp
new file mode 100644
index 0000000..a1e1e1a
--- /dev/null
+++ b/src/map/CMapGEMF.cpp
@@ -0,0 +1,300 @@
+/**********************************************************************************************
+    Copyright (C) 2016 Peter Schumann peter.schumann at jeepxj.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+/*
+ *
+ *
+ *
+ * Map Driver Implementation for GEMF Maps
+ * SPECs --> http://www.cgtk.co.uk/gemf
+ *
+ *
+ */
+
+#include "CMainWindow.h"
+#include "helpers/CDraw.h"
+#include "map/CMapDraw.h"
+#include "map/CMapGEMF.h"
+#include "units/IUnit.h"
+
+#include <QDebug>
+#include <QtGui>
+#include <QtWidgets>
+
+inline int lon2tile(double lon, int z)
+{
+    return (int)(qRound(256*(lon + 180.0) / 360.0 * qPow(2.0, z)));
+}
+
+inline int lat2tile(double lat, int z)
+{
+    return (int)(qRound(256*(1.0 - log( qTan(lat * M_PI/180.0) + 1.0 / qCos(lat * M_PI/180.0)) / M_PI) / 2.0 * qPow(2.0, z)));
+}
+
+inline double tile2lon(int x, int z)
+{
+    return x / qPow(2.0, z) * 360.0 - 180;
+}
+
+inline double tile2lat(int y, int z)
+{
+    double n = M_PI - 2.0 * M_PI * y / qPow(2.0, z);
+    return 180.0 / M_PI * qAtan(0.5 * (exp(n) - exp(-n)));
+}
+
+
+CMapGEMF::CMapGEMF(const QString &filename, CMapDraw *parent)
+    : IMap(eFeatVisibility,parent)
+    , filename(filename)
+{
+    qDebug() << "CMapGEMF: try to open " << filename;
+    pjsrc = pj_init_plus("+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs");
+    qDebug() << "CMapGEMF:" << "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs";
+    QFile file(filename);
+    file.open(QIODevice::ReadOnly);
+
+    QDataStream stream(&file);
+    stream.setByteOrder(QDataStream::BigEndian);
+
+    stream >> version;
+    stream >> tileSize;
+    stream >> sourceNr;
+
+    quint32 i;
+
+    for(i=0; i<sourceNr; i++)
+    {
+        source_t source;
+        quint32 len;
+        QByteArray name(NAMEBUFLEN,0);
+        stream >> source.index;
+        stream >>len;
+        if(len>NAMEBUFLEN)
+        {
+            qDebug() << "CMapGEMF: Name longer than 1024 byte";
+        }
+        len = (len>NAMEBUFLEN) ? NAMEBUFLEN : len;
+        stream.readRawData(name.data(),len);
+        source.name = QString().fromLocal8Bit(name,len);
+        sources << source;
+        qDebug() << "CMapGEMF: Read Source " << source.name;
+    }
+    qDebug() << "CMapGEMF: Read "<< i << "Sources";
+    stream >> rangeNum;
+    QList<range_t> ranges;
+    quint64 tiles=0;
+    for (i=0; i<rangeNum; i++)
+    {
+        range_t range;
+        stream >> range.zoomlevel;
+        stream >> range.minX;
+        stream >> range.maxX;
+        stream >> range.minY;
+        stream >> range.maxY;
+        stream >> range.sourceIdx;
+        stream >> range.offset;
+
+        ranges << range;
+        tiles += (range.maxX +1 -range.minX)*(range.maxY+1-range.minY);
+    }
+    qDebug() << "CMapGEMF: Read "<< i << "Ranges with " << tiles << " Tiles";
+
+    minZoom= MAX_ZOOM_LEVEL;
+    maxZoom= MIN_ZOOM_LEVEL;
+
+    for(i=0; i<=MAX_ZOOM_LEVEL; i++)
+    {
+        QList<range_t> rangeZoom;
+        QList<range_t>::iterator it;
+        for(it=ranges.begin(); it!=ranges.end(); it++)
+        {
+            if(it->zoomlevel ==i)
+            {
+                rangeZoom << *it;
+                minZoom = (i<minZoom) ? i : minZoom;
+                maxZoom = (i>maxZoom) ? i : maxZoom;
+            }
+        }
+        if(rangeZoom.length()!= 0)
+        {
+            rangesByZoom[i] = rangeZoom;
+            qDebug() << "CMapGEMF: Found " << rangeZoom.length() << "ranges for " << " Zoomlevel " << i;
+        }
+    }
+    QString partfile = filename;
+    QFile f(partfile);
+    f.open(QIODevice::ReadOnly);
+    i=1;
+    do
+    {
+        gemffile_t gf;
+        gf.filename= partfile;
+        gf.size = f.size();
+        f.close();
+        files << gf;
+        partfile = filename + "-" + QString::number(i);
+        i++;
+        f.setFileName(partfile);
+    }
+    while( f.open(QIODevice::ReadOnly) );
+    isActivated = true;
+}
+
+void CMapGEMF::draw(IDrawContext::buffer_t &buf)
+{
+    if(map->needsRedraw())
+    {
+        return;
+    }
+    QPointF bufferScale = buf.scale * buf.zoomFactor;
+    if(isOutOfScale(bufferScale))
+    {
+        return;
+    }
+    QPointF pp = buf.ref1;
+    map->convertRad2Px(pp);
+
+    // start to draw the map
+    QPainter p(&buf.image);
+    USE_ANTI_ALIASING(p,true);
+    p.setOpacity(getOpacity()/100.0);
+    p.translate(-pp);
+
+    qreal x1 = buf.ref1.x() < buf.ref4.x() ? buf.ref1.x() : buf.ref4.x();
+    qreal y1 = buf.ref1.y() > buf.ref2.y() ? buf.ref1.y() : buf.ref2.y();
+
+    qreal x2 = buf.ref2.x() > buf.ref3.x() ? buf.ref2.x() : buf.ref3.x();
+    qreal y2 = buf.ref3.y() < buf.ref4.y() ? buf.ref3.y() : buf.ref4.y();
+
+    if(x1 < -180.0*DEG_TO_RAD)
+    {
+        x1 = -180*DEG_TO_RAD;
+    }
+    if(x2 >  180.0*DEG_TO_RAD)
+    {
+        x2 =  180*DEG_TO_RAD;
+    }
+
+
+    QPointF s1  = buf.scale * buf.zoomFactor;
+    qreal d     = NOFLOAT;
+    quint32 z = MAX_ZOOM_LEVEL;
+
+    for(quint32 i = 0; i < MAX_ZOOM_LEVEL; i++)
+    {
+        qreal s2 = 0.055 * (1<<i);
+        if(qAbs(s2 - s1.x()) < d)
+        {
+            z = i;
+            d = qAbs(s2 - s1.x());
+        }
+    }
+
+    z = MAX_ZOOM_LEVEL   - z;
+
+    qint32 row1, row2, col1, col2;
+
+    col1 = lon2tile(x1 * RAD_TO_DEG, z) / 256;
+    col2 = lon2tile(x2 * RAD_TO_DEG, z) / 256;
+    row1 = lat2tile(y1 * RAD_TO_DEG, z) / 256;
+    row2 = lat2tile(y2 * RAD_TO_DEG, z) / 256;
+    for(qint32 row = row1; row <= row2; row++)
+    {
+        for(qint32 col = col1; col <= col2; col++)
+        {
+            QPolygonF l;
+
+            qreal xx1 = tile2lon(col, z) * DEG_TO_RAD;
+            qreal yy1 = tile2lat(row, z) * DEG_TO_RAD;
+            qreal xx2 = tile2lon(col + 1, z) * DEG_TO_RAD;
+            qreal yy2 = tile2lat(row + 1, z) * DEG_TO_RAD;
+
+            l << QPointF(xx1, yy1) << QPointF(xx2, yy1) << QPointF(xx2, yy2) << QPointF(xx1, yy2);
+
+            QImage img = getTile(col,row,z);
+            drawTile(img, l, p);
+        }
+    }
+}
+
+quint64 CMapGEMF::getFilenameFromAddress(const quint64 offset,QString &filename)
+{
+    quint64 temp = offset;
+
+    foreach (gemffile_t gf, files)
+    {
+        if(temp < gf.size)
+        {
+            filename = gf.filename;
+
+            return temp;
+        }
+        else
+        {
+            temp -= gf.size;
+        }
+    }
+
+    qDebug() << "CMAPGemf: ImageAddress was wrong "<< offset;
+    return 0;  //
+}
+
+QImage CMapGEMF::getTile(const quint32 row, const quint32 col, const quint32 z)
+{
+    if(!rangesByZoom.contains(z))
+    {
+        qDebug() << "CMapGEMF: getTile called for a zoomlevel not available";
+        return QImage();
+    }
+    QList<range_t> ranges = rangesByZoom[z];
+
+    foreach (range_t r,ranges)
+    {
+        if(    row >= r.minX
+               && row <= r.maxX
+               && col >= r.minY
+               && col <= r.maxY)
+        {
+            quint32 Xidx = row-r.minX;
+            quint32 Yidx = col-r.minY;
+            quint32 nrYVals = r.maxY + 1 - r.minY;
+            quint32 TileIdx = Xidx*nrYVals + Yidx;
+            quint64 offsetRange = TileIdx*12;         // 4 + 8
+            quint64 offsetGEMF = offsetRange +r.offset;
+            QString splitfile;
+            offsetGEMF = getFilenameFromAddress(offsetGEMF, splitfile);
+            QFile file(splitfile);
+            file.open(QIODevice::ReadOnly);
+            QDataStream dataFile(&file);
+            quint32 size;
+            quint64 imageDataAddress;
+            dataFile.skipRawData(offsetGEMF);
+            dataFile >> imageDataAddress;
+            dataFile >> size;
+            file.close();
+            quint64 imageDataOffset = getFilenameFromAddress(imageDataAddress, splitfile);
+            QFile imageFile(splitfile);
+            imageFile.open(QIODevice::ReadOnly);
+            imageFile.seek(imageDataOffset);
+            QByteArray imageData(size,0);
+            imageFile.read(imageData.data(),size);
+            return QImage::fromData((uchar *)imageData.data(),size,0);
+        }
+    }
+
+    return QImage();
+}
diff --git a/src/map/CMapGEMF.h b/src/map/CMapGEMF.h
new file mode 100644
index 0000000..dbd8996
--- /dev/null
+++ b/src/map/CMapGEMF.h
@@ -0,0 +1,73 @@
+/**********************************************************************************************
+    Copyright (C) 2016 Peter Schumann peter.schumann at jeepxj.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#ifndef CMAPGEMF_H
+#define CMAPGEMF_H
+#define    NAMEBUFLEN 1024
+
+#include "IMap.h"
+
+
+class CMapGEMF : public IMap
+{
+    Q_OBJECT
+public:
+    CMapGEMF(const QString& filename, CMapDraw *parent);
+    void draw(IDrawContext::buffer_t& buf) override;
+    const quint32 MAX_ZOOM_LEVEL = 21;
+    const quint32 MIN_ZOOM_LEVEL = 0;
+
+private:
+    QImage getTile(const quint32 col, const quint32 row,const quint32 z);
+    quint64 getFilenameFromAddress(const quint64 offset, QString &filename );
+
+    struct source_t
+    {
+        quint32 index;
+        QString name;
+    };
+
+    struct gemffile_t
+    {
+        QString filename;
+        quint64 size;
+    };
+    struct range_t
+    {
+        quint32 zoomlevel;
+        quint32 minX;
+        quint32 maxX;
+        quint32 minY;
+        quint32 maxY;
+        quint32 sourceIdx;
+        quint64 offset;
+    };
+
+    QString filename;
+    quint32 version;
+    quint32 tileSize;
+    quint32 sourceNr;
+    quint32 rangeNum;
+    quint32 minZoom;
+    quint32 maxZoom;
+    QList< source_t> sources;
+    QList<gemffile_t> files;
+    QHash<quint32, QList<range_t> > rangesByZoom;
+};
+
+#endif // CMAPGEMF_H
diff --git a/src/map/CMapIMG.cpp b/src/map/CMapIMG.cpp
index 4fcb056..9b34fc4 100644
--- a/src/map/CMapIMG.cpp
+++ b/src/map/CMapIMG.cpp
@@ -1212,7 +1212,7 @@ quint8 CMapIMG::scale2bits(const QPointF& scale)
     return 24;
 }
 
-void CMapIMG::draw(IDrawContext::buffer_t& buf)
+void CMapIMG::draw(IDrawContext::buffer_t& buf) /* override */
 {
     if(map->needsRedraw())
     {
@@ -1818,8 +1818,6 @@ void CMapIMG::drawPolylines(QPainter& p, polytype_t& lines, const QPointF& scale
 
                     map->convertRad2Px(poly);
 
-                    int i;
-
                     lengths.resize(0);
 
 
@@ -1837,7 +1835,7 @@ void CMapIMG::drawPolylines(QPainter& p, polytype_t& lines, const QPointF& scale
                     u1 = poly[0].x();
                     v1 = poly[0].y();
 
-                    for(i = 1; i < size; ++i)
+                    for(int i = 1; i < size; ++i)
                     {
                         u2 = poly[i].x();
                         v2 = poly[i].y();
@@ -2397,11 +2395,11 @@ void CMapIMG::drawText(QPainter& p)
 }
 
 
-void CMapIMG::getInfo(const QPoint& px, QString& str)
+void CMapIMG::getInfo(const QPoint& px, QString& str) /* override */
 {
 }
 
-void CMapIMG::getToolTip(const QPoint& px, QString& infotext)
+void CMapIMG::getToolTip(const QPoint& px, QString& infotext) /* override */
 {
     bool first = true;
     QString str;
@@ -2828,7 +2826,7 @@ static qreal getDistance(const QPolygonF& line, const QPointF& pt, qreal thresho
 
 
 
-bool CMapIMG::findPolylineCloseBy(const QPointF& pt1, const QPointF& pt2, qint32 threshold, QPolygonF& polyline)
+bool CMapIMG::findPolylineCloseBy(const QPointF& pt1, const QPointF& pt2, qint32 threshold, QPolygonF& polyline) /* override */
 {
     foreach(const CGarminPolygon &line, polylines)
     {
diff --git a/src/map/CMapIMG.h b/src/map/CMapIMG.h
index 0de9914..00ebc8b 100644
--- a/src/map/CMapIMG.h
+++ b/src/map/CMapIMG.h
@@ -19,7 +19,6 @@
 #ifndef CMAPIMG_H
 #define CMAPIMG_H
 
-#include "map/CMapDraw.h"
 #include "map/IMap.h"
 #include "map/garmin/CGarminPoint.h"
 #include "map/garmin/CGarminPolygon.h"
@@ -147,10 +146,10 @@ public:
     CMapIMG(const QString &filename, CMapDraw *parent);
     virtual ~CMapIMG();
 
-    void draw(IDrawContext::buffer_t& buf);
+    void draw(IDrawContext::buffer_t& buf) override;
 
-    void getInfo(const QPoint& px, QString& str);
-    void getToolTip(const QPoint& px, QString& infotext);
+    void getInfo(const QPoint& px, QString& str) override;
+    void getToolTip(const QPoint& px, QString& infotext) override;
 
     /**
        @brief Find a matching street polyline
@@ -164,7 +163,7 @@ public:
        @param polyline      the resulting polyline, if any, in [rad]
        @return              Return true if a line has been found.
      */
-    bool findPolylineCloseBy(const QPointF &pt1, const QPointF &pt2, qint32 threshold, QPolygonF& polyline);
+    bool findPolylineCloseBy(const QPointF &pt1, const QPointF &pt2, qint32 threshold, QPolygonF& polyline) override;
 
 
 private:
diff --git a/src/map/CMapItem.cpp b/src/map/CMapItem.cpp
index 4b125b4..e040536 100644
--- a/src/map/CMapItem.cpp
+++ b/src/map/CMapItem.cpp
@@ -17,6 +17,7 @@
 **********************************************************************************************/
 
 #include "map/CMapDraw.h"
+#include "map/CMapGEMF.h"
 #include "map/CMapIMG.h"
 #include "map/CMapItem.h"
 #include "map/CMapJNX.h"
@@ -42,7 +43,7 @@ CMapItem::~CMapItem()
 {
 }
 
-void CMapItem::saveConfig(QSettings& cfg)
+void CMapItem::saveConfig(QSettings& cfg) const
 {
     if(mapfile.isNull())
     {
@@ -122,6 +123,10 @@ void CMapItem::updateIcon()
     {
         img = QPixmap("://icons/32x32/MimeTMS.png");
     }
+    else if(fi.suffix().toLower() == "gemf")
+    {
+        img = QPixmap("://icons/32x32/MimeGEMF.png");
+    }
 
     setIcon(0,QIcon(img));
 }
@@ -201,6 +206,10 @@ bool CMapItem::activate()
     {
         mapfile = new CMapTMS(filename, map);
     }
+    else if(fi.suffix().toLower() == "gemf")
+    {
+        mapfile = new CMapGEMF(filename, map);
+    }
 
     updateIcon();
     // no mapfiles loaded? Bad.
diff --git a/src/map/CMapItem.h b/src/map/CMapItem.h
index 733efa3..965ce29 100644
--- a/src/map/CMapItem.h
+++ b/src/map/CMapItem.h
@@ -34,7 +34,7 @@ public:
     CMapItem(QTreeWidget * parent, CMapDraw *map);
     virtual ~CMapItem();
 
-    void saveConfig(QSettings& cfg);
+    void saveConfig(QSettings& cfg) const;
     void loadConfig(QSettings& cfg);
 
     /**
diff --git a/src/map/CMapJNX.cpp b/src/map/CMapJNX.cpp
index 7de9a58..3fb587e 100644
--- a/src/map/CMapJNX.cpp
+++ b/src/map/CMapJNX.cpp
@@ -274,7 +274,7 @@ qint32 CMapJNX::scale2level(qreal s, const file_t& file)
 }
 
 
-void CMapJNX::draw(IDrawContext::buffer_t& buf)
+void CMapJNX::draw(IDrawContext::buffer_t& buf) /* override */
 {
     if(map->needsRedraw())
     {
diff --git a/src/map/CMapJNX.h b/src/map/CMapJNX.h
index a4e747b..63fb610 100644
--- a/src/map/CMapJNX.h
+++ b/src/map/CMapJNX.h
@@ -28,7 +28,7 @@ class CMapJNX : public IMap
 public:
     CMapJNX(const QString& filename, CMapDraw *parent);
 
-    void draw(IDrawContext::buffer_t& buf);
+    void draw(IDrawContext::buffer_t& buf) override;
 
 private:
     QString filename;
@@ -38,9 +38,9 @@ private:
     {
         quint32 version;     // byte 00000000..00000003
         quint32 devid;       // byte 00000004..00000007
-        qint32 lat1;          // byte 00000010..00000013
-        qint32 lon2;        // byte 00000014..00000017
-        qint32 lat2;       // byte 00000008..0000000B
+        qint32 lat1;         // byte 00000010..00000013
+        qint32 lon2;         // byte 00000014..00000017
+        qint32 lat2;         // byte 00000008..0000000B
         qint32 lon1;         // byte 0000000C..0000000F
         quint32 details;     // byte 00000018..0000001B
         quint32 expire;      // byte 0000001C..0000001F
@@ -49,7 +49,7 @@ private:
         quint32 signature;   // byte 00000028..0000002B
                              // byte 0000002C..0000002F
         quint32 signature_offset;
-        qint32 zorder;       // byte 00000030--00000033
+        qint32 zorder;       // byte 00000030..00000033
     };
 
 #ifdef WIN32
diff --git a/src/map/CMapList.cpp b/src/map/CMapList.cpp
index 993a971..b23bcb5 100644
--- a/src/map/CMapList.cpp
+++ b/src/map/CMapList.cpp
@@ -44,7 +44,7 @@ void CMapTreeWidget::dragMoveEvent(QDragMoveEvent  * e)
     }
 }
 
-void CMapTreeWidget::dropEvent (QDropEvent  * e)
+void CMapTreeWidget::dropEvent(QDropEvent  * e)
 {
     CMapItem * item = dynamic_cast<CMapItem*>(currentItem());
     if(item)
@@ -67,14 +67,22 @@ CMapList::CMapList(QWidget *parent)
 {
     setupUi(this);
 
-    connect(treeWidget, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
-    connect(treeWidget, SIGNAL(sigChanged()), SIGNAL(sigChanged()));
-    connect(actionActivate, SIGNAL(triggered()), this, SLOT(slotActivate()));
-    connect(pushMapHonk, SIGNAL(clicked()), this, SLOT(slotMapHonk()));
+    connect(treeWidget,     &CMapTreeWidget::customContextMenuRequested, this, &CMapList::slotContextMenu);
+    connect(treeWidget,     &CMapTreeWidget::sigChanged,                 this, &CMapList::sigChanged);
+    connect(actionActivate, &QAction::triggered,                         this, &CMapList::slotActivate);
+    connect(actionMoveUp,   &QAction::triggered,                         this, &CMapList::slotMoveUp);
+    connect(actionMoveDown, &QAction::triggered,                         this, &CMapList::slotMoveDown);
+    connect(actionReloadMaps, &QAction::triggered,                       this, &CMapList::slotReloadMaps);
+    connect(pushMapHonk,    &QPushButton::clicked,                       this, &CMapList::slotMapHonk);
 
 
     menu = new QMenu(this);
     menu->addAction(actionActivate);
+    menu->addAction(actionMoveUp);
+    menu->addAction(actionMoveDown);
+    menu->addSeparator();
+    menu->addAction(actionReloadMaps);
+    menu->addAction(CMainWindow::self().getMapSetupAction());
 }
 
 CMapList::~CMapList()
@@ -127,7 +135,7 @@ void CMapList::updateHelpText()
 void CMapList::slotActivate()
 {
     CMapItem * item = dynamic_cast<CMapItem*>(treeWidget->currentItem());
-    if(item == 0)
+    if(nullptr == item)
     {
         return;
     }
@@ -141,19 +149,70 @@ void CMapList::slotActivate()
     updateHelpText();
 }
 
+void CMapList::slotMoveUp()
+{
+    CMapItem * item = dynamic_cast<CMapItem*>(treeWidget->currentItem());
+    if(item == nullptr)
+    {
+        return;
+    }
 
-void CMapList::slotContextMenu(const QPoint& point)
+    int index = treeWidget->indexOfTopLevelItem(item);
+    if(index == NOIDX)
+    {
+        return;
+    }
+
+    item->showChildren(false);
+    treeWidget->takeTopLevelItem(index);
+    treeWidget->insertTopLevelItem(index-1, item);
+    item->showChildren(true);
+    treeWidget->setCurrentItem(0);
+    emit treeWidget->sigChanged();
+}
+
+void CMapList::slotMoveDown()
 {
     CMapItem * item = dynamic_cast<CMapItem*>(treeWidget->currentItem());
+    if(item == nullptr)
+    {
+        return;
+    }
 
-    if(item == 0)
+    int index = treeWidget->indexOfTopLevelItem(item);
+    if(index == NOIDX)
     {
         return;
     }
-    bool activated = item->isActivated();
-    actionActivate->setChecked(activated);
-    actionActivate->setText(activated ? tr("Deactivate") : tr("Activate"));
 
+    item->showChildren(false);
+    treeWidget->takeTopLevelItem(index);
+    treeWidget->insertTopLevelItem(index+1, item);
+    item->showChildren(true);
+    treeWidget->setCurrentItem(0);
+    emit treeWidget->sigChanged();
+}
+
+void CMapList::slotContextMenu(const QPoint& point)
+{
+    CMapItem * item = dynamic_cast<CMapItem*>(treeWidget->currentItem());
+
+    bool itemIsSelected  = nullptr != item;
+    bool itemIsActivated = item ? item->isActivated() : false;
+
+    actionActivate->setEnabled(itemIsSelected);
+    actionMoveUp->setEnabled(itemIsSelected);
+    actionMoveDown->setEnabled(itemIsSelected);
+
+    actionActivate->setChecked(itemIsActivated);
+    actionActivate->setText(itemIsActivated ? tr("Deactivate") : tr("Activate"));
+
+    if(itemIsSelected)
+    {
+        CMapItem * item1 = dynamic_cast<CMapItem*>(treeWidget->itemBelow(item));
+        actionMoveUp->setEnabled(itemIsActivated && (treeWidget->itemAbove(item) != 0));
+        actionMoveDown->setEnabled(itemIsActivated && item1 && item1->isActivated());
+    }
     QPoint p = treeWidget->mapToGlobal(point);
     menu->exec(p);
 }
@@ -193,3 +252,8 @@ void CMapList::slotMapHonk()
         canvas->setScales(CCanvas::eScalesSquare);
     }
 }
+
+void CMapList::slotReloadMaps()
+{
+    CMapDraw::setupMapPath(CMapDraw::getMapPaths());
+}
diff --git a/src/map/CMapList.h b/src/map/CMapList.h
index e09d747..7787c9d 100644
--- a/src/map/CMapList.h
+++ b/src/map/CMapList.h
@@ -37,9 +37,9 @@ signals:
     void sigChanged();
 
 protected:
-    void dragEnterEvent(QDragEnterEvent * e);
-    void dragMoveEvent (QDragMoveEvent  * e );
-    void dropEvent ( QDropEvent  * e );
+    void dragEnterEvent(QDragEnterEvent *e) override;
+    void dragMoveEvent(QDragMoveEvent  *e) override;
+    void dropEvent(QDropEvent      *e) override;
 };
 
 #include "ui_IMapList.h"
@@ -69,6 +69,9 @@ public slots:
 
 private slots:
     void slotActivate();
+    void slotMoveUp();
+    void slotMoveDown();
+    void slotReloadMaps();
     void slotContextMenu(const QPoint &point);
 
 private:
diff --git a/src/map/CMapMAP.cpp b/src/map/CMapMAP.cpp
index b49993b..e0b2321 100644
--- a/src/map/CMapMAP.cpp
+++ b/src/map/CMapMAP.cpp
@@ -147,6 +147,6 @@ void CMapMAP::readBasics()
     // ---------- end file header ----------------------
 }
 
-void CMapMAP::draw(IDrawContext::buffer_t& buf)
+void CMapMAP::draw(IDrawContext::buffer_t& buf) /* override */
 {
 }
diff --git a/src/map/CMapMAP.h b/src/map/CMapMAP.h
index eae0ac9..a8fdf44 100644
--- a/src/map/CMapMAP.h
+++ b/src/map/CMapMAP.h
@@ -28,11 +28,12 @@ class CMapDraw;
 
 class CMapMAP : public IMap
 {
+    Q_DECLARE_TR_FUNCTIONS(CMapMAP)
 public:
     CMapMAP(const QString& filename, CMapDraw *parent);
     virtual ~CMapMAP();
 
-    void draw(IDrawContext::buffer_t& buf);
+    void draw(IDrawContext::buffer_t& buf) override;
 
 private:
     enum exce_e {eErrOpen, eErrAccess, errFormat, errAbort};
@@ -70,17 +71,17 @@ private:
         {
         }
         char signature[20];
-        quint32 sizeHeader;
-        quint32 version;
-        quint64 sizeFile;
-        quint64 timestamp;
-        qint32 minLat;
-        qint32 minLon;
-        qint32 maxLat;
-        qint32 maxLon;
-        quint16 sizeTile;
+        quint32 sizeHeader = 0;
+        quint32 version = 0;
+        quint64 sizeFile = 0;
+        quint64 timestamp = 0;
+        qint32 minLat = 0;
+        qint32 minLon = 0;
+        qint32 maxLat = 0;
+        qint32 maxLon = 0;
+        quint16 sizeTile = 0;
         utf8 projection;
-        quint8 flags;
+        quint8 flags = 0;
         // optional fields
         qint32 latStart;
         qint32 lonStart;
diff --git a/src/map/CMapPathSetup.cpp b/src/map/CMapPathSetup.cpp
index 4e82308..4709d0d 100644
--- a/src/map/CMapPathSetup.cpp
+++ b/src/map/CMapPathSetup.cpp
@@ -30,10 +30,10 @@ CMapPathSetup::CMapPathSetup(QStringList &paths, QString& pathCache)
 {
     setupUi(this);
 
-    connect(toolAdd, SIGNAL(clicked()), this, SLOT(slotAddPath()));
-    connect(toolDelete, SIGNAL(clicked()), this, SLOT(slotDelPath()));
-    connect(listWidget, SIGNAL(itemSelectionChanged()), this, SLOT(slotItemSelectionChanged()));
-    connect(pushMapHonk, SIGNAL(clicked()), this, SLOT(slotMapHonk()));
+    connect(toolAdd,     &QToolButton::clicked,              this, &CMapPathSetup::slotAddPath);
+    connect(toolDelete,  &QToolButton::clicked,              this, &CMapPathSetup::slotDelPath);
+    connect(listWidget,  &QListWidget::itemSelectionChanged, this, &CMapPathSetup::slotItemSelectionChanged);
+    connect(pushMapHonk, &QPushButton::clicked,              this, &CMapPathSetup::slotMapHonk);
 
     foreach(const QString &path, paths)
     {
@@ -42,7 +42,7 @@ CMapPathSetup::CMapPathSetup(QStringList &paths, QString& pathCache)
     }
 
     labelCacheRoot->setText(pathCache);
-    connect(toolCacheRoot, SIGNAL(clicked()), this, SLOT(slotChangeCachePath()));
+    connect(toolCacheRoot, &QToolButton::clicked, this, &CMapPathSetup::slotChangeCachePath);
 
     labelHelp->setText(tr("Add or remove paths containing maps. There can be multiple maps in a path but no sub-path is parsed. Supported formats are: %1").arg(CMapDraw::getSupportedFormats().join(", ")));
 }
diff --git a/src/map/CMapPathSetup.h b/src/map/CMapPathSetup.h
index 004e8f7..3918463 100644
--- a/src/map/CMapPathSetup.h
+++ b/src/map/CMapPathSetup.h
@@ -30,7 +30,7 @@ public:
     virtual ~CMapPathSetup();
 
 public slots:
-    void accept();
+    void accept() override;
 
 private slots:
     void slotAddPath();
diff --git a/src/map/CMapPropSetup.cpp b/src/map/CMapPropSetup.cpp
index 36c2c99..2266c7e 100644
--- a/src/map/CMapPropSetup.cpp
+++ b/src/map/CMapPropSetup.cpp
@@ -16,6 +16,7 @@
 
 **********************************************************************************************/
 
+#include "helpers/Signals.h"
 #include "map/CMapDraw.h"
 #include "map/CMapPropSetup.h"
 #include "map/IMap.h"
@@ -31,21 +32,21 @@ CMapPropSetup::CMapPropSetup(IMap * mapfile, CMapDraw *map)
 
     slotPropertiesChanged();
 
-    connect(sliderOpacity, SIGNAL(valueChanged(int)), mapfile, SLOT(slotSetOpacity(int)));
-    connect(sliderOpacity, SIGNAL(valueChanged(int)), map, SLOT(emitSigCanvasUpdate()));
-    connect(map, SIGNAL(sigScaleChanged(QPointF)), this, SLOT(slotScaleChanged(QPointF)));
-    connect(toolSetMinScale, SIGNAL(toggled(bool)), this, SLOT(slotSetMinScale(bool)));
-    connect(toolSetMaxScale, SIGNAL(toggled(bool)), this, SLOT(slotSetMaxScale(bool)));
+    connect(sliderOpacity,       &QSlider::valueChanged,     mapfile, &IMap::slotSetOpacity);
+    connect(sliderOpacity,       &QSlider::valueChanged,     map,     &CMapDraw::emitSigCanvasUpdate);
+    connect(map,                 &CMapDraw::sigScaleChanged, this,    &CMapPropSetup::slotScaleChanged);
+    connect(toolSetMinScale,     &QToolButton::toggled,      this,    &CMapPropSetup::slotSetMinScale);
+    connect(toolSetMaxScale,     &QToolButton::toggled,      this,    &CMapPropSetup::slotSetMaxScale);
 
-    connect(checkPolygons, SIGNAL(toggled(bool)), mapfile, SLOT(slotSetShowPolygons(bool)));
-    connect(checkPolylines, SIGNAL(toggled(bool)), mapfile, SLOT(slotSetShowPolylines(bool)));
-    connect(checkPoints, SIGNAL(toggled(bool)), mapfile, SLOT(slotSetShowPOIs(bool)));
-    connect(checkPolygons, SIGNAL(clicked()), map, SLOT(emitSigCanvasUpdate()));
-    connect(checkPolylines, SIGNAL(clicked()), map, SLOT(emitSigCanvasUpdate()));
-    connect(checkPoints, SIGNAL(clicked()), map, SLOT(emitSigCanvasUpdate()));
+    connect(checkPolygons,       &QCheckBox::toggled,        mapfile, &IMap::slotSetShowPolygons);
+    connect(checkPolylines,      &QCheckBox::toggled,        mapfile, &IMap::slotSetShowPolylines);
+    connect(checkPoints,         &QCheckBox::toggled,        mapfile, &IMap::slotSetShowPOIs);
+    connect(checkPolygons,       &QCheckBox::clicked,        map,     &CMapDraw::emitSigCanvasUpdate);
+    connect(checkPolylines,      &QCheckBox::clicked,        map,     &CMapDraw::emitSigCanvasUpdate);
+    connect(checkPoints,         &QCheckBox::clicked,        map,     &CMapDraw::emitSigCanvasUpdate);
 
-    connect(spinCacheSize, SIGNAL(valueChanged(int)), mapfile, SLOT(slotSetCacheSize(qint32)));
-    connect(spinCacheExpiration, SIGNAL(valueChanged(int)), mapfile, SLOT(slotSetCacheExpiration(qint32)));
+    connect(spinCacheSize,       static_cast<void (QSpinBox::*)(int) >(&QSpinBox::valueChanged), mapfile, &IMap::slotSetCacheSize);
+    connect(spinCacheExpiration, static_cast<void (QSpinBox::*)(int) >(&QSpinBox::valueChanged), mapfile, &IMap::slotSetCacheExpiration);
 
     if(mapfile->hasFeatureVectorItems())
     {
@@ -80,23 +81,16 @@ CMapPropSetup::~CMapPropSetup()
 {
 }
 
-void CMapPropSetup::resizeEvent(QResizeEvent * e)
+void CMapPropSetup::resizeEvent(QResizeEvent * e) /* override */
 {
     IMapProp::resizeEvent(e);
     updateScaleLabel();
 }
 
-void CMapPropSetup::slotPropertiesChanged()
+void CMapPropSetup::slotPropertiesChanged() /* override */
 {
+    X______________BlockAllSignals______________X(this);
     // block all signals to avoid retrigger
-    sliderOpacity->blockSignals(true);
-    toolSetMaxScale->blockSignals(true);
-    toolSetMinScale->blockSignals(true);
-    checkPolygons->blockSignals(true);
-    checkPolylines->blockSignals(true);
-    checkPoints->blockSignals(true);
-    spinCacheSize->blockSignals(true);
-    spinCacheExpiration->blockSignals(true);
 
     // opacity and visibility settings
     sliderOpacity->setValue(mapfile->getOpacity());
@@ -119,14 +113,7 @@ void CMapPropSetup::slotPropertiesChanged()
     spinCacheExpiration->setValue(mapfile->getCacheExpiration());
 
     // unblock all signals
-    sliderOpacity->blockSignals(false);
-    toolSetMaxScale->blockSignals(false);
-    toolSetMinScale->blockSignals(false);
-    checkPolygons->blockSignals(false);
-    checkPolylines->blockSignals(false);
-    checkPoints->blockSignals(false);
-    spinCacheSize->blockSignals(false);
-    spinCacheExpiration->blockSignals(false);
+    X_____________UnBlockAllSignals_____________X(this);
 }
 
 void CMapPropSetup::slotScaleChanged(const QPointF& s)
diff --git a/src/map/CMapPropSetup.h b/src/map/CMapPropSetup.h
index 424e7c7..9e44a7c 100644
--- a/src/map/CMapPropSetup.h
+++ b/src/map/CMapPropSetup.h
@@ -31,10 +31,10 @@ public:
     virtual ~CMapPropSetup();
 
 protected slots:
-    void slotPropertiesChanged();
+    void slotPropertiesChanged() override;
 
 protected:
-    void resizeEvent(QResizeEvent * e);
+    void resizeEvent(QResizeEvent * e) override;
 
 private slots:
     void slotScaleChanged(const QPointF& s);
diff --git a/src/map/CMapRMAP.cpp b/src/map/CMapRMAP.cpp
index e138ef9..321caca 100644
--- a/src/map/CMapRMAP.cpp
+++ b/src/map/CMapRMAP.cpp
@@ -107,10 +107,10 @@ CMapRMAP::CMapRMAP(const QString &filename, CMapDraw *parent)
     QPoint p1;
     QPoint p2;
     QPoint p3;
-    projXY c0;
-    projXY c1;
-    projXY c2;
-    projXY c3;
+    projXY c0 = {0,0};
+    projXY c1 = {0,0};
+    projXY c2 = {0,0};
+    projXY c3 = {0,0};
 
     bool pointsAreLongLat = true;
     QString projection;
@@ -419,7 +419,7 @@ CMapRMAP::level_t& CMapRMAP::findBestLevel(const QPointF& s)
 }
 
 
-void CMapRMAP::draw(IDrawContext::buffer_t& buf)
+void CMapRMAP::draw(IDrawContext::buffer_t& buf) /* override */
 {
     if(map->needsRedraw())
     {
diff --git a/src/map/CMapRMAP.h b/src/map/CMapRMAP.h
index 599f8bf..fce8d59 100644
--- a/src/map/CMapRMAP.h
+++ b/src/map/CMapRMAP.h
@@ -25,11 +25,11 @@ class CMapDraw;
 
 class CMapRMAP : public IMap
 {
-    Q_OBJECT;
+    Q_OBJECT
 public:
     CMapRMAP(const QString& filename, CMapDraw *parent);
 
-    void draw(IDrawContext::buffer_t& buf);
+    void draw(IDrawContext::buffer_t& buf) override;
 
 private:
     struct level_t
@@ -60,23 +60,23 @@ private:
     QString filename;
 
     /// total width in number of px
-    qint32 xsize_px;
+    qint32 xsize_px = 0;
     /// total height in number of px
-    qint32 ysize_px;
+    qint32 ysize_px = 0;
     /// width of a tile in number of px
-    quint32 tileSizeX;
+    quint32 tileSizeX = 0;
     /// height of a tile in number of px
-    quint32 tileSizeY;
+    quint32 tileSizeY = 0;
     /// all pre-scaled levels
     QList<level_t> levels;
     /// reference point [m] or [°] (left hand side of map)
-    qreal xref1;
+    qreal xref1 = 0;
     /// reference point [m] or [°] (top of map)
-    qreal yref1;
+    qreal yref1 = 0;
     /// reference point [m] or [°] (right hand side of map)
-    qreal xref2;
+    qreal xref2 = 0;
     /// reference point [m] or [°] (bottom of map)
-    qreal yref2;
+    qreal yref2 = 0;
 
     QPointF scale;
 };
diff --git a/src/map/CMapTMS.cpp b/src/map/CMapTMS.cpp
index 645a44c..e457187 100644
--- a/src/map/CMapTMS.cpp
+++ b/src/map/CMapTMS.cpp
@@ -161,9 +161,9 @@ CMapTMS::CMapTMS(const QString &filename, CMapDraw *parent)
     QFileInfo fi(filename);
     slotSetCachePath(QDir(CMapDraw::getCacheRoot()).absoluteFilePath(fi.baseName()));
 
-    accessManager   = new QNetworkAccessManager(parent->thread());
-    connect(this, SIGNAL(sigQueueChanged()), this, SLOT(slotQueueChanged()));
-    connect(accessManager,SIGNAL(finished(QNetworkReply*)),this,SLOT(slotRequestFinished(QNetworkReply*)));
+    accessManager = new QNetworkAccessManager(parent->thread());
+    connect(this,          &CMapTMS::sigQueueChanged,        this, &CMapTMS::slotQueueChanged);
+    connect(accessManager, &QNetworkAccessManager::finished, this, &CMapTMS::slotRequestFinished);
 
     name = fi.baseName().replace("_", " ");
 
@@ -175,7 +175,7 @@ CMapTMS::~CMapTMS()
 //    map->reportStatusToCanvas(name, "");
 }
 
-void CMapTMS::getLayers(QListWidget& list)
+void CMapTMS::getLayers(QListWidget& list) /* override */
 {
     QMutexLocker lock(&mutex);
 
@@ -193,11 +193,11 @@ void CMapTMS::getLayers(QListWidget& list)
         item->setData(Qt::UserRole, i++);
     }
 
-    connect(&list, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(slotLayersChanged(QListWidgetItem*)));
+    connect(&list, &QListWidget::itemChanged, this, &CMapTMS::slotLayersChanged);
 }
 
 
-void CMapTMS::saveConfig(QSettings& cfg)
+void CMapTMS::saveConfig(QSettings& cfg) /* override */
 {
     QMutexLocker lock(&mutex);
 
@@ -249,9 +249,7 @@ void CMapTMS::loadConfig(QSettings& cfg)
     }
 }
 
-
-
-void CMapTMS::configureCache()
+void CMapTMS::configureCache() /* override */
 {
     QMutexLocker lock(&mutex);
 
@@ -416,7 +414,7 @@ QString CMapTMS::createUrl(const layer_t& layer, int x, int y, int z)
 }
 
 
-void CMapTMS::draw(IDrawContext::buffer_t& buf)
+void CMapTMS::draw(IDrawContext::buffer_t& buf) /* override */
 {
     QMutexLocker lock(&mutex);
 
diff --git a/src/map/CMapTMS.h b/src/map/CMapTMS.h
index 1e53bcf..af71aa2 100644
--- a/src/map/CMapTMS.h
+++ b/src/map/CMapTMS.h
@@ -35,19 +35,19 @@ public:
     CMapTMS(const QString& filename, CMapDraw *parent);
     virtual ~CMapTMS();
 
-    void draw(IDrawContext::buffer_t& buf);
+    void draw(IDrawContext::buffer_t& buf) override;
 
-    void getLayers(QListWidget& list);
+    void getLayers(QListWidget& list) override;
 
-    void saveConfig(QSettings& cfg);
+    void saveConfig(QSettings& cfg) override;
 
-    void loadConfig(QSettings& cfg);
+    void loadConfig(QSettings& cfg) override;
 
 signals:
     void sigQueueChanged();
 
 protected:
-    void configureCache();
+    void configureCache() override;
 
 private slots:
     void slotQueueChanged();
@@ -93,9 +93,9 @@ private:
     /// a queue with all tile urls to request
     QQueue<QString> urlQueue;
     /// the tile cache
-    IDiskCache * diskCache = 0;
+    IDiskCache * diskCache = nullptr;
     /// access manager to request tiles
-    QNetworkAccessManager * accessManager;
+    QNetworkAccessManager * accessManager = nullptr;
 
     QList<QString> urlPending;
 
diff --git a/src/map/CMapVRT.cpp b/src/map/CMapVRT.cpp
index 12401db..240199e 100644
--- a/src/map/CMapVRT.cpp
+++ b/src/map/CMapVRT.cpp
@@ -40,7 +40,7 @@ CMapVRT::CMapVRT(const QString &filename, CMapDraw *parent)
 
     dataset = (GDALDataset*)GDALOpen(filename.toUtf8(),GA_ReadOnly);
 
-    if(dataset == 0)
+    if(nullptr == dataset)
     {
         QMessageBox::warning(CMainWindow::getBestWidgetForParent(), tr("Error..."), tr("Failed to load file: %1").arg(filename));
         return;
@@ -50,13 +50,12 @@ CMapVRT::CMapVRT(const QString &filename, CMapDraw *parent)
     rasterBandCount = dataset->GetRasterCount();
     if(rasterBandCount == 1)
     {
-        GDALRasterBand * pBand;
-        pBand = dataset->GetRasterBand(1);
+        GDALRasterBand *pBand = dataset->GetRasterBand(1);
 
-        if(pBand == 0)
+        if(nullptr == pBand)
         {
             delete dataset;
-            dataset = 0;
+            dataset = nullptr;
             QMessageBox::warning(CMainWindow::getBestWidgetForParent(), tr("Error..."), tr("Failed to load file: %1").arg(filename));
             return;
         }
@@ -85,7 +84,7 @@ CMapVRT::CMapVRT(const QString &filename, CMapDraw *parent)
         else
         {
             delete dataset;
-            dataset = 0;
+            dataset = nullptr;
             QMessageBox::warning(CMainWindow::getBestWidgetForParent(), tr("Error..."), tr("File must be 8 bit palette or gray indexed."));
             return;
         }
@@ -105,24 +104,25 @@ CMapVRT::CMapVRT(const QString &filename, CMapDraw *parent)
 
 
     // ------- setup projection ---------------
-    char str[1024] = {0};
+    char str[1025] = {0};
     if(dataset->GetProjectionRef())
     {
-        strncpy(str,dataset->GetProjectionRef(),sizeof(str));
+        strncpy(str, dataset->GetProjectionRef(), sizeof(str) - 1);
     }
-    char * ptr = str;
+
     OGRSpatialReference oSRS;
-    oSRS.importFromWkt(&ptr);
-    oSRS.exportToProj4(&ptr);
+    char *wkt = str;
+    oSRS.importFromWkt(&wkt);
 
-    qDebug() << ptr;
+    char *proj4 = nullptr;
+    oSRS.exportToProj4(&proj4);
+    pjsrc = pj_init_plus(proj4);
+    free(proj4);
 
-    pjsrc = pj_init_plus(ptr);
-    free(ptr);
     if(pjsrc == 0)
     {
         delete dataset;
-        dataset = 0;
+        dataset = nullptr;
         QMessageBox::warning(CMainWindow::getBestWidgetForParent(), tr("Error..."), tr("No georeference information found."));
         return;
     }
@@ -171,7 +171,7 @@ CMapVRT::~CMapVRT()
     delete dataset;
 }
 
-void CMapVRT::draw(IDrawContext::buffer_t& buf)
+void CMapVRT::draw(IDrawContext::buffer_t& buf) /* override */
 {
     if(map->needsRedraw())
     {
diff --git a/src/map/CMapVRT.h b/src/map/CMapVRT.h
index 38e3339..f5eb1b5 100644
--- a/src/map/CMapVRT.h
+++ b/src/map/CMapVRT.h
@@ -32,7 +32,7 @@ public:
     CMapVRT(const QString& filename, CMapDraw *parent);
     virtual ~CMapVRT();
 
-    void draw(IDrawContext::buffer_t& buf);
+    void draw(IDrawContext::buffer_t& buf) override;
 
 
 
@@ -46,17 +46,17 @@ private:
     QVector<QRgb> colortable;
 
     /// width in number of px
-    quint32 xsize_px;
+    quint32 xsize_px = 0;
     /// height in number of px
-    quint32 ysize_px;
+    quint32 ysize_px = 0;
 
     /// scale [px/m]
-    qreal xscale;
+    qreal xscale = 0;
     /// scale [px/m]
-    qreal yscale;
+    qreal yscale = 0;
 
-    qreal xrot;
-    qreal yrot;
+    qreal xrot = 0;
+    qreal yrot = 0;
 
     QPointF ref1;
     QPointF ref2;
diff --git a/src/map/CMapWMTS.cpp b/src/map/CMapWMTS.cpp
index 0e65fb8..e6fb58c 100644
--- a/src/map/CMapWMTS.cpp
+++ b/src/map/CMapWMTS.cpp
@@ -190,7 +190,7 @@ CMapWMTS::CMapWMTS(const QString &filename, CMapDraw *parent)
         QString str = xmlTileMatrixSet.namedItem("SupportedCRS").toElement().text();
 
         char * ptr1 = (char*)malloc(str.toLatin1().size() + 1);
-        char * ptr2 = 0;
+        char * ptr2 = nullptr;
 
         strncpy(ptr1,str.toLatin1().data(), str.toLatin1().size() + 1);
         OGRSpatialReference oSRS;
@@ -247,8 +247,8 @@ CMapWMTS::CMapWMTS(const QString &filename, CMapDraw *parent)
     slotSetCachePath(QDir(CMapDraw::getCacheRoot()).absoluteFilePath(fi.baseName()));
 
     accessManager   = new QNetworkAccessManager(parent->thread());
-    connect(this, SIGNAL(sigQueueChanged()), this, SLOT(slotQueueChanged()));
-    connect(accessManager,SIGNAL(finished(QNetworkReply*)),this,SLOT(slotRequestFinished(QNetworkReply*)));
+    connect(this,          &CMapWMTS::sigQueueChanged,       this, &CMapWMTS::slotQueueChanged);
+    connect(accessManager, &QNetworkAccessManager::finished, this, &CMapWMTS::slotRequestFinished);
 
     name = fi.baseName().replace("_", " ");
 
@@ -278,10 +278,10 @@ void CMapWMTS::getLayers(QListWidget& list)
         item->setData(Qt::UserRole, i++);
     }
 
-    connect(&list, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(slotLayersChanged(QListWidgetItem*)));
+    connect(&list, &QListWidget::itemChanged, this, &CMapWMTS::slotLayersChanged);
 }
 
-void CMapWMTS::saveConfig(QSettings& cfg)
+void CMapWMTS::saveConfig(QSettings& cfg) /* override */
 {
     QMutexLocker lock(&mutex);
 
@@ -303,7 +303,7 @@ void CMapWMTS::saveConfig(QSettings& cfg)
     cfg.setValue("enabledLayers", enabled);
 }
 
-void CMapWMTS::loadConfig(QSettings& cfg)
+void CMapWMTS::loadConfig(QSettings& cfg) /* override */
 {
     QMutexLocker lock(&mutex);
 
@@ -451,7 +451,7 @@ void CMapWMTS::slotRequestFinished(QNetworkReply* reply)
     slotQueueChanged();
 }
 
-void CMapWMTS::draw(IDrawContext::buffer_t& buf)
+void CMapWMTS::draw(IDrawContext::buffer_t& buf) /* override */
 {
     QMutexLocker lock(&mutex);
 
diff --git a/src/map/CMapWMTS.h b/src/map/CMapWMTS.h
index 5b7a13f..af77262 100644
--- a/src/map/CMapWMTS.h
+++ b/src/map/CMapWMTS.h
@@ -39,20 +39,20 @@ public:
     CMapWMTS(const QString& filename, CMapDraw *parent);
     virtual ~CMapWMTS();
 
-    void draw(IDrawContext::buffer_t& buf);
+    void draw(IDrawContext::buffer_t& buf) override;
 
-    void getLayers(QListWidget& list);
+    void getLayers(QListWidget& list) override;
 
-    void saveConfig(QSettings& cfg);
+    void saveConfig(QSettings& cfg) override;
 
-    void loadConfig(QSettings& cfg);
+    void loadConfig(QSettings& cfg) override;
 
 
 signals:
     void sigQueueChanged();
 
 protected:
-    void configureCache();
+    void configureCache() override;
 
 private slots:
     void slotQueueChanged();
@@ -116,9 +116,9 @@ private:
     /// a queue with all tile urls to request
     QQueue<QString> urlQueue;
     /// the tile cache
-    IDiskCache * diskCache = 0;
+    IDiskCache * diskCache = nullptr;
     /// access manager to request tiles
-    QNetworkAccessManager * accessManager;
+    QNetworkAccessManager * accessManager = nullptr;
 
     QList<QString> urlPending;
 
diff --git a/src/map/IMap.cpp b/src/map/IMap.cpp
index df44e1b..8716b39 100644
--- a/src/map/IMap.cpp
+++ b/src/map/IMap.cpp
@@ -38,7 +38,7 @@ IMap::~IMap()
     delete setup;
 }
 
-void IMap::saveConfig(QSettings& cfg)
+void IMap::saveConfig(QSettings& cfg) /* override */
 {
     IDrawObject::saveConfig(cfg);
 
@@ -56,14 +56,14 @@ void IMap::saveConfig(QSettings& cfg)
     }
 }
 
-void IMap::loadConfig(QSettings& cfg)
+void IMap::loadConfig(QSettings& cfg) /* override */
 {
     IDrawObject::loadConfig(cfg);
 
-    slotSetShowPolygons(cfg.value("showPolygons", getShowPolygons()).toBool());
-    slotSetShowPolylines(cfg.value("showPolylines", getShowPolylines()).toBool());
-    slotSetShowPOIs(cfg.value("showPOIs", getShowPOIs()).toBool());
-    slotSetCacheSize(cfg.value("cacheSizeMB", getCacheSize()).toInt());
+    slotSetShowPolygons   (cfg.value("showPolygons",    getShowPolygons()   ).toBool());
+    slotSetShowPolylines  (cfg.value("showPolylines",   getShowPolylines()  ).toBool());
+    slotSetShowPOIs       (cfg.value("showPOIs",        getShowPOIs()       ).toBool());
+    slotSetCacheSize      (cfg.value("cacheSizeMB",     getCacheSize()      ).toInt());
     slotSetCacheExpiration(cfg.value("cacheExpiration", getCacheExpiration()).toInt());
 }
 
@@ -78,7 +78,7 @@ IMapProp *IMap::getSetup()
 }
 
 
-void IMap::convertRad2M(QPointF &p)
+void IMap::convertRad2M(QPointF &p) const
 {
     if(pjsrc == 0)
     {
@@ -87,7 +87,7 @@ void IMap::convertRad2M(QPointF &p)
     pj_transform(pjtar,pjsrc,1,0,&p.rx(),&p.ry(),0);
 }
 
-void IMap::convertM2Rad(QPointF &p)
+void IMap::convertM2Rad(QPointF &p) const
 {
     if(pjsrc == 0)
     {
diff --git a/src/map/IMap.h b/src/map/IMap.h
index 0beb616..774147a 100644
--- a/src/map/IMap.h
+++ b/src/map/IMap.h
@@ -36,9 +36,9 @@ public:
     IMap(quint32 features, CMapDraw * parent);
     virtual ~IMap();
 
-    void saveConfig(QSettings& cfg);
+    void saveConfig(QSettings& cfg) override;
 
-    void loadConfig(QSettings& cfg);
+    void loadConfig(QSettings& cfg) override;
 
     enum features_e
     {
@@ -54,7 +54,7 @@ public:
        @brief Test if map has been loaded successfully
        @return Return false if map is not loaded
      */
-    bool activated()
+    bool activated() const
     {
         return isActivated;
     }
@@ -94,54 +94,54 @@ public:
        @brief Return copyright notice if any
        @return If no copyright notice has been decoded the string will be empty
      */
-    const QString& getCopyright()
+    const QString& getCopyright() const
     {
         return copyright;
     }
 
-    bool hasFeatureVisibility()
+    bool hasFeatureVisibility() const
     {
         return flagsFeature & eFeatVisibility;
     }
-    bool hasFeatureVectorItems()
+    bool hasFeatureVectorItems() const
     {
         return flagsFeature & eFeatVectorItems;
     }
-    bool hasFeatureTileCache()
+    bool hasFeatureTileCache() const
     {
         return flagsFeature & eFeatTileCache;
     }
-    bool hasFeatureLayers()
+    bool hasFeatureLayers() const
     {
         return flagsFeature & eFeatLayers;
     }
 
-    bool getShowPolygons()
+    bool getShowPolygons() const
     {
         return showPolygons;
     }
 
-    bool getShowPolylines()
+    bool getShowPolylines() const
     {
         return showPolylines;
     }
 
-    bool getShowPOIs()
+    bool getShowPOIs() const
     {
         return showPOIs;
     }
 
-    const QString& getCachePath()
+    const QString& getCachePath() const
     {
         return cachePath;
     }
 
-    qint32 getCacheSize()
+    qint32 getCacheSize() const
     {
         return cacheSizeMB;
     }
 
-    qint32 getCacheExpiration()
+    qint32 getCacheExpiration() const
     {
         return cacheExpiration;
     }
@@ -193,8 +193,8 @@ public slots:
 
 
 protected:
-    void convertRad2M(QPointF &p);
-    void convertM2Rad(QPointF &p);
+    void convertRad2M(QPointF &p) const;
+    void convertM2Rad(QPointF &p) const;
 
 
     /**
diff --git a/src/map/IMapList.ui b/src/map/IMapList.ui
index 213a84e..69b51e6 100644
--- a/src/map/IMapList.ui
+++ b/src/map/IMapList.ui
@@ -149,6 +149,39 @@ I don't want to read the documentation!</string>
     <string>Activate</string>
    </property>
   </action>
+  <action name="actionMoveUp">
+   <property name="icon">
+    <iconset resource="../resources.qrc">
+     <normaloff>:/icons/32x32/Up.png</normaloff>:/icons/32x32/Up.png</iconset>
+   </property>
+   <property name="text">
+    <string>Move Up</string>
+   </property>
+   <property name="toolTip">
+    <string>Hide map behind previous map</string>
+   </property>
+  </action>
+  <action name="actionMoveDown">
+   <property name="icon">
+    <iconset resource="../resources.qrc">
+     <normaloff>:/icons/32x32/Down.png</normaloff>:/icons/32x32/Down.png</iconset>
+   </property>
+   <property name="text">
+    <string>Move down</string>
+   </property>
+   <property name="toolTip">
+    <string>Show map on top of next map</string>
+   </property>
+  </action>
+  <action name="actionReloadMaps">
+   <property name="icon">
+    <iconset resource="../resources.qrc">
+     <normaloff>:/icons/32x32/Reset.png</normaloff>:/icons/32x32/Reset.png</iconset>
+   </property>
+   <property name="text">
+    <string>Reload Maps</string>
+   </property>
+  </action>
  </widget>
  <customwidgets>
   <customwidget>
diff --git a/src/map/IMapProp.cpp b/src/map/IMapProp.cpp
index 3c21757..368c3a7 100644
--- a/src/map/IMapProp.cpp
+++ b/src/map/IMapProp.cpp
@@ -24,7 +24,7 @@ IMapProp::IMapProp(IMap *mapfile, CMapDraw *map)
     : mapfile(mapfile)
     , map(map)
 {
-    connect(mapfile, SIGNAL(sigPropertiesChanged()), this, SLOT(slotPropertiesChanged()));
+    connect(mapfile, &IMap::sigPropertiesChanged, this, &IMapProp::slotPropertiesChanged);
 }
 
 IMapProp::~IMapProp()
diff --git a/src/map/IMapProp.h b/src/map/IMapProp.h
index 0ff6237..bd57529 100644
--- a/src/map/IMapProp.h
+++ b/src/map/IMapProp.h
@@ -33,7 +33,7 @@ public:
 
 
 protected slots:
-    virtual void slotPropertiesChanged()= 0;
+    virtual void slotPropertiesChanged() = 0;
 
 protected:
     IMap * mapfile;
diff --git a/src/map/IMapPropSetup.cpp b/src/map/IMapPropSetup.cpp
index 717776b..0fdbaae 100644
--- a/src/map/IMapPropSetup.cpp
+++ b/src/map/IMapPropSetup.cpp
@@ -24,7 +24,7 @@ IMapPropSetup::IMapPropSetup(IMap *mapfile, CMapDraw *map)
     : mapfile(mapfile)
     , map(map)
 {
-    connect(mapfile, SIGNAL(sigPropertiesChanged()), this, SLOT(slotPropertiesChanged()));
+    connect(mapfile, &IMap::sigPropertiesChanged, this, &IMapPropSetup::slotPropertiesChanged);
 }
 
 IMapPropSetup::~IMapPropSetup()
diff --git a/src/map/cache/CDiskCache.cpp b/src/map/cache/CDiskCache.cpp
index 1daf662..b9fdc1a 100644
--- a/src/map/cache/CDiskCache.cpp
+++ b/src/map/cache/CDiskCache.cpp
@@ -39,7 +39,7 @@ CDiskCache::CDiskCache(const QString &path, qint32 size, qint32 days, QObject *
     timer = new QTimer(this);
     timer->setSingleShot(false);
     timer->start(20000);
-    connect(timer, SIGNAL(timeout()), this, SLOT(slotCleanup()));
+    connect(timer, &QTimer::timeout, this, &CDiskCache::slotCleanup);
 }
 
 CDiskCache::~CDiskCache()
diff --git a/src/map/cache/CDiskCache.h b/src/map/cache/CDiskCache.h
index b201b6d..f3bf709 100644
--- a/src/map/cache/CDiskCache.h
+++ b/src/map/cache/CDiskCache.h
@@ -34,9 +34,9 @@ public:
     CDiskCache(const QString& path, qint32 size, qint32 days, QObject *parent);
     virtual ~CDiskCache();
 
-    virtual void store(const QString& key, QImage& img);
-    virtual void restore(const QString& key, QImage& img);
-    virtual bool contains(const QString& key);
+    void store(const QString& key, QImage& img) override;
+    void restore(const QString& key, QImage& img) override;
+    bool contains(const QString& key) override;
 
 private slots:
     void slotCleanup();
diff --git a/src/map/garmin/CGarminStrTbl6.cpp b/src/map/garmin/CGarminStrTbl6.cpp
index 2f8246f..3b3ac2a 100644
--- a/src/map/garmin/CGarminStrTbl6.cpp
+++ b/src/map/garmin/CGarminStrTbl6.cpp
@@ -98,7 +98,7 @@ void CGarminStrTbl6::get(CFileExt& file, quint32 offset, type_e t, QStringList&
     p = (quint8*)data.data();
 
     fill();
-    while(idx < sizeof(buffer))
+    while(idx < (sizeof(buffer) - 1))
     {
         c1 = reg >> 26;
         reg <<= 6;
diff --git a/src/map/garmin/CGarminStrTbl6.h b/src/map/garmin/CGarminStrTbl6.h
index 0624b46..0c83f4b 100644
--- a/src/map/garmin/CGarminStrTbl6.h
+++ b/src/map/garmin/CGarminStrTbl6.h
@@ -26,7 +26,7 @@ public:
     CGarminStrTbl6(const quint16 codepage, const quint8 mask, QObject * parent);
     virtual ~CGarminStrTbl6();
 
-    void get(CFileExt& file, quint32 offset, type_e t, QStringList& info);
+    void get(CFileExt& file, quint32 offset, type_e t, QStringList& info) override;
 
 private:
     static const char str6tbl1[];
@@ -35,10 +35,10 @@ private:
 
     void fill();
     /// temp shift reg buffer
-    quint32 reg;
+    quint32 reg = 0;
     /// bits in buffer
-    quint32 bits;
+    quint32 bits = 0;
     /// pointer to current data;
-    const quint8 * p;
+    const quint8 * p = nullptr;
 };
 #endif                           //CGARMINSTRTBL6_H
diff --git a/src/map/garmin/CGarminStrTbl8.h b/src/map/garmin/CGarminStrTbl8.h
index d00b27b..d151dbf 100644
--- a/src/map/garmin/CGarminStrTbl8.h
+++ b/src/map/garmin/CGarminStrTbl8.h
@@ -27,6 +27,6 @@ public:
     CGarminStrTbl8(const quint16 codepage, const quint8 mask, QObject * parent);
     virtual ~CGarminStrTbl8();
 
-    void get(CFileExt& file, quint32 offset, type_e t, QStringList& info);
+    void get(CFileExt& file, quint32 offset, type_e t, QStringList& info) override;
 };
 #endif                           //CGARMINSTRTBL8_H
diff --git a/src/map/garmin/CGarminStrTblUtf8.h b/src/map/garmin/CGarminStrTblUtf8.h
index 6d5e1dc..b8568c9 100644
--- a/src/map/garmin/CGarminStrTblUtf8.h
+++ b/src/map/garmin/CGarminStrTblUtf8.h
@@ -26,6 +26,6 @@ public:
     CGarminStrTblUtf8(const quint16 codepage, const quint8 mask, QObject * parent);
     virtual ~CGarminStrTblUtf8();
 
-    void get(CFileExt& file, quint32 offset, type_e t, QStringList& info);
+    void get(CFileExt& file, quint32 offset, type_e t, QStringList& info) override;
 };
-#endif                           //CGARMINSTRTBLUTF8_H
+#endif //CGARMINSTRTBLUTF8_H
diff --git a/src/map/garmin/CGarminTyp.cpp b/src/map/garmin/CGarminTyp.cpp
index b302325..1db3818 100644
--- a/src/map/garmin/CGarminTyp.cpp
+++ b/src/map/garmin/CGarminTyp.cpp
@@ -454,7 +454,7 @@ bool CGarminTyp::parsePolygon(QDataStream& in, QMap<quint32, polygon_property>&
         default:
             if(!tainted)
             {
-                QMessageBox::warning(CMainWindow::getBestWidgetForParent(), QObject::tr("Warning..."), QObject::tr("This is a typ file with unknown polygon encoding. Please report!"), QMessageBox::Abort, QMessageBox::Abort);
+                QMessageBox::warning(CMainWindow::getBestWidgetForParent(), tr("Warning..."), tr("This is a typ file with unknown polygon encoding. Please report!"), QMessageBox::Abort, QMessageBox::Abort);
                 tainted = true;
             }
             qDebug() << "Failed polygon:" << typ << subtyp << hex << typ << subtyp << ctyp;
@@ -835,7 +835,7 @@ bool CGarminTyp::parsePolyline(QDataStream& in, QMap<quint32, polyline_property>
         default:
             if(!tainted)
             {
-                QMessageBox::warning(CMainWindow::getBestWidgetForParent(), QObject::tr("Warning..."), QObject::tr("This is a typ file with unknown polyline encoding. Please report!"), QMessageBox::Abort, QMessageBox::Abort);
+                QMessageBox::warning(CMainWindow::getBestWidgetForParent(), tr("Warning..."), tr("This is a typ file with unknown polyline encoding. Please report!"), QMessageBox::Abort, QMessageBox::Abort);
                 tainted = true;
             }
 
diff --git a/src/map/garmin/CGarminTyp.h b/src/map/garmin/CGarminTyp.h
index 6d66d26..cb4b64f 100644
--- a/src/map/garmin/CGarminTyp.h
+++ b/src/map/garmin/CGarminTyp.h
@@ -23,6 +23,7 @@
 
 class CGarminTyp
 {
+    Q_DECLARE_TR_FUNCTIONS(CGarminTyp)
 public:
     CGarminTyp() = default;
     virtual ~CGarminTyp() = default;
@@ -225,17 +226,17 @@ protected:
         quint32 arraySize;
     };
 
-    quint16 version;
-    quint16 codepage;
-    quint16 year;
-    quint8 month;
-    quint8 day;
-    quint8 hour;
-    quint8 minutes;
-    quint8 seconds;
-
-    quint16 fid;
-    quint16 pid;
+    quint16 version = 0;
+    quint16 codepage = 0;
+    quint16 year = 0;
+    quint8 month = 0;
+    quint8 day = 0;
+    quint8 hour = 0;
+    quint8 minutes = 0;
+    quint8 seconds = 0;
+
+    quint16 fid = 0;
+    quint16 pid = 0;
 
     typ_section_t sectPoints;
     typ_section_t sectPolylines;
diff --git a/src/map/garmin/IGarminStrTbl.h b/src/map/garmin/IGarminStrTbl.h
index b27b4fd..2d95dfa 100644
--- a/src/map/garmin/IGarminStrTbl.h
+++ b/src/map/garmin/IGarminStrTbl.h
@@ -68,11 +68,11 @@ protected:
 
     // conversion of strings
     quint16 codepage;
-    QTextCodec * codec = 0;
+    QTextCodec * codec = nullptr;
     const quint8 mask;
     quint32 mask32;
     quint64 mask64;
 
-    char buffer[1024];
+    char buffer[1025];
 };
 #endif                           //IGARMINSTRTBL_H
diff --git a/src/map/mapsforge/types.cpp b/src/map/mapsforge/types.cpp
index c1731b2..324bb20 100644
--- a/src/map/mapsforge/types.cpp
+++ b/src/map/mapsforge/types.cpp
@@ -32,7 +32,7 @@ QDataStream& operator>>(QDataStream& s, uintX& v)
         s >> tmp;
     }
 
-    v.val |= tmp << shift;
+    v.val |= quint64(tmp) << shift;
 
     return s;
 }
@@ -57,7 +57,7 @@ QDataStream& operator>>(QDataStream& s, intX& v)
     }
     else
     {
-        v.val |= tmp << shift;
+        v.val |= quint64(tmp) << shift;
     }
 
     return s;
diff --git a/src/mouse/CMouseDummy.h b/src/mouse/CMouseDummy.h
index f52c805..9058a0a 100644
--- a/src/mouse/CMouseDummy.h
+++ b/src/mouse/CMouseDummy.h
@@ -19,7 +19,7 @@
 #ifndef CMOUSEDUMMY_H
 #define CMOUSEDUMMY_H
 
-#include <mouse/IMouse.h>
+#include "mouse/IMouse.h"
 
 
 class CMouseDummy : public IMouse
@@ -28,19 +28,19 @@ public:
     CMouseDummy();
     virtual ~CMouseDummy();
 
-    void draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect &rect)
+    void draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect &rect) override
     {
     }
-    void mousePressEvent(QMouseEvent * e)
+    void mousePressEvent(QMouseEvent * e) override
     {
     }
-    void mouseMoveEvent(QMouseEvent * e)
+    void mouseMoveEvent(QMouseEvent * e) override
     {
     }
-    void mouseReleaseEvent(QMouseEvent *e)
+    void mouseReleaseEvent(QMouseEvent *e) override
     {
     }
-    virtual void wheelEvent(QWheelEvent * e)
+    void wheelEvent(QWheelEvent * e) override
     {
     }
 };
diff --git a/src/mouse/CMouseEditArea.cpp b/src/mouse/CMouseEditArea.cpp
index 751bd6e..ead7069 100644
--- a/src/mouse/CMouseEditArea.cpp
+++ b/src/mouse/CMouseEditArea.cpp
@@ -85,19 +85,19 @@ void CMouseEditArea::slotCopyToNew()
     }
 
     IGisProject * project = CGisWidget::self().selectProject();
-    if(project == 0)
+    if(nullptr == project)
     {
         return;
     }
 
     QString name;
     CGisItemOvlArea * area = dynamic_cast<CGisItemOvlArea*>(CGisWidget::self().getItemByKey(key));
-    if(area != 0)
+    if(area != nullptr)
     {
         name = area->getName();
     }
 
-    name = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), QObject::tr("Edit name..."), QObject::tr("Enter new area name."), QLineEdit::Normal, name);
+    name = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), tr("Edit name..."), tr("Enter new area name."), QLineEdit::Normal, name);
 
     if(name.isEmpty())
     {
diff --git a/src/mouse/CMouseEditArea.h b/src/mouse/CMouseEditArea.h
index fb34880..c68edcd 100644
--- a/src/mouse/CMouseEditArea.h
+++ b/src/mouse/CMouseEditArea.h
@@ -32,17 +32,17 @@ public:
     CMouseEditArea(CGisItemOvlArea &area, CGisDraw * gis, CCanvas * parent);
     virtual ~CMouseEditArea();
 
-    void mousePressEvent(QMouseEvent * e);
+    void mousePressEvent(QMouseEvent * e) override;
 
 protected slots:
-    void slotAbort();
-    void slotCopyToNew();
-    void slotCopyToOrig();
+    void slotAbort()      override;
+    void slotCopyToNew()  override;
+    void slotCopyToOrig() override;
 
 protected:
-    void drawLine(const QPolygonF &l, const QColor color, int width, QPainter& p);
+    void drawLine(const QPolygonF &l, const QColor color, int width, QPainter& p) override;
 
-    IGisLine * getGisLine();
+    IGisLine * getGisLine() override;
 };
 
 #endif //CMOUSEEDITAREA_H
diff --git a/src/mouse/CMouseEditRte.cpp b/src/mouse/CMouseEditRte.cpp
index aad4d3c..10a2e20 100644
--- a/src/mouse/CMouseEditRte.cpp
+++ b/src/mouse/CMouseEditRte.cpp
@@ -95,7 +95,7 @@ void CMouseEditRte::slotCopyToNew()
     }
 
     IGisProject * project = CGisWidget::self().selectProject();
-    if(project == 0)
+    if(nullptr == project)
     {
         return;
     }
@@ -103,12 +103,12 @@ void CMouseEditRte::slotCopyToNew()
     /// @todo make this independent from track
     QString name;
     CGisItemRte * rte = dynamic_cast<CGisItemRte*>(CGisWidget::self().getItemByKey(key));
-    if(rte != 0)
+    if(rte != nullptr)
     {
         name = rte->getName();
     }
 
-    name = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), QObject::tr("Edit name..."), QObject::tr("Enter new route name."), QLineEdit::Normal, name);
+    name = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), tr("Edit name..."), tr("Enter new route name."), QLineEdit::Normal, name);
 
     if(name.isEmpty())
     {
diff --git a/src/mouse/CMouseEditRte.h b/src/mouse/CMouseEditRte.h
index 5008e12..c818665 100644
--- a/src/mouse/CMouseEditRte.h
+++ b/src/mouse/CMouseEditRte.h
@@ -32,16 +32,16 @@ public:
     CMouseEditRte(CGisItemRte &rte, CGisDraw * gis, CCanvas * parent);
     virtual ~CMouseEditRte();
 
-    void mousePressEvent(QMouseEvent * e);
+    void mousePressEvent(QMouseEvent * e) override;
 
 protected slots:
-    void slotAbort();
-    void slotCopyToNew();
-    void slotCopyToOrig();
+    void slotAbort()      override;
+    void slotCopyToNew()  override;
+    void slotCopyToOrig() override;
 
 
 protected:
-    IGisLine * getGisLine();
+    IGisLine* getGisLine() override;
 };
 
 #endif //CMOUSEEDITRTE_H
diff --git a/src/mouse/CMouseEditTrk.cpp b/src/mouse/CMouseEditTrk.cpp
index 01aaac4..c7ae8c0 100644
--- a/src/mouse/CMouseEditTrk.cpp
+++ b/src/mouse/CMouseEditTrk.cpp
@@ -100,7 +100,7 @@ void CMouseEditTrk::slotCopyToNew()
     }
 
     IGisProject * project = CGisWidget::self().selectProject();
-    if(project == 0)
+    if(nullptr == project)
     {
         return;
     }
@@ -108,19 +108,19 @@ void CMouseEditTrk::slotCopyToNew()
     /// @todo make this independent from track
     QString name;
     CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
-    if(trk != 0)
+    if(trk != nullptr)
     {
         name = trk->getName();
     }
 
-    name = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), QObject::tr("Edit name..."), QObject::tr("Enter new track name."), QLineEdit::Normal, name);
+    name = QInputDialog::getText(CMainWindow::getBestWidgetForParent(), tr("Edit name..."), tr("Enter new track name."), QLineEdit::Normal, name);
 
     if(name.isEmpty())
     {
         return;
     }
 
-    CMainWindow::self().getEelevationAt(points);
+    CMainWindow::self().getElevationAt(points);
 
     new CGisItemTrk(points,name, project, NOIDX);
 
diff --git a/src/mouse/CMouseEditTrk.h b/src/mouse/CMouseEditTrk.h
index 8d4f2fb..024a404 100644
--- a/src/mouse/CMouseEditTrk.h
+++ b/src/mouse/CMouseEditTrk.h
@@ -31,16 +31,16 @@ public:
     CMouseEditTrk(CGisItemTrk &trk, CGisDraw * gis, CCanvas * parent);
     virtual ~CMouseEditTrk();
 
-    void mousePressEvent(QMouseEvent * e);
+    void mousePressEvent(QMouseEvent * e) override;
 
 protected slots:
-    void slotAbort();
-    void slotCopyToNew();
-    void slotCopyToOrig();
+    void slotAbort()      override;
+    void slotCopyToNew()  override;
+    void slotCopyToOrig() override;
 
 
 protected:
-    IGisLine * getGisLine();
+    IGisLine* getGisLine() override;
     bool isNewLine = true;
 };
 
diff --git a/src/mouse/CMouseMoveWpt.cpp b/src/mouse/CMouseMoveWpt.cpp
index 1cdbe31..a72b056 100644
--- a/src/mouse/CMouseMoveWpt.cpp
+++ b/src/mouse/CMouseMoveWpt.cpp
@@ -109,7 +109,7 @@ void CMouseMoveWpt::mousePressEvent(QMouseEvent * e)
         QPointF pos = e->pos();
         gis->convertPx2Rad(pos);
         CGisItemWpt * wpt = dynamic_cast<CGisItemWpt*>(CGisWidget::self().getItemByKey(key));
-        if(wpt != 0)
+        if(wpt != nullptr)
         {
             wpt->setPosition(pos * RAD_TO_DEG);
         }
diff --git a/src/mouse/CMouseMoveWpt.h b/src/mouse/CMouseMoveWpt.h
index d5e46b2..6d8ba3c 100644
--- a/src/mouse/CMouseMoveWpt.h
+++ b/src/mouse/CMouseMoveWpt.h
@@ -34,14 +34,14 @@ public:
     CMouseMoveWpt(CGisItemWpt& wpt, CGisDraw * gis, CCanvas * parent);
     virtual ~CMouseMoveWpt();
 
-    void draw(QPainter& p,  CCanvas::redraw_e needsRedraw, const QRect &rect);
-    void mousePressEvent(QMouseEvent * e);
-    void mouseMoveEvent(QMouseEvent * e);
-    void mouseReleaseEvent(QMouseEvent *e);
-    void wheelEvent(QWheelEvent * e);
+    void draw(QPainter& p,  CCanvas::redraw_e needsRedraw, const QRect &rect) override;
+    void mousePressEvent(QMouseEvent *e) override;
+    void mouseMoveEvent(QMouseEvent *e) override;
+    void mouseReleaseEvent(QMouseEvent *e) override;
+    void wheelEvent(QWheelEvent *e) override;
 
 protected slots:
-    virtual void slotPanCanvas();
+    void slotPanCanvas() override;
 
 private:
     IGisItem::key_t key;
diff --git a/src/mouse/CMouseNormal.cpp b/src/mouse/CMouseNormal.cpp
index 4aaab45..8d78a9d 100644
--- a/src/mouse/CMouseNormal.cpp
+++ b/src/mouse/CMouseNormal.cpp
@@ -56,7 +56,7 @@ void CMouseNormal::stopTracking()
     if(!key.item.isEmpty())
     {
         CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
-        if(trk != 0)
+        if(trk != nullptr)
         {
             trk->setMouseFocusByPoint(NOPOINT, CGisItemTrk::eFocusMouseMove, "CMouseNormal");
         }
@@ -109,6 +109,7 @@ void CMouseNormal::mouseMoveEvent(QMouseEvent * e)
         case eStateIdle:
             CGisWidget::self().mouseMove(point);
 
+        //break; skip break intentionally
         case eStateHooverSingle:
         case eStateHooverMultiple:
         {
@@ -116,7 +117,7 @@ void CMouseNormal::mouseMoveEvent(QMouseEvent * e)
             if(!keyTrk.item.isEmpty())
             {
                 CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(keyTrk));
-                if(trk != 0)
+                if(trk != nullptr)
                 {
                     trk->setMouseFocusByPoint(point, CGisItemTrk::eFocusMouseMove, "CMouseNormal");
                 }
@@ -126,7 +127,7 @@ void CMouseNormal::mouseMoveEvent(QMouseEvent * e)
             if(!keyRte.item.isEmpty())
             {
                 CGisItemRte * rte = dynamic_cast<CGisItemRte*>(CGisWidget::self().getItemByKey(keyRte));
-                if(rte != 0)
+                if(rte != nullptr)
                 {
                     rte->setMouseFocusByPoint(point, CGisItemRte::eFocusMouseMove, "CMouseNormal");
                 }
@@ -183,11 +184,11 @@ void CMouseNormal::mouseReleaseEvent(QMouseEvent *e)
             case eStateUnclutterMultiple:
             {
                 const CScrOptUnclutter::item_t * scrOpt = screenUnclutter->selectItem(point);
-                if(scrOpt != 0)
+                if(scrOpt != nullptr)
                 {
                     IGisItem * item = CGisWidget::self().getItemByKey(scrOpt->key);
                     screenUnclutter->clear(); // CAUTION!! this will delete the object scrOpt is pointing to.
-                    scrOpt = 0;
+                    scrOpt = nullptr;
                     if(item)
                     {
                         item->treeWidget()->collapseAll();
@@ -360,7 +361,7 @@ void CMouseNormal::slotAddWpt()
     }
 
     IGisProject * project = CGisWidget::self().selectProject();
-    if(project == 0)
+    if(nullptr == project)
     {
         return;
     }
diff --git a/src/mouse/CMouseNormal.h b/src/mouse/CMouseNormal.h
index d3de5b8..a5d227a 100644
--- a/src/mouse/CMouseNormal.h
+++ b/src/mouse/CMouseNormal.h
@@ -38,13 +38,13 @@ public:
     CMouseNormal(CGisDraw * gis, CCanvas *canvas);
     virtual ~CMouseNormal();
 
-    void draw(QPainter& p,  CCanvas::redraw_e needsRedraw,  const QRect &rect);
-    void mousePressEvent(QMouseEvent * e);
-    void mouseMoveEvent(QMouseEvent * e);
-    void mouseReleaseEvent(QMouseEvent *e);
-    void mouseDoubleClickEvent(QMouseEvent *e);
-    void wheelEvent(QWheelEvent * e);
-    void keyPressEvent(QKeyEvent * e);
+    void draw(QPainter& p,  CCanvas::redraw_e needsRedraw,  const QRect &rect) override;
+    void mousePressEvent(QMouseEvent * e) override;
+    void mouseMoveEvent(QMouseEvent * e) override;
+    void mouseReleaseEvent(QMouseEvent *e) override;
+    void mouseDoubleClickEvent(QMouseEvent *e) override;
+    void wheelEvent(QWheelEvent * e) override;
+    void keyPressEvent(QKeyEvent * e) override;
 
 private slots:
     void slotAddWpt();
@@ -72,16 +72,11 @@ protected:
     enum item_selection_states_e
     {
         eStateIdle = 0
-                     /// there is only a single item close to the cursor
-        , eStateHooverSingle = 1
-                               /// there are multiple items close to the cursor
-        , eStateHooverMultiple = 2
-                                 /// not a real state, but at this value and above no map move is allowed to take place
-        , eStateNoMapMovePossible = 3
-                                    /// the user clicked on multiple cluttered items and gets now an uncluttered representation
-        , eStateUnclutterMultiple = 3
-                                    /// the user has selected a single item, show options how to proceed
-        , eStateShowItemOptions = 4
+        , eStateHooverSingle      = 1 //< there is only a single item close to the cursor
+        , eStateHooverMultiple    = 2 //< there are multiple items close to the cursor
+        , eStateNoMapMovePossible = 3 //< not a real state, but at this value and above no map move is allowed to take place
+        , eStateUnclutterMultiple = 3 //< the user clicked on multiple cluttered items and gets now an uncluttered representation
+        , eStateShowItemOptions   = 4 //< the user has selected a single item, show options how to proceed
     };
 
     item_selection_states_e stateItemSel = eStateIdle;
diff --git a/src/mouse/CMousePrint.h b/src/mouse/CMousePrint.h
index 2529a73..08d6588 100644
--- a/src/mouse/CMousePrint.h
+++ b/src/mouse/CMousePrint.h
@@ -31,11 +31,11 @@ public:
     CMousePrint(CGisDraw * gis, CCanvas * parent);
     virtual ~CMousePrint();
 
-    void draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect &rect);
-    void mousePressEvent(QMouseEvent * e);
-    void mouseMoveEvent(QMouseEvent * e);
-    void mouseReleaseEvent(QMouseEvent *e);
-    void wheelEvent(QWheelEvent * e);
+    void draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect &rect) override;
+    void mousePressEvent(QMouseEvent * e) override;
+    void mouseMoveEvent(QMouseEvent * e) override;
+    void mouseReleaseEvent(QMouseEvent *e) override;
+    void wheelEvent(QWheelEvent * e) override;
 
 private:
     QPoint lastPos;
diff --git a/src/mouse/CMouseRangeTrk.cpp b/src/mouse/CMouseRangeTrk.cpp
index df5410f..75a0697 100644
--- a/src/mouse/CMouseRangeTrk.cpp
+++ b/src/mouse/CMouseRangeTrk.cpp
@@ -100,7 +100,7 @@ void CMouseRangeTrk::mousePressEvent(QMouseEvent * e)
         case eStateIdle:
         {
             CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
-            if(trk != 0 && anchor != NOPOINTF)
+            if(trk != nullptr && anchor != NOPOINTF)
             {
                 anchor = trk->setMouseFocusByPoint(point, CGisItemTrk::eFocusMouseClick, "CMouseRangeTrk");
                 state = eStateSelectRange;
@@ -116,14 +116,14 @@ void CMouseRangeTrk::mousePressEvent(QMouseEvent * e)
         case eStateSelectRange:
         {
             CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
-            if(trk != 0 && anchor != NOPOINTF)
+            if(trk != nullptr && anchor != NOPOINTF)
             {
                 QPointF pt = trk->setMouseFocusByPoint(point, CGisItemTrk::eFocusMouseClick, "CMouseRangeTrk");
                 scrOptRange = new CScrOptRangeTrk(pt, trk, this);
-                connect(scrOptRange->toolHidePoints, SIGNAL(clicked()), this, SLOT(slotHidePoints()));
-                connect(scrOptRange->toolShowPoints, SIGNAL(clicked()), this, SLOT(slotShowPoints()));
-                connect(scrOptRange->toolActivity, SIGNAL(clicked()), this, SLOT(slotActivity()));
-                connect(scrOptRange->toolCopy, SIGNAL(clicked()), this, SLOT(slotCopy()));
+                connect(scrOptRange->toolHidePoints, &QToolButton::clicked, this, &CMouseRangeTrk::slotHidePoints);
+                connect(scrOptRange->toolShowPoints, &QToolButton::clicked, this, &CMouseRangeTrk::slotShowPoints);
+                connect(scrOptRange->toolActivity,   &QToolButton::clicked, this, &CMouseRangeTrk::slotActivity);
+                connect(scrOptRange->toolCopy,       &QToolButton::clicked, this, &CMouseRangeTrk::slotCopy);
 
                 state = eStateRangeSelected;
                 canvas->update();
@@ -135,7 +135,6 @@ void CMouseRangeTrk::mousePressEvent(QMouseEvent * e)
         case eStateRangeSelected:
         {
             resetState();
-            canvas->update();
             break;
         }
 
@@ -154,7 +153,7 @@ void CMouseRangeTrk::mouseMoveEvent(QMouseEvent * e)
     case eStateIdle:
     {
         CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
-        if(trk != 0)
+        if(trk != nullptr)
         {
             anchor = trk->setMouseFocusByPoint(point, CGisItemTrk::eFocusMouseMove, "CMouseRangeTrk");
             canvas->update();
@@ -175,7 +174,7 @@ void CMouseRangeTrk::mouseMoveEvent(QMouseEvent * e)
     case eStateSelectRange:
     {
         CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
-        if(trk != 0)
+        if(trk != nullptr)
         {
             anchor = trk->setMouseFocusByPoint(point, CGisItemTrk::eFocusMouseMove, "CMouseRangeTrk");
             canvas->update();
@@ -204,18 +203,24 @@ void CMouseRangeTrk::mouseReleaseEvent(QMouseEvent *e)
 
 void CMouseRangeTrk::wheelEvent(QWheelEvent * e)
 {
-    resetState();
+    if(state == eStateRangeSelected)
+    {
+        resetState();
+    }
 }
 
 void CMouseRangeTrk::keyPressEvent(QKeyEvent * e)
 {
-    resetState();
+    if(state == eStateRangeSelected)
+    {
+        resetState();
+    }
 }
 
 void CMouseRangeTrk::resetState()
 {
     CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
-    if(trk != 0)
+    if(trk != nullptr)
     {
         trk->setMouseFocusByPoint(NOPOINT, CGisItemTrk::eFocusMouseMove, "CMouseRangeTrk");
         trk->setMouseFocusByPoint(NOPOINT, CGisItemTrk::eFocusMouseClick, "CMouseRangeTrk");
@@ -225,7 +230,9 @@ void CMouseRangeTrk::resetState()
     {
         scrOptRange->deleteLater();
     }
-    state = eStateIdle;
+    state   = eStateIdle;
+    anchor  = NOPOINTF;
+    canvas->update();
 }
 
 void CMouseRangeTrk::slotHidePoints()
@@ -233,7 +240,7 @@ void CMouseRangeTrk::slotHidePoints()
     QMutexLocker lock(&IGisItem::mutexItems);
 
     CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
-    if(trk != 0)
+    if(trk != nullptr)
     {
         trk->hideSelectedPoints();
         canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
@@ -248,7 +255,7 @@ void CMouseRangeTrk::slotShowPoints()
     QMutexLocker lock(&IGisItem::mutexItems);
 
     CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
-    if(trk != 0)
+    if(trk != nullptr)
     {
         trk->showSelectedPoints();
         canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
@@ -263,7 +270,7 @@ void CMouseRangeTrk::slotActivity()
     QMutexLocker lock(&IGisItem::mutexItems);
 
     CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
-    if(trk != 0)
+    if(trk != nullptr)
     {
         trk->setActivity();
         canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
@@ -278,7 +285,7 @@ void CMouseRangeTrk::slotCopy()
     QMutexLocker lock(&IGisItem::mutexItems);
 
     CGisItemTrk * trk = dynamic_cast<CGisItemTrk*>(CGisWidget::self().getItemByKey(key));
-    if(trk != 0)
+    if(trk != nullptr)
     {
         trk->copySelectedPoints();
         canvas->slotTriggerCompleteUpdate(CCanvas::eRedrawGis);
diff --git a/src/mouse/CMouseRangeTrk.h b/src/mouse/CMouseRangeTrk.h
index 3291702..6ebaffd 100644
--- a/src/mouse/CMouseRangeTrk.h
+++ b/src/mouse/CMouseRangeTrk.h
@@ -35,12 +35,12 @@ public:
     CMouseRangeTrk(CGisItemTrk& trk, CGisDraw * gis, CCanvas * parent);
     virtual ~CMouseRangeTrk();
 
-    void draw(QPainter& p, CCanvas::redraw_e, const QRect &);
-    void mousePressEvent(QMouseEvent * e);
-    void mouseMoveEvent(QMouseEvent * e);
-    void mouseReleaseEvent(QMouseEvent *e);
-    void wheelEvent(QWheelEvent * e);
-    void keyPressEvent(QKeyEvent * e);
+    void draw(QPainter& p, CCanvas::redraw_e, const QRect &) override;
+    void mousePressEvent(QMouseEvent *e) override;
+    void mouseMoveEvent(QMouseEvent *e) override;
+    void mouseReleaseEvent(QMouseEvent *e) override;
+    void wheelEvent(QWheelEvent *e) override;
+    void keyPressEvent(QKeyEvent   *e) override;
 
 private slots:
     void slotHidePoints();
diff --git a/src/mouse/CMouseWptBubble.h b/src/mouse/CMouseWptBubble.h
index 26ade10..585fc72 100644
--- a/src/mouse/CMouseWptBubble.h
+++ b/src/mouse/CMouseWptBubble.h
@@ -34,11 +34,11 @@ public:
     CMouseWptBubble(const IGisItem::key_t& key, CGisDraw * gis, CCanvas * parent);
     virtual ~CMouseWptBubble();
 
-    virtual void draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect &rect);
-    virtual void mousePressEvent(QMouseEvent * e);
-    virtual void mouseMoveEvent(QMouseEvent * e);
-    virtual void mouseReleaseEvent(QMouseEvent *e);
-    virtual void wheelEvent(QWheelEvent * e);
+    void draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect &rect) override;
+    void mousePressEvent(QMouseEvent *e) override;
+    void mouseMoveEvent(QMouseEvent *e) override;
+    void mouseReleaseEvent(QMouseEvent *e) override;
+    void wheelEvent(QWheelEvent *e) override;
 
 private:
     const IGisItem::key_t& key;
diff --git a/src/mouse/CScrOptRangeTrk.cpp b/src/mouse/CScrOptRangeTrk.cpp
index 746e347..46e6b33 100644
--- a/src/mouse/CScrOptRangeTrk.cpp
+++ b/src/mouse/CScrOptRangeTrk.cpp
@@ -26,7 +26,7 @@
 CScrOptRangeTrk::CScrOptRangeTrk(const QPointF &point, CGisItemTrk * trk, IMouse *mouse, QWidget *parent)
     : IScrOpt(mouse)
 {
-    if(parent != 0)
+    if(parent != nullptr)
     {
         setParent(parent);
     }
@@ -40,10 +40,10 @@ CScrOptRangeTrk::CScrOptRangeTrk(const QPointF &point, CGisItemTrk * trk, IMouse
     move(point.toPoint() + QPoint(-width()/2,SCR_OPT_OFFSET));
     show();
 
-    connect(toolHidePoints, SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolShowPoints, SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolActivity,   SIGNAL(clicked()), this, SLOT(hide()));
-    connect(toolCopy,       SIGNAL(clicked()), this, SLOT(hide()));
+    connect(toolHidePoints, &QToolButton::clicked, this, &CScrOptRangeTrk::hide);
+    connect(toolShowPoints, &QToolButton::clicked, this, &CScrOptRangeTrk::hide);
+    connect(toolActivity,   &QToolButton::clicked, this, &CScrOptRangeTrk::hide);
+    connect(toolCopy,       &QToolButton::clicked, this, &CScrOptRangeTrk::hide);
 }
 
 CScrOptRangeTrk::~CScrOptRangeTrk()
diff --git a/src/mouse/CScrOptRangeTrk.h b/src/mouse/CScrOptRangeTrk.h
index 7ff1b94..6c149d8 100644
--- a/src/mouse/CScrOptRangeTrk.h
+++ b/src/mouse/CScrOptRangeTrk.h
@@ -27,10 +27,10 @@ class CGisItemTrk;
 class CScrOptRangeTrk : public IScrOpt, public Ui::IScrOptRangeTrk
 {
 public:
-    CScrOptRangeTrk(const QPointF& point, CGisItemTrk *trk, IMouse *mouse, QWidget * parent = 0);
+    CScrOptRangeTrk(const QPointF& point, CGisItemTrk *trk, IMouse *mouse, QWidget *parent = nullptr);
     virtual ~CScrOptRangeTrk();
 
-    void draw(QPainter& p);
+    void draw(QPainter& p) override;
 };
 
 #endif //CSCROPTRANGETRK_H
diff --git a/src/mouse/CScrOptUnclutter.cpp b/src/mouse/CScrOptUnclutter.cpp
index fa8911b..3c7f216 100644
--- a/src/mouse/CScrOptUnclutter.cpp
+++ b/src/mouse/CScrOptUnclutter.cpp
@@ -167,7 +167,7 @@ const CScrOptUnclutter::item_t * CScrOptUnclutter::selectItem(const QPoint& poin
             return &item;
         }
     }
-    return 0;
+    return nullptr;
 }
 
 void CScrOptUnclutter::draw(QPainter& p)
diff --git a/src/mouse/CScrOptUnclutter.h b/src/mouse/CScrOptUnclutter.h
index 8792d0b..313a4c3 100644
--- a/src/mouse/CScrOptUnclutter.h
+++ b/src/mouse/CScrOptUnclutter.h
@@ -50,8 +50,8 @@ public:
     IGisItem::key_t getItemKey(int index = 0);
     const item_t *selectItem(const QPoint& point);
 
-    void draw(QPainter& p);
-    void mouseMoveEvent(QMouseEvent * e);
+    void draw(QPainter& p) override;
+    void mouseMoveEvent(QMouseEvent * e) override;
 
 private:
     static const QPoint positions[9][8];
diff --git a/src/mouse/IMouse.cpp b/src/mouse/IMouse.cpp
index 5fca8b9..cd3efe3 100644
--- a/src/mouse/IMouse.cpp
+++ b/src/mouse/IMouse.cpp
@@ -17,8 +17,8 @@
 **********************************************************************************************/
 
 #include "canvas/CCanvas.h"
+#include "gis/CGisDraw.h"
 #include "mouse/IMouse.h"
-#include <gis/CGisDraw.h>
 
 #include <QtWidgets>
 
@@ -31,7 +31,7 @@ IMouse::IMouse(CGisDraw *gis, CCanvas *canvas)
     timer->setSingleShot(true);
     timer->setInterval(50);
 
-    connect(timer, SIGNAL(timeout()), this, SLOT(slotPanCanvas()));
+    connect(timer, &QTimer::timeout, this, &IMouse::slotPanCanvas);
 }
 
 IMouse::~IMouse()
diff --git a/src/mouse/IMouse.h b/src/mouse/IMouse.h
index b1e829b..2846166 100644
--- a/src/mouse/IMouse.h
+++ b/src/mouse/IMouse.h
@@ -19,7 +19,7 @@
 #ifndef IMOUSE_H
 #define IMOUSE_H
 
-#include <canvas/CCanvas.h>
+#include "canvas/CCanvas.h"
 
 #include <QCursor>
 #include <QObject>
@@ -45,14 +45,14 @@ public:
     };
 
     virtual void draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRect &rect) = 0;
-    virtual void mousePressEvent(QMouseEvent * e) = 0;
-    virtual void mouseMoveEvent(QMouseEvent * e) = 0;
+    virtual void mousePressEvent(QMouseEvent *e) = 0;
+    virtual void mouseMoveEvent(QMouseEvent *e) = 0;
     virtual void mouseReleaseEvent(QMouseEvent *e) = 0;
     virtual void mouseDoubleClickEvent(QMouseEvent *e)
     {
     }
-    virtual void wheelEvent(QWheelEvent * e) = 0;
-    virtual void keyPressEvent(QKeyEvent * e)
+    virtual void wheelEvent(QWheelEvent *e) = 0;
+    virtual void keyPressEvent(QKeyEvent *e)
     {
     }
 
@@ -61,12 +61,12 @@ public:
         Each mouse function is represented by a special cursor. The main
         widget uses this method to query the current cursor.
      */
-    operator const QCursor&()
+    operator const QCursor&() const
     {
         return cursor;
     }
 
-    CCanvas * getCanvas()
+    CCanvas * getCanvas() const
     {
         return canvas;
     }
diff --git a/src/mouse/IScrOpt.h b/src/mouse/IScrOpt.h
index 03e3160..83c7bab 100644
--- a/src/mouse/IScrOpt.h
+++ b/src/mouse/IScrOpt.h
@@ -46,11 +46,11 @@ public:
     }
 
     virtual void draw(QPainter& p) = 0;
-    void mouseMoveEvent(QMouseEvent *);
+    void mouseMoveEvent(QMouseEvent *) override;
 
 protected:
-    void enterEvent(QEvent * e);
-    void leaveEvent(QEvent * e);
+    void enterEvent(QEvent *e) override;
+    void leaveEvent(QEvent *e) override;
 
     QPoint origin;
     QPoint mousePos;
diff --git a/src/mouse/line/CLineOpAddPoint.h b/src/mouse/line/CLineOpAddPoint.h
index 0d4f55d..2b73df2 100644
--- a/src/mouse/line/CLineOpAddPoint.h
+++ b/src/mouse/line/CLineOpAddPoint.h
@@ -27,19 +27,19 @@ public:
     CLineOpAddPoint(SGisLine& points, CGisDraw *gis, CCanvas *canvas, IMouseEditLine *parent);
     virtual ~CLineOpAddPoint();
 
-    void mousePressEventEx(QMouseEvent * e);
-    void mouseMoveEventEx(QMouseEvent * e);
-    void mouseReleaseEventEx(QMouseEvent *e)
+    void mousePressEventEx(QMouseEvent *e) override;
+    void mouseMoveEventEx(QMouseEvent *e) override;
+    void mouseReleaseEventEx(QMouseEvent *e) override
     {
     }
 
-    void drawFg(QPainter& p);
+    void drawFg(QPainter& p) override;
 
-    void canvasPanned(QPointF pos);
+    void canvasPanned(QPointF pos) override;
 
     void append();
 
-    bool abortStep();
+    bool abortStep() override;
 
 private:
     bool addPoint = false;
diff --git a/src/mouse/line/CLineOpDeletePoint.h b/src/mouse/line/CLineOpDeletePoint.h
index 0083f26..2a2e778 100644
--- a/src/mouse/line/CLineOpDeletePoint.h
+++ b/src/mouse/line/CLineOpDeletePoint.h
@@ -27,13 +27,13 @@ public:
     CLineOpDeletePoint(SGisLine& points, CGisDraw *gis, CCanvas *canvas, IMouseEditLine *parent);
     virtual ~CLineOpDeletePoint();
 
-    void mousePressEventEx(QMouseEvent * e)
+    void mousePressEventEx(QMouseEvent *e) override
     {
     }
-    void mouseMoveEventEx(QMouseEvent * e);
-    void mouseReleaseEventEx(QMouseEvent *e);
+    void mouseMoveEventEx(QMouseEvent *e) override;
+    void mouseReleaseEventEx(QMouseEvent *e) override;
 
-    void drawFg(QPainter& p);
+    void drawFg(QPainter& p) override;
 
 private:
 };
diff --git a/src/mouse/line/CLineOpMovePoint.h b/src/mouse/line/CLineOpMovePoint.h
index d2eaa22..f318fd2 100644
--- a/src/mouse/line/CLineOpMovePoint.h
+++ b/src/mouse/line/CLineOpMovePoint.h
@@ -27,17 +27,17 @@ public:
     CLineOpMovePoint(SGisLine& points, CGisDraw *gis, CCanvas *canvas, IMouseEditLine *parent);
     virtual ~CLineOpMovePoint();
 
-    void mousePressEventEx(QMouseEvent * e);
-    void mouseMoveEventEx(QMouseEvent * e);
-    void mouseReleaseEventEx(QMouseEvent * e)
+    void mousePressEventEx(QMouseEvent * e) override;
+    void mouseMoveEventEx(QMouseEvent * e) override;
+    void mouseReleaseEventEx(QMouseEvent * e) override
     {
     }
 
-    void drawFg(QPainter& p);
+    void drawFg(QPainter& p) override;
 
-    void canvasPanned(QPointF pos);
+    void canvasPanned(QPointF pos) override;
 
-    bool abortStep();
+    bool abortStep() override;
 
 private:
     bool movePoint = false;
diff --git a/src/mouse/line/CLineOpSelectRange.cpp b/src/mouse/line/CLineOpSelectRange.cpp
index 655a93f..8e0f3f6 100644
--- a/src/mouse/line/CLineOpSelectRange.cpp
+++ b/src/mouse/line/CLineOpSelectRange.cpp
@@ -63,10 +63,10 @@ void CLineOpSelectRange::mousePressEventEx(QMouseEvent * e)
             }
 
             scrOptRangeLine = new CScrOptRangeLine(points[idx2nd].pixel, parentHandler, canvas);
-            connect(scrOptRangeLine->toolDelete, SIGNAL(clicked()), this, SLOT(slotDelete()));
-            connect(scrOptRangeLine->toolCalcRoute, SIGNAL(clicked()), this, SLOT(slotCalc()));
-            connect(scrOptRangeLine->toolDelete, SIGNAL(clicked()), scrOptRangeLine, SLOT(hide()));
-            connect(scrOptRangeLine->toolCalcRoute, SIGNAL(clicked()), scrOptRangeLine, SLOT(hide()));
+            connect(scrOptRangeLine->toolDelete,    &QToolButton::clicked, this,            &CLineOpSelectRange::slotDelete);
+            connect(scrOptRangeLine->toolCalcRoute, &QToolButton::clicked, this,            &CLineOpSelectRange::slotCalc);
+            connect(scrOptRangeLine->toolDelete,    &QToolButton::clicked, scrOptRangeLine.data(), &CScrOptRangeLine::hide);
+            connect(scrOptRangeLine->toolCalcRoute, &QToolButton::clicked, scrOptRangeLine.data(), &CScrOptRangeLine::hide);
 
             if(d < 2)
             {
@@ -129,12 +129,18 @@ void CLineOpSelectRange::mouseMoveEventEx(QMouseEvent * e)
 
 void CLineOpSelectRange::wheelEvent(QWheelEvent * e)
 {
-    resetState();
+    if(state == eState2nd)
+    {
+        resetState();
+    }
 }
 
 void CLineOpSelectRange::keyPressEvent(QKeyEvent * e)
 {
-    resetState();
+    if(state == eState2nd)
+    {
+        resetState();
+    }
 }
 
 
diff --git a/src/mouse/line/CLineOpSelectRange.h b/src/mouse/line/CLineOpSelectRange.h
index 6c2a95d..6b375cd 100644
--- a/src/mouse/line/CLineOpSelectRange.h
+++ b/src/mouse/line/CLineOpSelectRange.h
@@ -32,17 +32,17 @@ public:
     CLineOpSelectRange(SGisLine& points, CGisDraw *gis, CCanvas *canvas, IMouseEditLine *parent);
     virtual ~CLineOpSelectRange();
 
-    void mousePressEventEx(QMouseEvent * e);
-    void mouseMoveEventEx(QMouseEvent * e);
-    void mouseReleaseEventEx(QMouseEvent *e)
+    void mousePressEventEx(QMouseEvent *e) override;
+    void mouseMoveEventEx(QMouseEvent *e) override;
+    void mouseReleaseEventEx(QMouseEvent *e) override
     {
     }
-    void wheelEvent(QWheelEvent * e);
-    void keyPressEvent(QKeyEvent * e);
+    void wheelEvent(QWheelEvent * e) override;
+    void keyPressEvent(QKeyEvent * e) override;
 
-    void drawFg(QPainter& p);
+    void drawFg(QPainter& p) override;
 
-    bool abortStep();
+    bool abortStep() override;
 
 private slots:
     void slotDelete();
diff --git a/src/mouse/line/CScrOptEditLine.h b/src/mouse/line/CScrOptEditLine.h
index fe7d353..1fe4713 100644
--- a/src/mouse/line/CScrOptEditLine.h
+++ b/src/mouse/line/CScrOptEditLine.h
@@ -29,7 +29,7 @@ public:
     CScrOptEditLine(IMouse *mouse);
     virtual ~CScrOptEditLine();
 
-    void draw(QPainter& p)
+    void draw(QPainter& p) override
     {
     }
 };
diff --git a/src/mouse/line/CScrOptRangeLine.cpp b/src/mouse/line/CScrOptRangeLine.cpp
index dafb2aa..d88e3f0 100644
--- a/src/mouse/line/CScrOptRangeLine.cpp
+++ b/src/mouse/line/CScrOptRangeLine.cpp
@@ -22,7 +22,7 @@
 CScrOptRangeLine::CScrOptRangeLine(const QPointF &point, IMouse *mouse, QWidget * parent)
     : IScrOpt(mouse)
 {
-    if(parent != 0)
+    if(parent != nullptr)
     {
         setParent(parent);
     }
diff --git a/src/mouse/line/CScrOptRangeLine.h b/src/mouse/line/CScrOptRangeLine.h
index 2754053..baaf644 100644
--- a/src/mouse/line/CScrOptRangeLine.h
+++ b/src/mouse/line/CScrOptRangeLine.h
@@ -29,7 +29,7 @@ public:
     CScrOptRangeLine(const QPointF &point, IMouse *mouse, QWidget *parent);
     virtual ~CScrOptRangeLine();
 
-    void draw(QPainter& p);
+    void draw(QPainter& p) override;
 };
 
 #endif //CSCROPTRANGELINE_H
diff --git a/src/mouse/line/ILineOp.cpp b/src/mouse/line/ILineOp.cpp
index f1ff381..73492a5 100644
--- a/src/mouse/line/ILineOp.cpp
+++ b/src/mouse/line/ILineOp.cpp
@@ -36,7 +36,7 @@ ILineOp::ILineOp(SGisLine& points, CGisDraw *gis, CCanvas *canvas, IMouseEditLin
     timerRouting = new QTimer(this);
     timerRouting->setSingleShot(true);
     timerRouting->setInterval(400);
-    connect(timerRouting, SIGNAL(timeout()), this, SLOT(slotTimeoutRouting()));
+    connect(timerRouting, &QTimer::timeout, this, &ILineOp::slotTimeoutRouting);
 }
 
 ILineOp::~ILineOp()
diff --git a/src/mouse/line/IMouseEditLine.cpp b/src/mouse/line/IMouseEditLine.cpp
index ebd7439..610a4d9 100644
--- a/src/mouse/line/IMouseEditLine.cpp
+++ b/src/mouse/line/IMouseEditLine.cpp
@@ -54,10 +54,7 @@ IMouseEditLine::IMouseEditLine(const IGisItem::key_t &key, const QPointF& point,
 
 IMouseEditLine::IMouseEditLine(const IGisItem::key_t &key, IGisLine &src, bool enableStatus, const QString &type, CGisDraw *gis, CCanvas *parent)
     : IMouse(gis, parent)
-    , idxHistory(NOIDX)
     , key(key)
-    , doCanvasPanning(false)
-    , lineOp(0)
     , enableStatus(enableStatus)
     , type(type)
 {
@@ -95,25 +92,42 @@ IMouseEditLine::~IMouseEditLine()
     delete scrOptEditLine;
 }
 
+void IMouseEditLine::setCanvasPanning(bool enable)
+{
+    doCanvasPanning = enable;
+
+    if(enable)
+    {
+        scrOptEditLine->toolUndo->hide();
+        scrOptEditLine->toolRedo->hide();
+    }
+    else
+    {
+        scrOptEditLine->toolUndo->show();
+        scrOptEditLine->toolRedo->show();
+    }
+}
+
+
 void IMouseEditLine::commonSetup()
 {
     // create permanent line edit on screen options
     scrOptEditLine = new CScrOptEditLine(this);
-    connect(scrOptEditLine->pushSaveOrig,    SIGNAL(clicked()), this, SLOT(slotCopyToOrig()   ));
-    connect(scrOptEditLine->pushSaveNew,     SIGNAL(clicked()), this, SLOT(slotCopyToNew()    ));
-    connect(scrOptEditLine->pushAbort,       SIGNAL(clicked()), this, SLOT(slotAbort()        ));
+    connect(scrOptEditLine->pushSaveOrig,    &QPushButton::clicked, this, &IMouseEditLine::slotCopyToOrig   );
+    connect(scrOptEditLine->pushSaveNew,     &QPushButton::clicked, this, &IMouseEditLine::slotCopyToNew    );
+    connect(scrOptEditLine->pushAbort,       &QPushButton::clicked, this, &IMouseEditLine::slotAbort        );
 
-    connect(scrOptEditLine->toolMovePoint,   SIGNAL(clicked()), this, SLOT(slotMovePoint()    ));
-    connect(scrOptEditLine->toolSelectRange, SIGNAL(clicked()), this, SLOT(slotSelectRange()  ));
-    connect(scrOptEditLine->toolAddPoint,    SIGNAL(clicked()), this, SLOT(slotAddPoint()     ));
-    connect(scrOptEditLine->toolDeletePoint, SIGNAL(clicked()), this, SLOT(slotDeletePoint()  ));
+    connect(scrOptEditLine->toolMovePoint,   &QPushButton::clicked, this, &IMouseEditLine::slotMovePoint    );
+    connect(scrOptEditLine->toolSelectRange, &QPushButton::clicked, this, &IMouseEditLine::slotSelectRange  );
+    connect(scrOptEditLine->toolAddPoint,    &QPushButton::clicked, this, &IMouseEditLine::slotAddPoint     );
+    connect(scrOptEditLine->toolDeletePoint, &QPushButton::clicked, this, &IMouseEditLine::slotDeletePoint  );
 
-    connect(scrOptEditLine->toolNoRoute,     SIGNAL(clicked()), this, SLOT(slotNoRouting()    ));
-    connect(scrOptEditLine->toolAutoRoute,   SIGNAL(clicked()), this, SLOT(slotAutoRouting()  ));
-    connect(scrOptEditLine->toolVectorRoute, SIGNAL(clicked()), this, SLOT(slotVectorRouting()));
+    connect(scrOptEditLine->toolNoRoute,     &QPushButton::clicked, this, &IMouseEditLine::slotNoRouting    );
+    connect(scrOptEditLine->toolAutoRoute,   &QPushButton::clicked, this, &IMouseEditLine::slotAutoRouting  );
+    connect(scrOptEditLine->toolVectorRoute, &QPushButton::clicked, this, &IMouseEditLine::slotVectorRouting);
 
-    connect(scrOptEditLine->toolUndo,        SIGNAL(clicked()), this, SLOT(slotUndo()         ));
-    connect(scrOptEditLine->toolRedo,        SIGNAL(clicked()), this, SLOT(slotRedo()         ));
+    connect(scrOptEditLine->toolUndo,        &QPushButton::clicked, this, &IMouseEditLine::slotUndo         );
+    connect(scrOptEditLine->toolRedo,        &QPushButton::clicked, this, &IMouseEditLine::slotRedo         );
 
     SETTINGS;
     int mode = cfg.value("Route/drawMode",0).toInt();
@@ -199,7 +213,7 @@ void IMouseEditLine::draw(QPainter& p, CCanvas::redraw_e needsRedraw, const QRec
 
     // draw magenta arrows (with white background)
     p.setBrush(Qt::magenta);
-    CDraw::arrows(pixelLine, QRectF(), p, 10, 80);
+    CDraw::arrows(pixelLine, QRectF(), p, 10, 80, 1.0);
 
     p.setPen(Qt::NoPen);
     p.setBrush(Qt::white);
@@ -303,7 +317,7 @@ void IMouseEditLine::slotDeletePoint()
     delete lineOp;
     lineOp = new CLineOpDeletePoint(points, gis, canvas, this);
     changeCursor();
-    doCanvasPanning = false;
+    setCanvasPanning(false);
 }
 
 void IMouseEditLine::slotSelectRange()
@@ -312,7 +326,7 @@ void IMouseEditLine::slotSelectRange()
     delete lineOp;
     lineOp = new CLineOpSelectRange(points, gis, canvas, this);
     changeCursor();
-    doCanvasPanning = false;
+    setCanvasPanning(false);
 }
 
 void IMouseEditLine::slotMovePoint()
@@ -321,7 +335,7 @@ void IMouseEditLine::slotMovePoint()
     delete lineOp;
     lineOp = new CLineOpMovePoint(points, gis, canvas, this);
     changeCursor();
-    doCanvasPanning = false;
+    setCanvasPanning(false);
 }
 
 void IMouseEditLine::slotAddPoint()
@@ -330,7 +344,7 @@ void IMouseEditLine::slotAddPoint()
     delete lineOp;
     lineOp = new CLineOpAddPoint(points, gis, canvas, this);
     changeCursor();
-    doCanvasPanning = false;
+    setCanvasPanning(false);
 }
 
 void IMouseEditLine::slotNoRouting()
@@ -364,7 +378,7 @@ void IMouseEditLine::slotAbortEx(bool showMB)
     bool doAbort = ( idxHistory == 0 ) || !showMB;
     if(!doAbort)
     {
-        doAbort = (QMessageBox::Yes == QMessageBox::question(NULL, "Abort", "Do you really want to abort?\nAny modifications done will be discarded.", QMessageBox::Yes | QMessageBox::No));
+        doAbort = (QMessageBox::Yes == QMessageBox::question(nullptr, "Abort", "Do you really want to abort?\nAny modifications done will be discarded.", QMessageBox::Yes | QMessageBox::No));
     }
 
     if(doAbort)
@@ -379,9 +393,9 @@ void IMouseEditLine::slotCopyToOrig()
     QMutexLocker lock(&IGisItem::mutexItems);
 
     IGisLine * l = getGisLine();
-    if(l != 0)
+    if(l != nullptr)
     {
-        CMainWindow::self().getEelevationAt(points);
+        CMainWindow::self().getElevationAt(points);
         l->setDataFromPolyline(points);
     }
 
@@ -420,6 +434,11 @@ void IMouseEditLine::storeToHistory(const SGisLine& line)
 
 void IMouseEditLine::slotUndo()
 {
+    if(lineOp != nullptr)
+    {
+        lineOp->abortStep();
+    }
+
     if(idxHistory > 0)
     {
         idxHistory--;
@@ -434,6 +453,12 @@ void IMouseEditLine::slotUndo()
 
 void IMouseEditLine::slotRedo()
 {
+    // abort operation
+    if(lineOp != nullptr)
+    {
+        lineOp->abortStep();
+    }
+
     if(idxHistory < (history.size() - 1))
     {
         idxHistory++;
diff --git a/src/mouse/line/IMouseEditLine.h b/src/mouse/line/IMouseEditLine.h
index 4ca9c3b..410cfb8 100644
--- a/src/mouse/line/IMouseEditLine.h
+++ b/src/mouse/line/IMouseEditLine.h
@@ -58,22 +58,19 @@ public:
     IMouseEditLine(const IGisItem::key_t &key, IGisLine &src, bool enableStatus, const QString& type, CGisDraw * gis, CCanvas * parent);
     virtual ~IMouseEditLine();
 
-    void draw(QPainter& p,  CCanvas::redraw_e needsRedraw, const QRect &rect);
-    void mousePressEvent(QMouseEvent * e);
-    void mouseMoveEvent(QMouseEvent * e);
-    void mouseReleaseEvent(QMouseEvent *e);
-    void wheelEvent(QWheelEvent * e);
-    void keyPressEvent(QKeyEvent * e);
+    void draw(QPainter& p,  CCanvas::redraw_e needsRedraw, const QRect &rect) override;
+    void mousePressEvent(QMouseEvent *e) override;
+    void mouseMoveEvent(QMouseEvent *e) override;
+    void mouseReleaseEvent(QMouseEvent *e) override;
+    void wheelEvent(QWheelEvent *e) override;
+    void keyPressEvent(QKeyEvent   *e) override;
 
     void abortStep();
 
     bool useAutoRouting();
     bool useVectorRouting();
 
-    void setCanvasPanning(bool enable)
-    {
-        doCanvasPanning = enable;
-    }
+    void setCanvasPanning(bool enable);
 
     void storeToHistory(const SGisLine& line);
     void restoreFromHistory(SGisLine& line);
@@ -111,7 +108,7 @@ protected slots:
     void slotUndo();
     void slotRedo();
 
-    void slotPanCanvas();
+    void slotPanCanvas() override;
 
 protected:
     virtual void drawLine(const QPolygonF& l, const QColor color, int width, QPainter& p);
@@ -152,7 +149,7 @@ private:
     QPolygonF pixelSubs;
 
     /// the current active line operation (move, add, delete...)
-    ILineOp  * lineOp = 0;
+    ILineOp  * lineOp = nullptr;
 
     bool enableStatus;
 
diff --git a/src/mouse/line/IScrOptEditLine.ui b/src/mouse/line/IScrOptEditLine.ui
index a2548cc..cae915d 100644
--- a/src/mouse/line/IScrOptEditLine.ui
+++ b/src/mouse/line/IScrOptEditLine.ui
@@ -35,22 +35,9 @@
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
-      <spacer name="horizontalSpacer_2">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>40</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-     <item>
       <widget class="QPushButton" name="pushSaveOrig">
        <property name="text">
-        <string>Save to orignal</string>
+        <string>Save to original</string>
        </property>
       </widget>
      </item>
diff --git a/src/plot/CPlot.cpp b/src/plot/CPlot.cpp
index 3655e69..68202b4 100644
--- a/src/plot/CPlot.cpp
+++ b/src/plot/CPlot.cpp
@@ -16,27 +16,33 @@
 
 **********************************************************************************************/
 
+#include "helpers/CLimit.h"
 #include "plot/CPlot.h"
 #include "plot/CPlotAxis.h"
 
-CPlot::CPlot(CGisItemTrk * trk, CPlotData::axistype_e type, const QString& xLabel, const QString& yLabel, qreal factor, fTrkPtGetVal getX, fTrkPtGetVal getY, QWidget * parent)
+CPlot::CPlot(CGisItemTrk * trk,  CLimit& limit, CPlotData::axistype_e type, const QString& xLabel, const QString& yLabel, qreal factor, fTrkPtGetVal getX, fTrkPtGetVal getY, QWidget * parent)
     : IPlot(trk, type, eModeNormal, parent)
+    , limit(limit)
     , factor(factor)
     , getX(getX)
     , getY(getY)
 {
+    connect(&limit, &CLimit::sigChanged, this, &CPlot::setLimits);
+
     setXLabel(xLabel);
     setYLabel(yLabel);
 
     updateData();
 }
 
-CPlot::CPlot(CGisItemTrk *trk, QWidget *parent)
+CPlot::CPlot(CGisItemTrk *trk,  CLimit& limit, QWidget *parent)
     : IPlot(trk, CPlotData::eAxisLinear, eModeNormal, parent)
+    , limit(limit)
 {
+    connect(&limit, &CLimit::sigChanged, this, &CPlot::setLimits);
 }
 
-void CPlot::setup(CPlotData::axistype_e type, const QString &xLabel, const QString &yLabel, qreal f, fTrkPtGetVal funcGetX, fTrkPtGetVal funcGetY)
+void CPlot::setup(const QString& source, CPlotData::axistype_e type, const QString &xLabel, const QString &yLabel, qreal f, fTrkPtGetVal funcGetX, fTrkPtGetVal funcGetY)
 {
     data->setXAxisType(type);
     setXLabel(xLabel);
@@ -44,22 +50,16 @@ void CPlot::setup(CPlotData::axistype_e type, const QString &xLabel, const QStri
     factor = f;
     getX = funcGetX;
     getY = funcGetY;
+    limit.setSource(source);
     updateData();
 }
 
-void CPlot::setLimits(qreal min, qreal max)
-{
-    minLimit = min;
-    maxLimit = max;
-
-    setLimitsOnData(minLimit, maxLimit);
-}
 
 void CPlot::updateData()
 {
     clear();
 
-    if(isHidden() || (getX == nullptr) || (getY == nullptr) || trk->getTotalElapsedSeconds() == 0)
+    if(isHidden() || (getX == nullptr) || (getY == nullptr))
     {
         resetZoom();
         update();
@@ -72,12 +72,8 @@ void CPlot::updateData()
     {
         foreach(const CGisItemTrk::trkpt_t& trkpt, seg.pts)
         {
-            if(trkpt.flags & CGisItemTrk::trkpt_t::eHidden)
-            {
-                continue;
-            }
-
-            if(getY(trkpt) != NOFLOAT)
+            if(!(trkpt.flags & CGisItemTrk::trkpt_t::eHidden)
+               && getY(trkpt) != NOFLOAT)
             {
                 line << QPointF(getX(trkpt), getY(trkpt) * factor);
             }
@@ -85,12 +81,12 @@ void CPlot::updateData()
     }
 
     newLine(line, "GPS");
-    setLimitsOnData(minLimit, maxLimit);
+    setLimits();
 }
 
 void CPlot::setMouseFocus(const CGisItemTrk::trkpt_t * ptMouseMove)
 {
-    if(ptMouseMove == 0 ||  getX == nullptr || getY == nullptr)
+    if(nullptr == ptMouseMove ||  getX == nullptr || getY == nullptr)
     {
         if(posMouse != NOPOINT)
         {
@@ -111,11 +107,11 @@ void CPlot::setMouseFocus(const CGisItemTrk::trkpt_t * ptMouseMove)
     update();
 }
 
-void CPlot::setLimitsOnData(qreal min, qreal max)
+void CPlot::setLimits()
 {
     IPlot::setLimits();
-    data->ymin = min == NOFLOAT ? data->ymin : min;
-    data->ymax = max == NOFLOAT ? data->ymax : max;
+    data->ymin = limit.getMin() == NOFLOAT ? data->ymin : limit.getMin();
+    data->ymax = limit.getMax() == NOFLOAT ? data->ymax : limit.getMax();
 
     data->y().setLimits(data->ymin, data->ymax);
     resetZoom();
diff --git a/src/plot/CPlot.h b/src/plot/CPlot.h
index 8d1046e..7292114 100644
--- a/src/plot/CPlot.h
+++ b/src/plot/CPlot.h
@@ -23,27 +23,28 @@
 #include "plot/IPlot.h"
 #include <functional>
 
+class CLimit;
+
 class CPlot : public IPlot
 {
     Q_OBJECT
 public:
-    CPlot(CGisItemTrk *trk, CPlotData::axistype_e type, const QString &xLabel, const QString &yLabel, qreal factor, fTrkPtGetVal getX, fTrkPtGetVal getY, QWidget *parent);
-    CPlot(CGisItemTrk *trk, QWidget *parent);
+    CPlot(CGisItemTrk *trk, CLimit& limit, CPlotData::axistype_e type, const QString &xLabel, const QString &yLabel, qreal factor, fTrkPtGetVal getX, fTrkPtGetVal getY, QWidget *parent);
+    CPlot(CGisItemTrk *trk, CLimit& limit,  QWidget *parent);
     virtual ~CPlot() = default;
 
-    void setup(CPlotData::axistype_e type, const QString &xLabel, const QString &yLabel, qreal f, fTrkPtGetVal funcGetX, fTrkPtGetVal funcGetY);
+    void setup(const QString &source, CPlotData::axistype_e type, const QString &xLabel, const QString &yLabel, qreal f, fTrkPtGetVal funcGetX, fTrkPtGetVal funcGetY);
 
-    void setLimits(qreal min, qreal max);
+    void updateData() override;
 
-    void updateData();
+    void setMouseFocus(const CGisItemTrk::trkpt_t * ptMouseMove) override;
 
-    void setMouseFocus(const CGisItemTrk::trkpt_t * ptMouseMove);
+public slots:
+    void setLimits();
 
 private:
-    void setLimitsOnData(qreal min, qreal max);
+    CLimit& limit;
 
-    qreal maxLimit = NOFLOAT;
-    qreal minLimit = NOFLOAT;
     qreal factor = 1.0;
     fTrkPtGetVal getX = nullptr;
     fTrkPtGetVal getY = nullptr;
diff --git a/src/plot/CPlotAxis.cpp b/src/plot/CPlotAxis.cpp
index 4bc2ae5..be57a06 100644
--- a/src/plot/CPlotAxis.cpp
+++ b/src/plot/CPlotAxis.cpp
@@ -25,15 +25,6 @@ inline qreal qLog10(qreal x)
     return qLn(x)/qLn(10);
 }
 
-CPlotAxis::CPlotAxis( QObject * parent )
-    : QObject( parent )
-{
-}
-
-CPlotAxis::~CPlotAxis()
-{
-}
-
 void CPlotAxis::setLimits(qreal min, qreal max)
 {
     limitMin = min;
@@ -43,11 +34,9 @@ void CPlotAxis::setLimits(qreal min, qreal max)
 
 void CPlotAxis::setMinMax( qreal givenMin, qreal givenMax )
 {
-    qreal tmp;
-
-    if ( givenMin == givenMax )
+    if(givenMin == givenMax)
     {
-        if ( givenMin != 0.0 )
+        if(0.0 != givenMin)
         {
             givenMin -= givenMin / 10.0;
             givenMax += givenMax / 10.0;
@@ -61,9 +50,7 @@ void CPlotAxis::setMinMax( qreal givenMin, qreal givenMax )
 
     if ( givenMin > givenMax )
     {
-        tmp = givenMax;
-        givenMax = givenMin;
-        givenMin = tmp;
+        qSwap(givenMin, givenMax);
     }
 
     usedMin = givenMin;
@@ -77,39 +64,20 @@ void CPlotAxis::setMinMax( qreal givenMin, qreal givenMax )
 
 void CPlotAxis::calc()
 {
-    qreal tmpAbs = ( usedMax - usedMin ) < 0 ? -( usedMax - usedMin ) : ( usedMax - usedMin );
-    qreal tmp = qLog10( tmpAbs / 10.0 );
+    qreal tmpAbs = qFabs(usedMax - usedMin);
+    qreal tmp    = qLog10( tmpAbs / 10.0 );
 
-    qreal exponent = ( int ) tmp;
-    qreal residue = tmp - exponent;
+    qreal exponent = (int) tmp;
+    qreal residue  = tmp - exponent;
 
-    if ( residue < 0 && residue <= qLog10( 0.1 ) )
-    {
-        residue = qLog10( 0.1 );
-    }
-    else if ( residue > qLog10( 0.1 ) && residue <= qLog10( 0.2 ) )
-    {
-        residue = qLog10( 0.2 );
-    }
-    else if ( residue > qLog10( 0.2 ) && residue <= qLog10( 0.5 ) )
-    {
-        residue = qLog10( 0.5 );
-    }
-    else if ( residue > qLog10( 0.5 ) && residue <= qLog10( 1.0 ) )
-    {
-        residue = qLog10( 1.0 );
-    }
-    else if ( residue > qLog10( 1.0 ) && residue <= qLog10( 2.0 ) )
-    {
-        residue = qLog10( 2.0 );
-    }
-    else if ( residue > qLog10( 2.0 ) && residue <= qLog10( 5.0 ) )
+    qreal resSteps[] = {qLog10(0.1), qLog10(0.2), qLog10(0.5), qLog10(1.0), qLog10(2.0), qLog10(5.0), qLog10(10.0)};
+    for(const qreal &step : resSteps)
     {
-        residue = qLog10( 5.0 );
-    }
-    else if ( residue > qLog10( 5.0 ) && residue <= qLog10( 10. ) )
-    {
-        residue = qLog10( 10. );
+        if(residue <= step)
+        {
+            residue = step;
+            break;
+        }
     }
 
     interval = exponent + residue;
@@ -118,7 +86,7 @@ void CPlotAxis::calc()
     if ( autoscale )
     {
         usedMin = qFloor( usedMin / interval ) * interval;
-        usedMax = qCeil( usedMax / interval ) * interval;
+        usedMax = qCeil(  usedMax / interval ) * interval;
     }
 
     int t1 = ( int )( usedMin / interval + 0.5);
@@ -134,49 +102,21 @@ void CPlotAxis::calc()
 
 const QString CPlotAxis::fmtsgl( qreal val )
 {
-    static QString f;
-    qreal tmp;
-    qreal exponent;
-    qreal residue;
+    int exponent = (0. == val) ? 0 : (int) qLog10( qFabs(val) );
 
-    if ( val != 0 )
-    {
-        if ( val < 0 )
-        {
-            val = -val;
-        }
-        tmp = qLog10( val );
-        exponent = ( int ) tmp;
-        residue = tmp - exponent;
-    }
-    else
+    QString f;
+    if ( abs(exponent) > 5 )
     {
-        exponent = 0;
-        residue = 0;
+        f = "%1.2e";
     }
-
-    if ( abs( ( int ) exponent ) > 5 )
+    else if ( exponent >= 0 )
     {
-        f = "%1.2e";
+        f = "%" + QString( "%1" ).arg(exponent + 1)
+            + ( (0 == exponent) ? ".1f" : ".0f" );
     }
     else
     {
-        if ( exponent >= 0 )
-        {
-            f = "%" + QString( "%1" ).arg( ( int ) ( exponent + 1 ) );
-            if ( ( exponent == 0 ) && ( residue < 0 ) )
-            {
-                f += ".1f";
-            }
-            else
-            {
-                f += ".0f";
-            }
-        }
-        else
-        {
-            f = "%1." + QString( "%1" ).arg( ( int ) ( -exponent + 1 ) ) + "f";
-        }
+        f = "%1." + QString( "%1" ).arg(-exponent + 1) + "f";
     }
 
     return f;
@@ -201,49 +141,29 @@ const QString CPlotAxis::fmtsgl( qreal val )
  */
 const QString CPlotAxis::fmtdbl( qreal val )
 {
-    static QString f;
-    qreal tmp;
-    qreal exponent;
-    qreal residue;
+    int exponent = 0;
+    qreal residue  = 0;
 
     if ( val != 0 )
     {
-        if ( val < 0 )
-        {
-            val = -val;
-        }
-        tmp = qLog10( val );
-        exponent = ( int ) tmp;
-        residue = tmp - exponent;
-    }
-    else
-    {
-        exponent = 0;
-        residue = 0;
+        qreal tmp = qLog10( qFabs(val) );
+        exponent  = (int) tmp;
+        residue   = tmp - exponent;
     }
 
-    if ( abs( ( int ) exponent ) > 5 )
+    QString f;
+    if ( abs(exponent) > 5 )
     {
         f = "%1.3e";
     }
+    else if ( exponent >= 0 )
+    {
+        f = "%" + QString( "%1" ).arg(exponent + 1)
+            + ( ((0. == exponent) && (0 > residue)) ? ".2f" : ".1f" );
+    }
     else
     {
-        if ( exponent >= 0 )
-        {
-            f = "%" + QString( "%1" ).arg( ( int ) ( exponent + 1 ) );
-            if ( ( exponent == 0 ) && ( residue < 0 ) )
-            {
-                f += ".2f";
-            }
-            else
-            {
-                f += ".1f";
-            }
-        }
-        else
-        {
-            f = "%1." + QString( "%1" ).arg( ( int ) ( -exponent + 2 ) ) + "f";
-        }
+        f = "%1." + QString( "%1" ).arg(-exponent + 2) + "f";
     }
     return f;
 }
@@ -262,18 +182,15 @@ int CPlotAxis::getScaleWidth( const QFontMetrics& m )
     }
 
     int width = 0;
-    int tmp;
     QString format_single_prec = fmtsgl( interval );
 
     const tic_t * t = ticmark();
-    while ( t )
+    while (nullptr != t)
     {
-        tmp = m.width( QString().sprintf( format_single_prec.toLatin1().data(), t->val ) );
-        if ( tmp > width )
-        {
-            width = tmp;
-        }
-        t = ticmark( t );
+        int tmp = m.width( QString().sprintf( format_single_prec.toLatin1().data(), t->val ) );
+        width = qMax(width, tmp);
+
+        t = ticmark(t);
     }
     return width;
 }
@@ -295,66 +212,66 @@ const CPlotAxis::tic_t* CPlotAxis::ticmark( const tic_t * t )
     switch ( ticType )
     {
     case eNoTic:
-        return 0;
+        return nullptr;
         break;
 
     case eTicMinMax:
-        if ( t == NULL )
+        if (nullptr == t)
         {
             tic.val = usedMin;
             firstTic = true;
         }
-        else if ( firstTic == true )
+        else if (firstTic)
         {
             tic.val = usedMax;
             firstTic = false;
         }
         else
         {
-            return 0;
+            return nullptr;
         }
         break;
 
     case eTicNorm:
-        if ( interval == 0 )
+        if (0. == interval)
         {
             //qWarning() << "CPlotAxis::ticmark() mode 'norm': interval == 0";
-            return 0;
+            return nullptr;
         }
-        if ( t == NULL )
+        if (nullptr == t)
         {
             tic.val = ticStart;
         }
         else
         {
             tic.val += interval;
-            if ( ( tic.val - usedMax ) > interval / 20 )
+            if(tic.val > usedMax)
             {
-                return 0;
+                return nullptr;
             }
         }
         break;
 
     case eTicFull:
-        if ( t == NULL )
+        if (nullptr == t)
         {
             tic.val = usedMin;
             firstTic = true;
         }
-        else if ( firstTic == true )
+        else if (firstTic)
         {
             tic.val = ticStart;
             firstTic = false;
         }
-        else if ( lastTic == true )
+        else if (lastTic)
         {
             lastTic = false;
-            return 0;
+            return nullptr;
         }
         else
         {
             tic.val += interval;
-            if ( ( tic.val - usedMax ) > interval / 20 )
+            if(tic.val > usedMax)
             {
                 tic.val = usedMax;
                 lastTic = true;
@@ -374,7 +291,7 @@ void CPlotAxis::setScale( const unsigned int pts )
     //if ( !initialized )
     //qWarning( "you try to set the scale before defining the min & max value. not very sensible." );
     points = pts;
-    scale = pts / ( usedMax - usedMin );
+    scale  = pts / ( usedMax - usedMin );
 }
 
 
@@ -386,21 +303,12 @@ void CPlotAxis::resetZoom()
 
 void CPlotAxis::zoom(bool in, int point)
 {
-    qreal min, max, p, d, factor;
-    if (in)
-    {
-        factor = 1/1.1;
-    }
-    else
-    {
-        factor = 1.1;
-    }
-
-    p = pt2val(point);
-    min = (p - usedMin) * (1 - factor) + usedMin;
-    d = min - usedMin * factor;
-    max = usedMax * factor + d;
+    qreal factor = in ? (1 / 1.1) : 1.1;
 
+    qreal p   = pt2val(point);
+    qreal min = (p - usedMin) * (1 - factor) + usedMin;
+    qreal d   = min - usedMin * factor;
+    qreal max = usedMax * factor + d;
 
     if(qRound(max - min) <= qRound(limitMax - limitMin))
     {
diff --git a/src/plot/CPlotAxis.h b/src/plot/CPlotAxis.h
index c2ee527..f5f2b97 100644
--- a/src/plot/CPlotAxis.h
+++ b/src/plot/CPlotAxis.h
@@ -27,19 +27,22 @@ class CPlotAxis : public QObject
 {
     Q_OBJECT
 public:
-    CPlotAxis(QObject * parent);
-    virtual ~CPlotAxis();
+    CPlotAxis(QObject * parent) : QObject(parent)
+    {
+    }
+
+    virtual ~CPlotAxis()
+    {
+    }
 
     /// tic mark information structure
     struct tic_t
     {
         tic_t()
         {
-            val=0;
-            lbl="";
         }
-        qreal val;
-        QString lbl;
+        qreal val = 0;
+        QString lbl = "";
     };
 
     ///tic type
@@ -70,7 +73,7 @@ public:
     ///get the maximum width of a scale with provided fontmetrics
     virtual int getScaleWidth(const QFontMetrics& m);
     ///get a new ticmark object
-    virtual const tic_t* ticmark(const tic_t * t = NULL);
+    virtual const tic_t* ticmark(const tic_t *t = nullptr);
     /// get the total limits and the used ones
     virtual void getLimits(qreal& limMin, qreal& limMax, qreal& useMin, qreal& useMax);
 
@@ -80,7 +83,7 @@ public:
         {
             return 0;
         }
-        return ( int ) ( ( val - usedMin ) * scale + 0.5 );
+        return qRound(( val - usedMin ) * scale);
     }
 
     inline qreal pt2val( int pt ) const
@@ -89,7 +92,7 @@ public:
         {
             return 0;
         }
-        return ( qreal ) ( ( (qreal)pt - 0.5 ) / scale + usedMin );
+        return qreal(pt) / scale + usedMin;
     }
 
     void setAutoscale(bool on)
@@ -97,10 +100,11 @@ public:
         autoscale = on;
     }
 
-    inline tictype_e getTicType()
+    inline tictype_e getTicType() const
     {
         return ticType;
     }
+
     inline tictype_e setTicType(tictype_e t)
     {
         tictype_e old = ticType;
@@ -135,21 +139,15 @@ protected:
     ///scalefactor
     qreal scale = 1.0;
 
-    ///the actual applied min value
-    qreal usedMin = 0.0;
-    ///the actual applied max value
-    qreal usedMax = 0.0;
-
+    qreal usedMin  = 0.0; ///< the actual applied min value
+    qreal usedMax  = 0.0; ///< the actual applied max value
     qreal limitMin = 0.0;
     qreal limitMax = 0.0;
 
-    ///the interval of the ticmarks
-    qreal interval = 0.0;
+    qreal ticStart = 0.0; ///< start value of the ticmarks
+    qreal interval = 0.0; ///< the interval of the ticmarks
 
-    ///start value of the tic marks
-    qreal ticStart = 0;
 
-    /// this is set to -1 by default
     /**
         a value > 0 will override the dynamic value in getScaleWidth();
      */
@@ -160,13 +158,12 @@ protected:
     ///local copy of the last ticmark object
     tic_t tic;
 
-    /// used by ticmark()
-    bool firstTic = false;
-    /// used by ticmark()
-    bool lastTic = false;
-
     ///points of dimension
     quint32 points = 0;
+
+private:
+    bool firstTic = false; ///< used by ticmark()
+    bool lastTic  = false; ///< used by ticmark()
 };
 
 #endif //CPLOTAXIS_H
diff --git a/src/plot/CPlotAxisTime.cpp b/src/plot/CPlotAxisTime.cpp
index d966fc1..6f4eacd 100644
--- a/src/plot/CPlotAxisTime.cpp
+++ b/src/plot/CPlotAxisTime.cpp
@@ -20,22 +20,17 @@
 
 #include <QtWidgets>
 
-CPlotAxisTime::CPlotAxisTime(QObject * parent)
-    : CPlotAxis(parent)
+void CPlotAxisTime::calc() /* override */
 {
-}
-
+    int dSec  = usedMax - usedMin;
+    ticStart  = usedMin;
 
-CPlotAxisTime::~CPlotAxisTime()
-{
-}
-
-
-void CPlotAxisTime::calc()
-{
-    int dSec    = usedMax - usedMin;
-    ticStart    = usedMin;
-    strFormat   = "hh:mm:ss";
+    // abort if the xRange has a length of 0
+    if(0 == dSec)
+    {
+        valid = false;
+        return;
+    }
 
     if(dSec < 0)
     {
@@ -103,12 +98,7 @@ void CPlotAxisTime::calc()
     if ( autoscale )
     {
         usedMin = qFloor( usedMin / interval ) * interval;
-        usedMax = qCeil( usedMax / interval ) * interval;
-    }
-    else
-    {
-        usedMin = usedMin;
-        usedMax = usedMax;
+        usedMax = qCeil(  usedMax / interval ) * interval;
     }
 
     int t1 = ( int )( usedMin / interval + 0.5);
@@ -122,7 +112,7 @@ void CPlotAxisTime::calc()
 }
 
 
-const CPlotAxis::tic_t* CPlotAxisTime::ticmark( const tic_t * t )
+const CPlotAxis::tic_t* CPlotAxisTime::ticmark( const tic_t * t ) /* override */
 {
     const tic_t * _tic_ = CPlotAxis::ticmark(t);
     if(_tic_)
diff --git a/src/plot/CPlotAxisTime.h b/src/plot/CPlotAxisTime.h
index 9a86b56..b5b0507 100644
--- a/src/plot/CPlotAxisTime.h
+++ b/src/plot/CPlotAxisTime.h
@@ -25,25 +25,30 @@ class CPlotAxisTime : public CPlotAxis
 {
     Q_OBJECT
 public:
-    CPlotAxisTime(QObject * parent);
-    virtual ~CPlotAxisTime();
+    CPlotAxisTime(QObject * parent) : CPlotAxis(parent)
+    {
+    }
+
+    virtual ~CPlotAxisTime()
+    {
+    }
 
     ///calculate format for the given value
-    const QString fmtsgl(qreal /*val*/)
+    const QString fmtsgl(qreal /*val*/) override
     {
         return strFormat;
     }
     ///calculate format for the given value
-    const QString fmtdbl(qreal /*val*/)
+    const QString fmtdbl(qreal /*val*/) override
     {
         return strFormat;
     }
 
-    const tic_t* ticmark( const tic_t * t );
+    const tic_t* ticmark( const tic_t * t ) override;
 protected:
-    void calc();
+    void calc() override;
 
-    QString strFormat;
+    const QString strFormat = "hh:mm:ss";
 };
 
 #endif //CPLOTAXISTIME_H
diff --git a/src/plot/CPlotData.cpp b/src/plot/CPlotData.cpp
index fe83294..1f9db9c 100644
--- a/src/plot/CPlotData.cpp
+++ b/src/plot/CPlotData.cpp
@@ -63,8 +63,8 @@ void CPlotData::setLimits()
     {
         return;
     }
-    QPolygonF::const_iterator p         = line->points.begin();
 
+    QPolygonF::const_iterator p = line->points.begin();
     xmin = p->x();
     xmax = p->x();
     ymin = p->y();
@@ -77,22 +77,10 @@ void CPlotData::setLimits()
         {
             if(p->y() != NOFLOAT)
             {
-                if(p->x() > xmax)
-                {
-                    xmax = p->x();
-                }
-                if(p->x() < xmin)
-                {
-                    xmin = p->x();
-                }
-                if(p->y() > ymax)
-                {
-                    ymax = p->y();
-                }
-                if(p->y() < ymin)
-                {
-                    ymin = p->y();
-                }
+                xmin = qMin(xmin, p->x());
+                xmax = qMax(xmax, p->x());
+                ymin = qMin(ymin, p->y());
+                ymax = qMax(ymax, p->y());
             }
             ++p;
         }
@@ -100,6 +88,13 @@ void CPlotData::setLimits()
         ++line;
     }
 
-    xaxis->setLimits(xmin,xmax);
-    yaxis->setLimits(ymin,ymax);
+    if(xmin == xmax)
+    {
+        badData = true;
+    }
+    else
+    {
+        xaxis->setLimits(xmin, xmax);
+        yaxis->setLimits(ymin, ymax);
+    }
 }
diff --git a/src/plot/CPlotData.h b/src/plot/CPlotData.h
index 355ca40..0a8ecbd 100644
--- a/src/plot/CPlotData.h
+++ b/src/plot/CPlotData.h
@@ -36,12 +36,12 @@ public:
     virtual ~CPlotData();
 
     ///get a reference to the x axis
-    CPlotAxis& x()
+    CPlotAxis& x() const
     {
         return *xaxis;
     }
     ///get a reference to the y axis
-    CPlotAxis& y()
+    CPlotAxis& y() const
     {
         return *yaxis;
     }
diff --git a/src/plot/CPlotProfile.cpp b/src/plot/CPlotProfile.cpp
index 6b1d543..24d768e 100644
--- a/src/plot/CPlotProfile.cpp
+++ b/src/plot/CPlotProfile.cpp
@@ -23,16 +23,19 @@
 #include "plot/CPlotProfile.h"
 #include "units/IUnit.h"
 
+
 #include <proj_api.h>
 
 CPlotProfile::CPlotProfile(QWidget * parent)
-    : IPlot(0, CPlotData::eAxisLinear, eModeNormal, parent)
+    : IPlot(nullptr, CPlotData::eAxisLinear, eModeNormal, parent)
 {
 }
 
-CPlotProfile::CPlotProfile(CGisItemTrk *trk, mode_e mode, QWidget *parent)
+CPlotProfile::CPlotProfile(CGisItemTrk *trk, CLimit& lim, mode_e mode, QWidget *parent)
     : IPlot(trk, CPlotData::eAxisLinear, mode, parent)
+    , limit(&lim)
 {
+    connect(limit, &CLimit::sigChanged, this, &CPlotProfile::setLimits);
     setWindowTitle(trk->getNameEx());
     updateData();
 }
@@ -41,10 +44,17 @@ CPlotProfile::~CPlotProfile()
 {
 }
 
-void CPlotProfile::setTrack(CGisItemTrk * track)
+void CPlotProfile::setTrack(CGisItemTrk * track, CLimit &lim)
 {
     trk = track;
-    trk->registerPlot(this);
+    trk->registerVisual(this);
+
+    if(limit)
+    {
+        disconnect(limit, &CLimit::sigChanged, this, &CPlotProfile::setLimits);
+    }
+    limit = &lim;
+    connect(limit, &CLimit::sigChanged, this, &CPlotProfile::setLimits);
 
     updateData();
 }
@@ -90,7 +100,7 @@ void CPlotProfile::updateData()
             coords << QPointF(trkpt.lon * DEG_TO_RAD, trkpt.lat * DEG_TO_RAD);
             lineDem << QPointF(trkpt.distance, NOFLOAT);
 
-            if(project == 0 || trkpt.keyWpt.item.isEmpty() || (mode == eModeIcon))
+            if(nullptr == project || trkpt.keyWpt.item.isEmpty() || (mode == eModeIcon))
             {
                 continue;
             }
@@ -107,7 +117,7 @@ void CPlotProfile::updateData()
         }
     }
 
-    CMainWindow::self().getEelevationAt(coords, lineDem);
+    CMainWindow::self().getElevationAt(coords, lineDem);
 
     newLine(lineEle, "GPS");
     if(!lineDem.isEmpty())
@@ -120,7 +130,7 @@ void CPlotProfile::updateData()
 
 void CPlotProfile::setMouseFocus(const CGisItemTrk::trkpt_t * ptMouseMove)
 {
-    if(ptMouseMove == 0)
+    if(nullptr == ptMouseMove)
     {
         if(posMouse != NOPOINT)
         {
@@ -135,9 +145,19 @@ void CPlotProfile::setMouseFocus(const CGisItemTrk::trkpt_t * ptMouseMove)
             needsRedraw = true;
         }
 
-        posMouse.rx() = left  + data->x().val2pt(ptMouseMove->distance);
-        posMouse.ry() = top  +  data->y().val2pt(ptMouseMove->ele);
+        posMouse.rx() = left + data->x().val2pt(ptMouseMove->distance);
+        posMouse.ry() = top  + data->y().val2pt(ptMouseMove->ele);
     }
     update();
 }
 
+void CPlotProfile::setLimits()
+{
+    IPlot::setLimits();
+    data->ymin = limit->getMin() == NOFLOAT ? data->ymin : limit->getMin();
+    data->ymax = limit->getMax() == NOFLOAT ? data->ymax : limit->getMax();
+
+    data->y().setLimits(data->ymin, data->ymax);
+    resetZoom();
+    update();
+}
diff --git a/src/plot/CPlotProfile.h b/src/plot/CPlotProfile.h
index 7777c72..910e0dc 100644
--- a/src/plot/CPlotProfile.h
+++ b/src/plot/CPlotProfile.h
@@ -22,17 +22,25 @@
 
 #include "plot/IPlot.h"
 
+class CLimit;
+
 class CPlotProfile : public IPlot
 {
     Q_OBJECT
 public:
     CPlotProfile(QWidget * parent);
-    CPlotProfile(CGisItemTrk * trk, mode_e mode, QWidget * parent);
+    CPlotProfile(CGisItemTrk * trk, CLimit& lim, mode_e mode, QWidget * parent);
     virtual ~CPlotProfile();
 
-    void setTrack(CGisItemTrk * track);
-    void updateData();
-    void setMouseFocus(const CGisItemTrk::trkpt_t * ptMouseMove);
+    void setTrack(CGisItemTrk * track, CLimit& lim);
+    void updateData() override;
+    void setMouseFocus(const CGisItemTrk::trkpt_t * ptMouseMove) override;
+
+public slots:
+    void setLimits();
+
+private:
+    CLimit * limit = nullptr;
 };
 
 #endif //CPLOTPROFILE_H
diff --git a/src/plot/CPlotTrack.h b/src/plot/CPlotTrack.h
index 5a204f0..e3e927a 100644
--- a/src/plot/CPlotTrack.h
+++ b/src/plot/CPlotTrack.h
@@ -34,8 +34,8 @@ public:
     void setMouseFocus(qreal lon, qreal lat);
 
 protected:
-    void resizeEvent(QResizeEvent * e);
-    void paintEvent(QPaintEvent * e);
+    void resizeEvent(QResizeEvent *e) override;
+    void paintEvent(QPaintEvent  *e) override;
 
 private:
 
diff --git a/src/plot/IPlot.cpp b/src/plot/IPlot.cpp
index abb975d..a2ac5fc 100644
--- a/src/plot/IPlot.cpp
+++ b/src/plot/IPlot.cpp
@@ -1,5 +1,6 @@
 /**********************************************************************************************
     Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+    Copyright (C) 2015 Christian Eichler code at christian-eichler.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -30,27 +31,27 @@
 #include <QKeyEvent>
 #include <QtWidgets>
 
-QPen IPlot::pens[] =
+const QPen IPlot::pens[] =
 {
-    QPen(Qt::darkBlue,3,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
-    , QPen(QColor("#C00000"),3,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
-    , QPen(Qt::yellow,3,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
-    , QPen(Qt::green,3,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
+    QPen(Qt::darkBlue,      3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
+    , QPen(QColor("#C00000"), 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
+    , QPen(Qt::yellow,        3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
+    , QPen(Qt::green,         3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
 };
 
-QPen IPlot::pensThin[] =
+const QPen IPlot::pensThin[] =
 {
-    QPen(Qt::darkBlue,2,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
-    , QPen(Qt::darkRed,2,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
-    , QPen(Qt::darkYellow,2,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
-    , QPen(Qt::darkGreen,2,Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
+    QPen(Qt::darkBlue,   2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
+    , QPen(Qt::darkRed,    2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
+    , QPen(Qt::darkYellow, 2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
+    , QPen(Qt::darkGreen,  2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)
 };
 
-QColor IPlot::colors[] =
+const QColor IPlot::colors[] =
 {
     QColor(Qt::blue)
-    , QColor(0,0,0,0)
-    , QColor(0,0,0,0)
+    , QColor(0, 0, 0, 0)
+    , QColor(0, 0, 0, 0)
     , QColor(Qt::darkGreen)
 };
 
@@ -58,6 +59,7 @@ int IPlot::cnt = 0;
 
 IPlot::IPlot(CGisItemTrk *trk, CPlotData::axistype_e type, mode_e mode, QWidget *parent)
     : QWidget(parent)
+    , INotifyTrk(CGisItemTrk::eVisualPlot)
     , mode(mode)
     , trk(trk)
     , fm(font())
@@ -70,7 +72,7 @@ IPlot::IPlot(CGisItemTrk *trk, CPlotData::axistype_e type, mode_e mode, QWidget
 
     if(trk)
     {
-        trk->registerPlot(this);
+        trk->registerVisual(this);
     }
 
     data = new CPlotData(type, this);
@@ -83,16 +85,16 @@ IPlot::IPlot(CGisItemTrk *trk, CPlotData::axistype_e type, mode_e mode, QWidget
 
     if(mode == eModeWindow)
     {
-        overrideWindowFlags(Qt::Window);
+        overrideWindowFlags(Qt::Tool);
         setAttribute(Qt::WA_DeleteOnClose, true);
     }
 
     menu = new QMenu(this);
-    actionResetZoom = menu->addAction(QIcon("://icons/32x32/Zoom.png"), tr("Reset Zoom"), this, SLOT(slotResetZoom()));
+    actionResetZoom = menu->addAction(QIcon("://icons/32x32/Zoom.png"),        tr("Reset Zoom"), this, SLOT(slotResetZoom()));
     actionStopRange = menu->addAction(QIcon("://icons/32x32/SelectRange.png"), tr("Stop Range"), this, SLOT(slotStopRange()));
-    actionPrint     = menu->addAction(QIcon("://icons/32x32/Save.png"), tr("Save..."), this, SLOT(slotSave()));
+    actionPrint     = menu->addAction(QIcon("://icons/32x32/Save.png"),        tr("Save..."),    this, SLOT(slotSave()));
 
-    connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
+    connect(this, &IPlot::customContextMenuRequested, this, &IPlot::slotContextMenu);
 }
 
 IPlot::~IPlot()
@@ -101,7 +103,7 @@ IPlot::~IPlot()
 
     if(trk)
     {
-        trk->unregisterPlot(this);
+        trk->unregisterVisual(this);
         /*
             Always set the mode to normal. If the object is not owner
             of the current mode, the request will be ignored.
@@ -272,6 +274,31 @@ void IPlot::keyPressEvent(QKeyEvent *e)
     }
 }
 
+bool IPlot::graphAreaContainsMousePos(QPoint& pos)
+{
+    if(rectGraphArea.contains(pos))
+    {
+        return true;
+    }
+
+    if((pos.y() < rectGraphArea.bottom()) && (pos.y() > rectGraphArea.top()))
+    {
+        if(pos.x() < rectGraphArea.left())
+        {
+            pos.rx() = rectGraphArea.left();
+        }
+
+        if(pos.x() > rectGraphArea.right())
+        {
+            pos.rx() = rectGraphArea.right();
+        }
+
+        return true;
+    }
+
+    return false;
+}
+
 void IPlot::mouseMoveEvent(QMouseEvent * e)
 {
     if(data->lines.isEmpty() || data->badData || !data->x().isValid() || !data->y().isValid())
@@ -279,27 +306,15 @@ void IPlot::mouseMoveEvent(QMouseEvent * e)
         return;
     }
 
-    posMouse = NOPOINT;
-    if(rectGraphArea.contains(e->pos()))
+    QPoint pos  = e->pos();
+    posMouse    = NOPOINT;
+    if(graphAreaContainsMousePos(pos))
     {
-        posMouse = e->pos();
+        posMouse = pos;
 
         // set point of focus at track object
         qreal x = data->x().pt2val(posMouse.x() - left);
-        if(data->axisType == CPlotData::eAxisLinear)
-        {
-            if(trk)
-            {
-                trk->setMouseFocusByDistance(x, CGisItemTrk::eFocusMouseMove, objectName());
-            }
-        }
-        else if(data->axisType == CPlotData::eAxisTime)
-        {
-            if(trk)
-            {
-                trk->setMouseFocusByTime(x, CGisItemTrk::eFocusMouseMove, objectName());
-            }
-        }
+        setMouseFocus(x, CGisItemTrk::eFocusMouseMove);
 
         // update canvas if visible
         CCanvas * canvas = CMainWindow::self().getVisibleCanvas();
@@ -312,19 +327,45 @@ void IPlot::mouseMoveEvent(QMouseEvent * e)
     update();
 }
 
+void IPlot::setMouseFocus(qreal pos, enum CGisItemTrk::focusmode_e fm)
+{
+    if(nullptr == trk)
+    {
+        return;
+    }
+
+    if(data->axisType == CPlotData::eAxisLinear)
+    {
+        trk->setMouseFocusByDistance(pos, fm, objectName());
+    }
+    else if(data->axisType == CPlotData::eAxisTime)
+    {
+        trk->setMouseFocusByTime(pos, fm, objectName());
+    }
+}
+
 void IPlot::mousePressEvent(QMouseEvent * e)
 {
     if(data->lines.isEmpty() || data->badData || !data->x().isValid() || !data->y().isValid())
     {
+        // [Issue #106 ] Profil with no or bad data does not open trackdetails
+        //
+        // even if there is no data at least open the track edit dialog
+        if((e->button() == Qt::LeftButton) && (mode == eModeIcon))
+        {
+            trk->edit();
+        }
+
         return;
     }
 
     bool wasProcessed = true;
 
-    posMouse = NOPOINT;
-    if((e->button() == Qt::LeftButton) && rectGraphArea.contains(e->pos()))
+    QPoint pos  = e->pos();
+    posMouse    = NOPOINT;
+    if((e->button() == Qt::LeftButton) && graphAreaContainsMousePos(pos))
     {
-        posMouse = e->pos();
+        posMouse = pos;
 
         if(mode == eModeIcon)
         {
@@ -342,15 +383,7 @@ void IPlot::mousePressEvent(QMouseEvent * e)
                 // In idle state a mouse click will select the first point of a range
                 if(trk->setMode(CGisItemTrk::eModeRange, objectName()))
                 {
-                    if(data->axisType == CPlotData::eAxisLinear)
-                    {
-                        trk->setMouseFocusByDistance(x, CGisItemTrk::eFocusMouseClick, objectName());
-                    }
-                    else if(data->axisType == CPlotData::eAxisTime)
-                    {
-                        trk->setMouseFocusByTime(x, CGisItemTrk::eFocusMouseClick, objectName());
-                    }
-
+                    setMouseFocus(x, CGisItemTrk::eFocusMouseClick);
                     mouseClickState = eMouseClick1st;
                 }
                 else
@@ -368,25 +401,17 @@ void IPlot::mousePressEvent(QMouseEvent * e)
             case eMouseClick1st:
             {
                 // In 1st click state a mouse click will select the second point of a range and display options
-                if(data->axisType == CPlotData::eAxisLinear)
-                {
-                    trk->setMouseFocusByDistance(x, CGisItemTrk::eFocusMouseClick, objectName());
-                }
-                else if(data->axisType == CPlotData::eAxisTime)
-                {
-                    trk->setMouseFocusByTime(x, CGisItemTrk::eFocusMouseClick, objectName());
-                }
-
+                setMouseFocus(x, CGisItemTrk::eFocusMouseClick);
                 /*
                     As the screen option is created on the fly it has to be connected to all slots,too.
                     Later, when destroyed the slots will be disconnected automatically.
                  */
                 delete scrOptRange;
-                scrOptRange = new CScrOptRangeTrk(e->pos(), trk, &dummyMouse, this);
-                connect(scrOptRange->toolHidePoints, SIGNAL(clicked()), this, SLOT(slotHidePoints()));
-                connect(scrOptRange->toolShowPoints, SIGNAL(clicked()), this, SLOT(slotShowPoints()));
-                connect(scrOptRange->toolActivity, SIGNAL(clicked()), this, SLOT(slotActivity()));
-                connect(scrOptRange->toolCopy, SIGNAL(clicked()), this, SLOT(slotCopy()));
+                scrOptRange = new CScrOptRangeTrk(pos, trk, &dummyMouse, this);
+                connect(scrOptRange->toolHidePoints, &QToolButton::clicked, this, &IPlot::slotHidePoints);
+                connect(scrOptRange->toolShowPoints, &QToolButton::clicked, this, &IPlot::slotShowPoints);
+                connect(scrOptRange->toolActivity,   &QToolButton::clicked, this, &IPlot::slotActivity);
+                connect(scrOptRange->toolCopy,       &QToolButton::clicked, this, &IPlot::slotCopy);
 
                 /* Adjust position of screen option widget if the widget is out of the visible area*/
                 QRect r1 = scrOptRange->geometry();
@@ -448,7 +473,7 @@ void IPlot::mousePressEvent(QMouseEvent * e)
     update();
 }
 
-void IPlot::wheelEvent( QWheelEvent * e)
+void IPlot::wheelEvent(QWheelEvent * e)
 {
     bool in = CMainWindow::self().flipMouseWheel() ? (e->delta() < 0) : (e->delta() > 0);
 
@@ -465,15 +490,15 @@ void IPlot::setSizes()
     fm = QFontMetrics(CMainWindow::self().getMapFont());
     left = 0;
 
-    scaleWidthX1    = showScale ? data->x().getScaleWidth( fm ) : 0;
-    scaleWidthY1    = showScale ? data->y().getScaleWidth( fm ) : 0;
+    scaleWidthX1 = showScale ? data->x().getScaleWidth( fm ) : 0;
+    scaleWidthY1 = showScale ? data->y().getScaleWidth( fm ) : 0;
 
-    scaleWidthY1    = scaleWidthX1 > scaleWidthY1 ? scaleWidthX1 : scaleWidthY1;
+    scaleWidthY1 = scaleWidthX1 > scaleWidthY1 ? scaleWidthX1 : scaleWidthY1;
 
-    fontWidth       = fm.maxWidth();
-    fontHeight      = fm.height();
-    deadAreaX       = fontWidth >> 1;
-    deadAreaY       = ( fontHeight + 1 ) >> 1;
+    fontWidth    = fm.maxWidth();
+    fontHeight   = fm.height();
+    deadAreaX    = fontWidth >> 1;
+    deadAreaY    = ( fontHeight + 1 ) >> 1;
 
     setLRTB();
     setSizeIconArea();
@@ -637,71 +662,116 @@ void IPlot::draw()
     drawLegend(p);
 }
 
-void IPlot::drawData(QPainter& p)
+QPointF IPlot::getBasePoint(int ptx) const
 {
-    int penIdx = 0;
-    int ptx, pty, oldPtx;
-    QList<CPlotData::line_t> lines                  = data->lines;
-    QList<CPlotData::line_t>::const_iterator line   = lines.begin();
-
-    CPlotAxis& xaxis = data->x();
     CPlotAxis& yaxis = data->y();
 
-    int zero = bottom - yaxis.val2pt(0);
-
-    while(line != lines.end())
+    if(0 >= data->ymin && 0 <= data->ymax)
+    {
+        return QPointF(ptx, bottom - yaxis.val2pt(0));
+    }
+    else if(data->ymin >= 0)
+    {
+        return QPointF(ptx, bottom - yaxis.val2pt(data->ymin));
+    }
+    else if(data->ymax <= 0)
     {
-        QPolygonF background;
-        QPolygonF foreground;
+        return QPointF(ptx, bottom - yaxis.val2pt(data->ymax));
+    }
 
-        const QPolygonF& polyline       = line->points;
-        QPolygonF::const_iterator point = polyline.begin();
+    qWarning() << "Requesting basePoint for ptx = " << ptx << "; data->ymin/max = {" << data->ymin << ",  " << data->ymax << "}";
+    return QPointF(ptx, bottom);
+}
 
-        ptx = left   + xaxis.val2pt( point->x() );
-        pty = bottom - yaxis.val2pt( point->y() );
-        oldPtx = ptx;
+QPolygonF IPlot::getVisiblePolygon(const QPolygonF &polyline, QPolygonF &line) const
+{
+    const CPlotAxis &xaxis = data->x();
+    const CPlotAxis &yaxis = data->y();
 
-        background << QPointF(left,zero);
-        background << QPointF(left,pty);
-        background << QPointF(ptx,pty);
-        foreground << QPointF(ptx,pty);
+    int ptx = NOINT;
+    int pty = NOINT;
 
-        while(point != polyline.end())
-        {
-            ptx = left   + xaxis.val2pt( point->x() );
-            pty = bottom - yaxis.val2pt( point->y() );
+    foreach(const QPointF &pt, polyline)
+    {
+        int oldPtx = ptx;
+        int oldPty = pty;
+        ptx = left   + xaxis.val2pt( pt.x() );
+        pty = bottom - yaxis.val2pt( pt.y() );
 
-            if(oldPtx == ptx)
+        if(ptx >= left && ptx <= right)
+        {
+            // if oldPtx is < left, then ptx is the first visible point
+            if(NOINT == oldPtx || oldPtx < left)
             {
-                ++point;
-                continue;
+                // we may need to interpolate things if we just found the first visible point
+                if(NOINT != oldPtx && ptx > left)
+                {
+                    line << getBasePoint(left);
+
+                    int intPty = oldPty + ((oldPty - pty) * (left - oldPtx)) / (oldPtx - ptx);
+                    line << QPointF(left, intPty);
+                }
+                else
+                {
+                    line << getBasePoint(ptx);
+                }
             }
-            oldPtx = ptx;
 
-            if(ptx >= left && ptx <= right)
+            line << QPointF(ptx, pty);
+        }
+        else if(ptx > right)
+        {
+            // handle the special case `no point in the visible interval`
+            // -> add interpolated left point
+            if(oldPtx < left)
             {
-                background << QPointF(ptx,pty);
-                foreground << QPointF(ptx,pty);
+                oldPty = oldPty + (pty - oldPty) / (left - oldPtx);
+                oldPtx = left;
+
+                line << getBasePoint(oldPtx);
+                line << QPointF(oldPtx, oldPty);
             }
-            ++point;
+
+            // interpolate the value at `right`
+            pty = oldPty + ((pty - oldPty) * (right - oldPtx)) / (ptx - oldPtx);
+            ptx = right;
+            line << QPointF(ptx, pty);
         }
 
-        background << QPointF(right,pty);
-        background << QPointF(right,zero);
+        if(ptx >= right)
+        {
+            break;
+        }
+    }
+    line << getBasePoint(ptx);
+    return line;
+}
+
+void IPlot::drawData(QPainter& p)
+{
+    int penIdx = 0;
+    QList<CPlotData::line_t> lines                = data->lines;
+    QList<CPlotData::line_t>::const_iterator line = lines.begin();
+
+    while(line != lines.end())
+    {
+        QPolygonF poly;
+        getVisiblePolygon(line->points, poly);
 
         p.setPen(Qt::NoPen);
         p.setBrush(colors[penIdx]);
-        p.drawPolygon(background);
+        p.drawPolygon(poly);
 
         p.setPen(thinLine ? pensThin[penIdx++] : pens[penIdx++]);
         p.setBrush(Qt::NoBrush);
-        p.drawPolyline(foreground);
+        poly.pop_front();
+        poly.pop_back();
+        p.drawPolyline(poly);
 
         ++line;
     }
 }
 
-
 void IPlot::drawLabels( QPainter &p )
 {
     p.setPen(Qt::darkBlue);
@@ -737,15 +807,13 @@ void IPlot::drawXScale( QPainter &p )
     recText.setHeight( fontHeight );
     recText.setWidth( scaleWidthX1 );
 
-    int ix;
     int ix_ = -1;
-    int iy;
 
-    iy = bottom + deadAreaY;
+    const int iy = bottom + deadAreaY;
     const CPlotAxis::tic_t * t = data->x().ticmark();
     while ( t )
     {
-        ix = left + data->x().val2pt( t->val ) - ( scaleWidthX1 + 1 ) / 2;
+        int ix = left + data->x().val2pt( t->val ) - ( scaleWidthX1 + 1 ) / 2;
         if ( ( ( ix_ < 0 ) || ( ( ix - ix_ ) > scaleWidthX1 + 5 ) ) && !t->lbl.isEmpty() )
         {
             recText.moveTopLeft( QPoint( ix, iy ) );
@@ -787,11 +855,9 @@ void IPlot::drawYScale( QPainter &p )
     recText.setHeight( fontHeight );
     recText.setWidth( scaleWidthY1 );
 
-    int ix;
+    int ix = left - scaleWidthY1 - deadAreaX;
     int iy;
 
-    ix = left - scaleWidthY1 - deadAreaX;
-
     qreal limMin, limMax, useMin, useMax;
     data->y().getLimits(limMin, limMax, useMin, useMax);
 
@@ -850,21 +916,18 @@ void IPlot::drawYScale( QPainter &p )
 
 void IPlot::drawGridX( QPainter &p )
 {
-    int ix;
-    int iy, dy;
-
     CPlotAxis::tictype_e oldtic = data->x().setTicType( CPlotAxis::eTicNorm );
 
-    dy = rectGraphArea.height();
+    const int dy = rectGraphArea.height();
     const CPlotAxis::tic_t * t = data->x().ticmark();
 
     QPen oldpen = p.pen();
     p.setPen( QPen( QColor(0,150,0,128), 1, Qt::DotLine ) );
 
-    iy = rectGraphArea.top();
+    const int iy = rectGraphArea.top();
     while ( t )
     {
-        ix = left + data->x().val2pt( t->val );
+        int ix = left + data->x().val2pt( t->val );
         p.drawLine( ix, iy, ix, iy + dy );
         t = data->x().ticmark( t );
     }
@@ -875,20 +938,17 @@ void IPlot::drawGridX( QPainter &p )
 
 void IPlot::drawGridY( QPainter &p )
 {
-    int ix, dx;
-    int iy;
-
     CPlotAxis::tictype_e oldtic = data->y().setTicType( CPlotAxis::eTicNorm );
-    dx = rectGraphArea.width();
+    const int dx = rectGraphArea.width();
     const CPlotAxis::tic_t * t = data->y().ticmark();
 
     QPen oldpen = p.pen();
     p.setPen( QPen( QColor(0,150,0,128), 1, Qt::DotLine ) );
 
-    ix = rectGraphArea.left();
-    while ( t )
+    const int ix = rectGraphArea.left();
+    while(nullptr != t)
     {
-        iy = bottom - data->y().val2pt( t->val );
+        int iy = bottom - data->y().val2pt( t->val );
         p.drawLine( ix, iy, ix + dx, iy );
         t = data->y().ticmark( t );
     }
@@ -899,12 +959,12 @@ void IPlot::drawGridY( QPainter &p )
 
     if(data->ymin > useMin)
     {
-        iy = bottom - data->y().val2pt( data->ymin );
+        int iy = bottom - data->y().val2pt( data->ymin );
         p.drawLine( ix, iy, ix + dx, iy );
     }
     if(data->ymax < useMax)
     {
-        iy = bottom - data->y().val2pt( data->ymax );
+        int iy = bottom - data->y().val2pt( data->ymax );
         p.drawLine( ix, iy, ix + dx, iy );
     }
 
@@ -914,16 +974,14 @@ void IPlot::drawGridY( QPainter &p )
 
 void IPlot::drawXTic( QPainter & p )
 {
-    int ix;
-    int iyb, iyt;
     const CPlotAxis::tic_t * t = data->x().ticmark();
 
-    p.setPen(QPen(Qt::black,2));
-    iyb = rectGraphArea.bottom();
-    iyt = rectGraphArea.top();
-    while ( t )
+    p.setPen(QPen(Qt::black, 2));
+    const int iyb = rectGraphArea.bottom();
+    const int iyt = rectGraphArea.top();
+    while(nullptr != t)
     {
-        ix = left + data->x().val2pt( t->val );
+        const int ix = left + data->x().val2pt( t->val );
         p.drawLine( ix, iyb, ix, iyb - 5 );
         p.drawLine( ix, iyt, ix, iyt + 5 );
         t = data->x().ticmark( t );
@@ -933,16 +991,14 @@ void IPlot::drawXTic( QPainter & p )
 
 void IPlot::drawYTic( QPainter &p )
 {
-    int ixl, ixr;
-    int iy;
     const CPlotAxis::tic_t * t = data->y().ticmark();
 
-    p.setPen(QPen(Qt::black,2));
-    ixl = rectGraphArea.left();
-    ixr = rectGraphArea.right();
+    p.setPen(QPen(Qt::black, 2));
+    const int ixl = rectGraphArea.left();
+    const int ixr = rectGraphArea.right();
     while ( t )
     {
-        iy = bottom - data->y().val2pt( t->val );
+        const int iy = bottom - data->y().val2pt( t->val );
         p.drawLine( ixl, iy, ixl + 5, iy );
         p.drawLine( ixr, iy, ixr - 5, iy );
         t = data->y().ticmark( t );
@@ -982,32 +1038,37 @@ void IPlot::drawDecoration( QPainter &p )
 {
     if(posMouse != NOPOINT)
     {
+        // draw the vertical `you are here` line
         int x = posMouse.x();
-        p.setPen(QPen(Qt::red,2));
-        p.drawLine(x, top, x, bottom);
-
-        foreach(const CPlotData::point_t& tag, data->tags)
+        p.setPen(QPen(Qt::red, 2));
+        if(x >= left && x <= right)
         {
-            int ptx = left + data->x().val2pt( tag.point.x() );
+            p.drawLine(x, top, x, bottom);
 
-            if(qAbs(x - ptx) < 10)
+            // check if the mouse is near a waypoint
+            foreach(const CPlotData::point_t& tag, data->tags)
             {
-                QFont f = CMainWindow::self().getMapFont();
-                f.setBold(true);
-                QFontMetrics fm(f);
-                QRect r = fm.boundingRect(tag.label);
-                r.moveCenter(QPoint(ptx, top - fm.height()/2 - fm.descent()));
-                r.adjust(-3,-2,3,0);
+                int ptx = left + data->x().val2pt( tag.point.x() );
 
-                p.setPen(Qt::NoPen);
-                p.setBrush(Qt::white);
-                p.drawRoundedRect(r,3,3);
-
-                p.setFont(f);
-                p.setPen(Qt::darkBlue);
-                p.drawText(r, Qt::AlignCenter, tag.label);
-
-                break;
+                if(qAbs(x - ptx) < 10)
+                {
+                    QFont f = CMainWindow::self().getMapFont();
+                    f.setBold(true);
+                    QFontMetrics fm(f);
+                    QRect r = fm.boundingRect(tag.label);
+                    r.moveCenter(QPoint(ptx, top - fm.height()/2 - fm.descent()));
+                    r.adjust(-3,-2,3,0);
+
+                    p.setPen(Qt::NoPen);
+                    p.setBrush(Qt::white);
+                    p.drawRoundedRect(r,3,3);
+
+                    p.setFont(f);
+                    p.setPen(Qt::darkBlue);
+                    p.drawText(r, Qt::AlignCenter, tag.label);
+
+                    break;
+                }
             }
         }
     }
@@ -1015,60 +1076,30 @@ void IPlot::drawDecoration( QPainter &p )
     if((idxSel1 != NOIDX) && (idxSel2 != NOIDX) && !data->badData)
     {
         int penIdx = 3;
-        int ptx, pty, oldPtx, ptx1;
-
-        QPolygonF background;
-        QPolygonF foreground;
-
-        CPlotAxis& xaxis = data->x();
-        CPlotAxis& yaxis = data->y();
-
-        const QPolygonF& polyline       = data->lines.first().points.mid(idxSel1, idxSel2 - idxSel1 + 1);
-        QPolygonF::const_iterator point = polyline.begin();
 
-        ptx = left   + xaxis.val2pt( point->x() );
-        pty = bottom - yaxis.val2pt( point->y() );
-        ptx1 = oldPtx = ptx;
+        const QPolygonF& polyline = data->lines.first().points.mid(idxSel1, idxSel2 - idxSel1 + 1);
+        QPolygonF line;
+        getVisiblePolygon(polyline, line);
 
-        background << QPointF(ptx,bottom);
-        background << QPointF(ptx,pty);
-
-        foreground << QPointF(ptx,pty);
-
-        while(point != polyline.end())
+        // avoid drawing if the whole interval is outside the visible range
+        if(!(line.first().x() >= right || line.last().x() <= left))
         {
-            ptx = left   + xaxis.val2pt( point->x() );
-            pty = bottom - yaxis.val2pt( point->y() );
-
-            if(oldPtx == ptx)
-            {
-                ++point;
-                continue;
-            }
-            oldPtx = ptx;
-
-            if(ptx >= left && ptx <= right)
-            {
-                background << QPointF(ptx,pty);
-                foreground << QPointF(ptx,pty);
-            }
-            ++point;
+            // draw the background
+            p.setPen(Qt::NoPen);
+            p.setBrush(colors[penIdx]);
+            p.drawPolygon(line);
+
+            // draw the foreground
+            p.setPen(thinLine ? pensThin[penIdx] : pens[penIdx]);
+            p.setBrush(Qt::NoBrush);
+            line.pop_front();
+            line.pop_back();
+            p.drawPolyline(line);
+
+            p.setPen(QPen(Qt::darkBlue, 2));
+            p.drawLine(line.first().x(), top, line.first().x(), bottom);
+            p.drawLine(line.last().x(),  top, line.last().x(),  bottom);
         }
-
-        background << QPointF(ptx,pty);
-        background << QPointF(ptx,bottom);
-
-        p.setPen(Qt::NoPen);
-        p.setBrush(colors[penIdx]);
-        p.drawPolygon(background);
-
-        p.setPen(thinLine ? pensThin[penIdx] : pens[penIdx]);
-        p.setBrush(Qt::NoBrush);
-        p.drawPolyline(foreground);
-
-        p.setPen(QPen(Qt::darkBlue, 2));
-        p.drawLine(ptx1, top, ptx1, bottom);
-        p.drawLine(ptx, top, ptx, bottom);
     }
 
     if(!scrOptRange.isNull())
@@ -1084,15 +1115,14 @@ void IPlot::drawTags(QPainter& p)
         return;
     }
 
-    int ptx, pty;
     CPlotAxis& xaxis = data->x();
     CPlotAxis& yaxis = data->y();
 
     QVector<CPlotData::point_t>::const_iterator tag = data->tags.begin();
     while(tag != data->tags.end())
     {
-        ptx = left   + xaxis.val2pt( tag->point.x() );
-        pty = bottom - yaxis.val2pt( tag->point.y() );
+        int ptx = left   + xaxis.val2pt( tag->point.x() );
+        int pty = bottom - yaxis.val2pt( tag->point.y() );
 
         if (left < ptx &&  ptx < right)
         {
@@ -1151,8 +1181,8 @@ void IPlot::drawActivities(QPainter& p)
         }
 
         p.setPen(QPen(Qt::darkGreen,2));
-        p.drawLine(x1,0,x1,20);
-        p.drawLine(x2,0,x2,20);
+        p.drawLine(x1, 0, x1, 20);
+        p.drawLine(x2, 0, x2, 20);
 
         int d = (x2 - x1);
         if(d < 20)
@@ -1163,10 +1193,10 @@ void IPlot::drawActivities(QPainter& p)
         int c = x1 + d/2;
 
         rectIconFrame.moveCenter(QPoint(c,10));
-        p.setBrush(QColor(255,255,255,100));
-        p.drawRoundedRect(rectIconFrame,3,3);
+        p.setBrush(QColor(255, 255, 255, 100));
+        p.drawRoundedRect(rectIconFrame, 3, 3);
 
-        rectIcon.moveCenter(QPoint(c,10));
+        rectIcon.moveCenter(QPoint(c, 10));
         p.drawPixmap(rectIcon, QPixmap(range.icon));
     }
 
@@ -1277,9 +1307,10 @@ void IPlot::slotResetZoom()
 
 void IPlot::setMouseRangeFocus(const CGisItemTrk::trkpt_t * ptRange1, const CGisItemTrk::trkpt_t *ptRange2)
 {
-    if(ptRange1 == 0 || ptRange2 == 0)
+    if(nullptr == ptRange1 || nullptr == ptRange2)
     {
-        idxSel1 = idxSel2 = NOIDX;
+        idxSel1 = NOIDX;
+        idxSel2 = NOIDX;
     }
     else
     {
@@ -1313,7 +1344,7 @@ void IPlot::setMouseRangeFocus(const CGisItemTrk::trkpt_t * ptRange1, const CGis
     update();
 }
 
-bool IPlot::isZoomed()
+bool IPlot::isZoomed() const
 {
     qreal limMin, limMax, useMin, useMax;
     data->x().getLimits(limMin, limMax, useMin, useMax);
diff --git a/src/plot/IPlot.h b/src/plot/IPlot.h
index e10b8c1..dd9f134 100644
--- a/src/plot/IPlot.h
+++ b/src/plot/IPlot.h
@@ -27,7 +27,7 @@
 class QMenu;
 class CScrOptRangeTrk;
 
-class IPlot : public QWidget
+class IPlot : public QWidget, public INotifyTrk
 {
     Q_OBJECT
 public:
@@ -42,9 +42,8 @@ public:
     IPlot(CGisItemTrk * trk, CPlotData::axistype_e type, mode_e mode, QWidget * parent);
     virtual ~IPlot();
 
-    virtual void updateData() = 0;
-    virtual void setMouseFocus(const CGisItemTrk::trkpt_t * ptMouseMove) = 0;
-    virtual void setMouseRangeFocus(const CGisItemTrk::trkpt_t * ptRange1, const CGisItemTrk::trkpt_t * ptRange2);
+    void setMouseRangeFocus(const CGisItemTrk::trkpt_t * ptRange1, const CGisItemTrk::trkpt_t * ptRange2) override;
+    void setMouseClickFocus(const CGisItemTrk::trkpt_t * pt) override {}
 
     void save(QImage& image);
     void setSolid(bool yes)
@@ -52,7 +51,9 @@ public:
         solid = yes;
     }
 
-    bool isZoomed();
+    bool isZoomed() const;
+
+    using INotifyTrk::setMouseFocus;
 
 signals:
     void sigMouseClickState(int);
@@ -77,14 +78,14 @@ protected:
     void setLimits();
     void resetZoom();
 
-    void paintEvent(QPaintEvent * e);
-    void resizeEvent(QResizeEvent * e);
-    void leaveEvent(QEvent * e);
-    void enterEvent(QEvent * e);
-    void keyPressEvent(QKeyEvent *e);
-    void mouseMoveEvent(QMouseEvent * e);
-    void mousePressEvent(QMouseEvent * e);
-    void wheelEvent( QWheelEvent * e);
+    void paintEvent(QPaintEvent  *e) override;
+    void resizeEvent(QResizeEvent *e) override;
+    void leaveEvent(QEvent       *e) override;
+    void enterEvent(QEvent       *e) override;
+    void keyPressEvent(QKeyEvent    *e) override;
+    void mouseMoveEvent(QMouseEvent  *e) override;
+    void mousePressEvent(QMouseEvent  *e) override;
+    void wheelEvent(QWheelEvent  *e) override;
 
 
     void setSizes();
@@ -95,6 +96,8 @@ protected:
     void setSizeTrackInfo();
     void setSizeDrawArea();
 
+    QPointF getBasePoint(int ptx) const;
+
     void draw(QPainter& p);
     void draw();
     void drawData(QPainter& p);
@@ -110,6 +113,8 @@ protected:
     void drawTags(QPainter& p);
     void drawActivities(QPainter& p);
 
+    bool graphAreaContainsMousePos(QPoint& pos);
+
     static int cnt;
 
     // different draw modes
@@ -118,8 +123,8 @@ protected:
     bool needsRedraw = true;
 
     bool showScale = true;
-    bool thinLine = false;
-    bool solid = false;
+    bool thinLine  = false;
+    bool solid     = false;
 
     QImage buffer;
     QPoint posMouse = NOPOINT;
@@ -138,16 +143,16 @@ protected:
 
     QFontMetrics fm;
 
-    int left = 0;
-    int right = 0;
-    int top = 0;
+    int left   = 0;
+    int right  = 0;
+    int top    = 0;
     int bottom = 0;
 
     int deadAreaX = 0;
     int deadAreaY = 0;
 
-    int fontWidth = 0;
-    int fontHeight = 0;
+    int fontWidth    = 0;
+    int fontHeight   = 0;
     int scaleWidthX1 = 0;
     int scaleWidthY1 = 0;
 
@@ -157,9 +162,9 @@ protected:
     QRect rectIconArea;
     QRect rectTrackInfo;
 
-    static QPen pens[];
-    static QPen pensThin[];
-    static QColor colors[];
+    static const QPen pens[];
+    static const QPen pensThin[];
+    static const QColor colors[];
 
     QMenu * menu;
     QAction * actionResetZoom;
@@ -174,6 +179,10 @@ protected:
     QPointer<CScrOptRangeTrk> scrOptRange;
 
     CMouseDummy dummyMouse;
+
+private:
+    void setMouseFocus(qreal pos, enum CGisItemTrk::focusmode_e fm);
+    QPolygonF getVisiblePolygon(const QPolygonF &polyline, QPolygonF &line) const;
 };
 
 #endif //IPLOT_H
diff --git a/src/plot/ITrack.cpp b/src/plot/ITrack.cpp
index a84643b..bb39d00 100644
--- a/src/plot/ITrack.cpp
+++ b/src/plot/ITrack.cpp
@@ -94,7 +94,7 @@ void ITrack::setTrack(const QPolygonF& track)
 
 void ITrack::updateData()
 {
-    if((pjsrc == 0) || (trk == 0 && coords.isEmpty()))
+    if((pjsrc == 0) || (nullptr == trk && coords.isEmpty()))
     {
         return;
     }
diff --git a/src/plot/ITrack.h b/src/plot/ITrack.h
index f1d1220..4253065 100644
--- a/src/plot/ITrack.h
+++ b/src/plot/ITrack.h
@@ -49,7 +49,7 @@ protected:
     projPJ pjtar = 0;
 
     bool needsRedraw =true;
-    CGisItemTrk * trk = 0;
+    CGisItemTrk * trk = nullptr;
     QPolygonF coords;
     QPolygonF line;
 
diff --git a/src/print/CPrintDialog.cpp b/src/print/CPrintDialog.cpp
index 10804cd..918c513 100644
--- a/src/print/CPrintDialog.cpp
+++ b/src/print/CPrintDialog.cpp
@@ -57,10 +57,10 @@ CPrintDialog::CPrintDialog(type_e type, const QRectF& area, CCanvas *source)
     layout->setSpacing(0);
     layout->setContentsMargins(0,0,0,0);
 
-    connect(canvas, SIGNAL(sigZoom()), this, SLOT(slotUpdateMetrics()));
-    connect(canvas, SIGNAL(sigMove()), this, SLOT(slotUpdateMetrics()));
-    connect(pushPrint, SIGNAL(pressed()), this, SLOT(slotPrint()));
-    connect(pushSave, SIGNAL(pressed()), this, SLOT(slotSave()));
+    connect(canvas,    &CCanvas::sigZoom,     this, &CPrintDialog::slotUpdateMetrics);
+    connect(canvas,    &CCanvas::sigMove,     this, &CPrintDialog::slotUpdateMetrics);
+    connect(pushPrint, &QPushButton::pressed, this, &CPrintDialog::slotPrint);
+    connect(pushSave,  &QPushButton::pressed, this, &CPrintDialog::slotSave);
 
     if(type == eTypePrint)
     {
diff --git a/src/print/CPrintDialog.h b/src/print/CPrintDialog.h
index 7089297..40743cc 100644
--- a/src/print/CPrintDialog.h
+++ b/src/print/CPrintDialog.h
@@ -40,7 +40,7 @@ public:
 
 
 protected:
-    void resizeEvent(QResizeEvent * e);
+    void resizeEvent(QResizeEvent *e) override;
 
 private slots:
     void slotGetPrinter();
diff --git a/src/print/IPrintDialog.ui b/src/print/IPrintDialog.ui
index 2af39b7..ca3d7ab 100644
--- a/src/print/IPrintDialog.ui
+++ b/src/print/IPrintDialog.ui
@@ -32,6 +32,16 @@
        </property>
        <layout class="QVBoxLayout" name="verticalLayout_4">
         <item>
+         <widget class="QLabel" name="label_2">
+          <property name="text">
+           <string>When saving online maps make sure that the map has been loaded into the cache for the extent to be saved.</string>
+          </property>
+          <property name="wordWrap">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item>
          <spacer name="verticalSpacer">
           <property name="orientation">
            <enum>Qt::Vertical</enum>
@@ -64,6 +74,16 @@
        </property>
        <layout class="QVBoxLayout" name="verticalLayout_3">
         <item>
+         <widget class="QLabel" name="label">
+          <property name="text">
+           <string>When printing online maps make sure that the map has been loaded into the cache for the extent to be printed.</string>
+          </property>
+          <property name="wordWrap">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item>
          <widget class="QLabel" name="labelPagesText">
           <property name="text">
            <string>TextLabel</string>
diff --git a/src/qlgt/CQlgtDb.h b/src/qlgt/CQlgtDb.h
index b1439d2..5ae6f0d 100644
--- a/src/qlgt/CQlgtDb.h
+++ b/src/qlgt/CQlgtDb.h
@@ -19,6 +19,7 @@
 #ifndef CQLGTDB_H
 #define CQLGTDB_H
 
+#include <QCoreApplication>
 #include <QDir>
 #include <QObject>
 #include <QPointer>
@@ -30,6 +31,7 @@ class CQmsDb;
 
 class CQlgtDb : public QObject
 {
+    Q_DECLARE_TR_FUNCTIONS(CQlgtDb)
 public:
     enum EntryType_e
     {
diff --git a/src/qlgt/CQlgtDiary.h b/src/qlgt/CQlgtDiary.h
index f8e1d77..0d97c52 100644
--- a/src/qlgt/CQlgtDiary.h
+++ b/src/qlgt/CQlgtDiary.h
@@ -30,7 +30,7 @@ public:
 
     enum type_e {eEnd,eBase, eWpt, eTrk, eRte};
 
-    quint64 keyProjectGeoDB;
+    quint64 keyProjectGeoDB = 0;
 };
 
 QDataStream& operator >>(QDataStream& s, CQlgtDiary& diary);
diff --git a/src/qlgt/CQlgtRoute.h b/src/qlgt/CQlgtRoute.h
index 90ec92e..8f5960f 100644
--- a/src/qlgt/CQlgtRoute.h
+++ b/src/qlgt/CQlgtRoute.h
@@ -49,7 +49,7 @@ public:
     /// primary route, just the basic points like A to B via C
     QVector<pt_t> priRoute;
 
-    quint32 ttime;
+    quint32 ttime = 0;
 
     QString iconString;
 };
diff --git a/src/qlgt/CQlgtTrack.cpp b/src/qlgt/CQlgtTrack.cpp
index b51b301..bf9ea24 100644
--- a/src/qlgt/CQlgtTrack.cpp
+++ b/src/qlgt/CQlgtTrack.cpp
@@ -21,6 +21,7 @@
 
 #include <QtWidgets>
 
+
 QDataStream& operator >>(QDataStream& s, CFlags& flag)
 {
     quint32 f;
@@ -160,7 +161,7 @@ QDataStream& operator >>(QDataStream& s, CQlgtTrack& track)
             s1 >> nTrkPts1;
             if(nTrkPts1 != nTrkPts)
             {
-                QMessageBox::warning(CMainWindow::getBestWidgetForParent(), QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of training data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
+                QMessageBox::warning(CMainWindow::getBestWidgetForParent(), CQlgtTrack::tr("Corrupt track ..."), CQlgtTrack::tr("Number of trackpoints is not equal the number of training data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
                 break;
             }
 
@@ -190,7 +191,7 @@ QDataStream& operator >>(QDataStream& s, CQlgtTrack& track)
 //                s1 >> nTrkPts1;
 //                if(nTrkPts1 != nTrkPts)
 //                {
-//                    QMessageBox::warning(0, QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of training data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
+//                    QMessageBox::warning(0, tr("Corrupt track ..."), tr("Number of trackpoints is not equal the number of training data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
 //                    break;
 //                }
 
@@ -214,7 +215,7 @@ QDataStream& operator >>(QDataStream& s, CQlgtTrack& track)
             s1 >> nTrkPts1;
             if(nTrkPts1 != nTrkPts)
             {
-                QMessageBox::warning(CMainWindow::getBestWidgetForParent(), QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of extended data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
+                QMessageBox::warning(CMainWindow::getBestWidgetForParent(), CQlgtTrack::tr("Corrupt track ..."), CQlgtTrack::tr("Number of trackpoints is not equal the number of extended data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
                 break;
             }
 
@@ -261,7 +262,7 @@ QDataStream& operator >>(QDataStream& s, CQlgtTrack& track)
             s1 >> nTrkPts1;
             if(nTrkPts1 != nTrkPts)
             {
-                QMessageBox::warning(CMainWindow::getBestWidgetForParent(), QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of shadow data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
+                QMessageBox::warning(CMainWindow::getBestWidgetForParent(), CQlgtTrack::tr("Corrupt track ..."), CQlgtTrack::tr("Number of trackpoints is not equal the number of shadow data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
                 break;
             }
 
@@ -287,7 +288,7 @@ QDataStream& operator >>(QDataStream& s, CQlgtTrack& track)
             s1 >> nTrkPts1;
             if(nTrkPts1 != nTrkPts)
             {
-                QMessageBox::warning(CMainWindow::getBestWidgetForParent(), QObject::tr("Corrupt track ..."), QObject::tr("Number of trackpoints is not equal the number of shadow data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
+                QMessageBox::warning(CMainWindow::getBestWidgetForParent(), CQlgtTrack::tr("Corrupt track ..."), CQlgtTrack::tr("Number of trackpoints is not equal the number of shadow data trackpoints."), QMessageBox::Ignore,QMessageBox::Ignore);
                 break;
             }
 
diff --git a/src/qlgt/CQlgtTrack.h b/src/qlgt/CQlgtTrack.h
index 4067dbd..cf6db89 100644
--- a/src/qlgt/CQlgtTrack.h
+++ b/src/qlgt/CQlgtTrack.h
@@ -47,11 +47,11 @@ public:
         }
         flags = f;
     }
-    quint32 operator  & (quint32 f) const
+    quint32 operator  &(quint32 f) const
     {
         return flags&f;
     }
-    quint32 operator |= (quint32 f)
+    quint32 operator |=(quint32 f)
     {
         if ( flags != (flags|f) )
         {
@@ -60,7 +60,7 @@ public:
         flags|=f;
         return flags;
     }
-    quint32 operator &= (quint32 f)
+    quint32 operator &=(quint32 f)
     {
         if ( flags != (flags&f) )
         {
@@ -69,7 +69,7 @@ public:
         flags&=f;
         return flags;
     }
-    quint32 operator >> (quint32 & f)
+    quint32 operator >>(quint32 & f)
     {
         if ( flags != f )
         {
@@ -99,6 +99,7 @@ QDataStream& operator <<(QDataStream& s, CFlags& flag);
 
 class CQlgtTrack : public QObject, public IItem
 {
+    Q_DECLARE_TR_FUNCTIONS(CQlgtTrack)
 public:
     CQlgtTrack(quint64 id, QObject * parent);
     virtual ~CQlgtTrack();
@@ -122,7 +123,7 @@ public:
             fix(""), sat(0), velocity(WPT_NOFLOAT), heading(WPT_NOFLOAT),
             vdop(WPT_NOFLOAT), hdop(WPT_NOFLOAT), pdop(WPT_NOFLOAT),
             _lon(WPT_NOFLOAT),_lat(WPT_NOFLOAT),_ele(WPT_NOFLOAT), _timestamp(0), _timestamp_msec(0),
-            flags(0), px_valid(false), dem(WPT_NOFLOAT), editItem(NULL)
+            flags(0), px_valid(false), dem(WPT_NOFLOAT), editItem(nullptr)
         {
         }
 
@@ -171,20 +172,20 @@ public:
         // extended data 1
         QString fix;
         qint32 sat;
-        float altitude;          ///< [m] Altitude, Meters, above mean sea level
-        float height;            ///< [m] Height of geoid (mean sea level) above WGS84 ellipsoid
+        float altitude = 0;          ///< [m] Altitude, Meters, above mean sea level
+        float height = 0;            ///< [m] Height of geoid (mean sea level) above WGS84 ellipsoid
         float velocity;          ///< [m/s] Ground speed, meters per hour
         float heading;           ///< [] Track angle in degrees True
-        float magnetic;          ///< [] Magnetic Variation
+        float magnetic = 0;          ///< [] Magnetic Variation
         float vdop;              ///< Vertical dilution of precision (VDOP)
         float hdop;              ///< Horizontal dilution of precision (HDOP)
         float pdop;              ///< PDOP (dilution of precision)
-        float x;                 ///< [m] cartesian gps coordinate
-        float y;                 ///< [m] cartesian gps coordinate
-        float z;                 ///< [m] cartesian gps coordinate
-        float vx;                ///< [m/s] velocity
-        float vy;                ///< [m/s] velocity
-        float vz;                ///< [m/s] velocity
+        float x = 0;                 ///< [m] cartesian gps coordinate
+        float y = 0;                 ///< [m] cartesian gps coordinate
+        float z = 0;                 ///< [m] cartesian gps coordinate
+        float vx = 0;                ///< [m/s] velocity
+        float vy = 0;                ///< [m/s] velocity
+        float vz = 0;                ///< [m/s] velocity
 
 #ifdef GPX_EXTENSIONS
         CGpxExtPt gpx_exts;
@@ -236,56 +237,56 @@ public:
 
     QPixmap bullet;
     /// the track line color by index
-    unsigned colorIdx;
+    unsigned colorIdx = 0;
     /// the track points
     QList<pt_t> track;
 
     /// set true to draw track highlighted
-    bool highlight;
+    bool highlight = 0;
 
     /// total time covered by all track points
-    double totalTime;
+    double totalTime = 0;
     /// total time moving
-    double totalTimeMoving;
+    double totalTimeMoving = 0;
     /// total distance of track [m]
-    double totalDistance;
+    double totalDistance = 0;
 
     /// total ascend in [m]
-    double totalAscend;
+    double totalAscend = 0;
     /// total descend in [m]
-    double totalDescend;
+    double totalDescend = 0;
 
     /// the Qt polyline for faster processing
     QPolygon polyline;
     /// the color attached to each point in polyline (only used in multicolor mode)
     QVector<QColor> polylineColor;
 
-    float avgspeed0;
-    float avgspeed1;
+    float avgspeed0 = 0;
+    float avgspeed1 = 0;
 
     pt_t ptMaxEle;
     pt_t ptMinEle;
     pt_t ptMaxSpeed;
     pt_t ptMinSpeed;
 
-    bool traineeData;
-    bool ext1Data;
-    bool firstTime;
-    bool m_hide;
+    bool traineeData = 0;
+    bool ext1Data = 0;
+    bool firstTime = 0;
+    bool m_hide = 0;
 
-    quint32 doScaleWpt2Track;
+    quint32 doScaleWpt2Track = 0;
 
 
-    quint32 visiblePointCount;
+    quint32 visiblePointCount = 0;
 
-    quint32 cntMedianFilterApplied;
+    quint32 cntMedianFilterApplied = 0;
 
     QList<wpt_t> waypoints;
 
-    bool replaceOrigData;
+    bool replaceOrigData = 0;
 
     enum state_select_e {eNoSel, e1stSel, e2ndSel};
-    state_select_e stateSelect;
+    state_select_e stateSelect = eNoSel;
 
     QString timezone;
 
@@ -298,8 +299,8 @@ public:
         , eMultiColorMax
     };
 
-    quint32 useMultiColor;
-    qint32 idMultiColor;
+    quint32 useMultiColor = 0;
+    qint32 idMultiColor = 0;
 
     bool hasExt1Data() const
     {
diff --git a/src/qlgt/CQlgtWpt.cpp b/src/qlgt/CQlgtWpt.cpp
index 83a6fa2..204b704 100644
--- a/src/qlgt/CQlgtWpt.cpp
+++ b/src/qlgt/CQlgtWpt.cpp
@@ -41,7 +41,7 @@ QDataStream& operator >>(QDataStream& s, CQlgtWpt& wpt)
     if(strncmp(magic,"QLWpt   ",9))
     {
         dev->seek(pos);
-        //         throw(QObject::tr("This is not waypoint data."));
+        //         throw(tr("This is not waypoint data."));
         return s;
     }
 
@@ -219,7 +219,7 @@ QDataStream& operator <<(QDataStream& s, CQlgtWpt& wpt)
     s1 << wpt.description;
     s1 << wpt.urlname;
     s1 << wpt.type;
-    s1 << QString("");
+    s1 << QString();
     s1 << wpt.selected;
     s1 << wpt.dir;
 
diff --git a/src/qlgt/CQlgtWpt.h b/src/qlgt/CQlgtWpt.h
index 0887b05..1c051eb 100644
--- a/src/qlgt/CQlgtWpt.h
+++ b/src/qlgt/CQlgtWpt.h
@@ -76,13 +76,13 @@ public:
 
     geocache_t geocache;
 
-    quint32 selected;
-    quint32 sticky;
-    float lat;                   ///< [deg]
-    float lon;                   ///< [deg]
-    float ele;                   ///< [m]
-    float prx;                   ///< [m]
-    float dir;                   ///< [deg]
+    quint32 selected = 0;
+    quint32 sticky = 0;
+    float lat = 0;                   ///< [deg]
+    float lon = 0;                   ///< [deg]
+    float ele = 0;                   ///< [m]
+    float prx = 0;                   ///< [m]
+    float dir = 0;                   ///< [deg]
     QString link;
     QString urlname;
     QString type;
diff --git a/src/qlgt/CQmsDb.cpp b/src/qlgt/CQmsDb.cpp
index be3c899..3fb331e 100644
--- a/src/qlgt/CQmsDb.cpp
+++ b/src/qlgt/CQmsDb.cpp
@@ -171,9 +171,9 @@ void CQmsDb::addFolder(CQlgtFolder& folder)
     in.setVersion(QDataStream::Qt_5_2);
     project >> in;
 
-    query.prepare("INSERT INTO folders (type, key, name, comment, locked, data) VALUES (:type, :key, :name, :comment, :locked, :data)");
+    query.prepare("INSERT INTO folders (type, keyqms, name, comment, locked, data) VALUES (:type, :keyqms, :name, :comment, :locked, :data)");
     query.bindValue(":type",    mapFolderTypes[folder.type]);
-    query.bindValue(":key",     project.getKey());
+    query.bindValue(":keyqms",     project.getKey());
     query.bindValue(":name",    project.getName());
     query.bindValue(":comment", project.getInfo());
     query.bindValue(":locked",  folder.locked);
@@ -259,13 +259,14 @@ quint64 CQmsDb::store(IGisItem& item)
 
     QSqlQuery query(db);
     // item is unknown to database -> create item in database
-    query.prepare("INSERT INTO items (type, key, icon, name, comment, data) VALUES (:type, :key, :icon, :name, :comment, :data)");
+    query.prepare("INSERT INTO items (type, keyqms, icon, name, comment, data, hash) VALUES (:type, :keyqms, :icon, :name, :comment, :data, :hash)");
     query.bindValue(":type",    item.type());
-    query.bindValue(":key",     item.getKey().item);
+    query.bindValue(":keyqms",     item.getKey().item);
     query.bindValue(":icon",    buffer.data());
     query.bindValue(":name",    item.getName());
     query.bindValue(":comment", item.getInfo());
     query.bindValue(":data", data);
+    query.bindValue(":hash", item.getHash());
     QUERY_EXEC(return 0);
 
     query.prepare("SELECT last_insert_rowid() from items");
diff --git a/src/qlgt/CQmsDb.h b/src/qlgt/CQmsDb.h
index 6310971..fafddfa 100644
--- a/src/qlgt/CQmsDb.h
+++ b/src/qlgt/CQmsDb.h
@@ -19,7 +19,7 @@
 #ifndef CQMSDB_H
 #define CQMSDB_H
 
-#include "gis/db/IDB.h"
+#include "gis/db/IDBSqlite.h"
 #include <QMap>
 #include <QObject>
 
@@ -31,8 +31,9 @@ class CQlgtTrack;
 class CQlgtRoute;
 class IQlgtOverlay;
 
-class CQmsDb : public QObject, private IDB
+class CQmsDb : public QObject, private IDBSqlite
 {
+    Q_DECLARE_TR_FUNCTIONS(CQmsDb)
 public:
     CQmsDb(const QString& filename, CImportDatabase * parent);
     virtual ~CQmsDb();
diff --git a/src/qlgt/IItem.h b/src/qlgt/IItem.h
index 2d1cbe4..fbd654a 100644
--- a/src/qlgt/IItem.h
+++ b/src/qlgt/IItem.h
@@ -35,7 +35,7 @@ public:
         return "no info";
     }
 
-    quint32 timestamp;
+    quint32 timestamp = 0;
 
     QString name;
     QString comment;
diff --git a/src/qlgt/IQlgtOverlay.cpp b/src/qlgt/IQlgtOverlay.cpp
index 89871ba..5766076 100644
--- a/src/qlgt/IQlgtOverlay.cpp
+++ b/src/qlgt/IQlgtOverlay.cpp
@@ -187,7 +187,6 @@ QDataStream& operator <<(QDataStream& s, IQlgtOverlay& ovl)
 
 IQlgtOverlay::IQlgtOverlay(quint64 id, QObject *parent)
     : IItem(id)
-    , speed(0)
 {
 }
 
diff --git a/src/qlgt/IQlgtOverlay.h b/src/qlgt/IQlgtOverlay.h
index b6c40d8..7e3d314 100644
--- a/src/qlgt/IQlgtOverlay.h
+++ b/src/qlgt/IQlgtOverlay.h
@@ -40,10 +40,10 @@ public:
     QString type;
     QColor color;
     QList<pt_t> points;
-    qint32 style;
-    quint32 width;
-    quint8 opacity;
-    float speed;
+    qint32 style = 0;
+    quint32 width = 0;
+    quint8 opacity = 0;
+    float speed = 0;
 };
 
 QDataStream& operator >>(QDataStream& s, IQlgtOverlay& ovl);
diff --git a/src/qlgt/converter.cpp b/src/qlgt/converter.cpp
index e32027a..4538c1a 100644
--- a/src/qlgt/converter.cpp
+++ b/src/qlgt/converter.cpp
@@ -37,7 +37,7 @@ inline qreal readFloat(float val)
 }
 
 CDBProject::CDBProject(CQlgtFolder& folder)
-    : IGisProject(eTypeDb, "", (CGisListWks*)0)
+    : IGisProject(eTypeDb, "", (CGisListWks*) nullptr)
 {
     metadata.name = folder.name;
     if(folder.diary)
@@ -47,7 +47,7 @@ CDBProject::CDBProject(CQlgtFolder& folder)
 }
 
 CGisItemWpt::CGisItemWpt(const CQlgtWpt& wpt1)
-    : IGisItem(0, eTypeWpt, NOIDX)
+    : IGisItem(nullptr, eTypeWpt, NOIDX)
 {
     qreal direction;
     QDateTime time = QDateTime::fromTime_t(wpt1.timestamp,QTimeZone("UTC"));
@@ -137,7 +137,7 @@ CGisItemWpt::CGisItemWpt(const CQlgtWpt& wpt1)
 
 
 CGisItemTrk::CGisItemTrk(const CQlgtTrack &trk1)
-    : IGisItem(0, eTypeTrk, NOIDX)
+    : IGisItem(nullptr, eTypeTrk, NOIDX)
     , activities(this)
 {
     trk.name        = trk1.name;
@@ -195,7 +195,7 @@ CGisItemTrk::CGisItemTrk(const CQlgtTrack &trk1)
         history.events << history_event_t();
         history_event_t& event = history.events.last();
         event.time      = QDateTime::currentDateTimeUtc();
-        event.comment   = QObject::tr("Copy flag information from QLandkarte GT track");
+        event.comment   = tr("Copy flag information from QLandkarte GT track");
         event.icon      = "://icons/48x48/PointHide.png";
 
         QDataStream stream(&event.data, QIODevice::WriteOnly);
diff --git a/src/resources.qrc b/src/resources.qrc
index 37ca2de..eda6735 100644
--- a/src/resources.qrc
+++ b/src/resources.qrc
@@ -27,6 +27,8 @@
         <file>icons/16x16/ActShip.png</file>
         <file>icons/16x16/ActSwim.png</file>
         <file>icons/16x16/ActAero.png</file>
+        <file>icons/16x16/ActSki.png</file>
+        <file>icons/16x16/EditDetails.png</file>
         <file>icons/32x32/2DFix.png</file>
         <file>icons/32x32/3DFix.png</file>
         <file>icons/32x32/Add.png</file>
@@ -41,6 +43,7 @@
         <file>icons/32x32/FolderDEM.png</file>
         <file>icons/32x32/Font.png</file>
         <file>icons/32x32/FromMap.png</file>
+        <file>icons/32x32/FilterModifyExtension.png</file>
         <file>icons/32x32/Grid.png</file>
         <file>icons/32x32/GridSetup.png</file>
         <file>icons/32x32/GridWizzard.png</file>
@@ -57,6 +60,7 @@
         <file>icons/32x32/MimeWMTS.png</file>
         <file>icons/32x32/MimeTMS.png</file>
         <file>icons/32x32/MimeDemVRT.png</file>
+        <file>icons/32x32/MimeGEMF.png</file>
         <file>icons/32x32/MouseWheel.png</file>
         <file>icons/32x32/NightDay.png</file>
         <file>icons/32x32/NoFix.png</file>
@@ -79,6 +83,7 @@
         <file>icons/32x32/LoadGIS.png</file>
         <file>icons/32x32/GpxProject.png</file>
         <file>icons/32x32/QmsProject.png</file>
+        <file>icons/32x32/SlfProject.png</file>
         <file>icons/32x32/DBProject.png</file>
         <file>icons/32x32/Route.png</file>
         <file>icons/32x32/RouteSetup.png</file>
@@ -133,11 +138,15 @@
         <file>icons/32x32/Opacity.png</file>
         <file>icons/32x32/DatabaseSetup.png</file>
         <file>icons/32x32/DatabaseConvert.png</file>
+        <file>icons/32x32/DatabaseSync.png</file>
         <file>icons/32x32/PathBlue.png</file>
         <file>icons/32x32/PathOrange.png</file>
         <file>icons/32x32/PathGreen.png</file>
         <file>icons/32x32/Link.png</file>
         <file>icons/32x32/Database.png</file>
+        <file>icons/32x32/SQLite.png</file>
+        <file>icons/32x32/MySQL.png</file>
+        <file>icons/32x32/MySQLNoConn.png</file>
         <file>icons/32x32/Empty.png</file>
         <file>icons/32x32/Apply.png</file>
         <file>icons/32x32/Time.png</file>
@@ -172,6 +181,7 @@
         <file>icons/32x32/ActShip.png</file>
         <file>icons/32x32/ActSwim.png</file>
         <file>icons/32x32/ActAero.png</file>
+        <file>icons/32x32/ActSki.png</file>
         <file>icons/32x32/Activity.png</file>
         <file>icons/32x32/CSrcSolid.png</file>
         <file>icons/32x32/CSrcHR.png</file>
@@ -183,7 +193,21 @@
         <file>icons/32x32/CSrcSpeed.png</file>
         <file>icons/32x32/CSrcElevation.png</file>
         <file>icons/32x32/CSrcUnknown.png</file>
+        <file>icons/32x32/CSrcAccel.png</file>
+        <file>icons/32x32/CSrcCourse.png</file>
         <file>icons/32x32/Progress.png</file>
+        <file>icons/32x32/FitProject.png</file>
+        <file>icons/32x32/LineWidthUser.png</file>
+        <file>icons/32x32/LineWidthDef.png</file>
+        <file>icons/32x32/ArrowUser.png</file>
+        <file>icons/32x32/ArrowDef.png</file>
+        <file>icons/32x32/LimitMax.png</file>
+        <file>icons/32x32/LimitMin.png</file>
+        <file>icons/32x32/Limit.png</file>
+        <file>icons/32x32/LimitSys.png</file>
+        <file>icons/32x32/LimitUsr.png</file>
+        <file>icons/32x32/SetupWptSym.png</file>
+        
 
         <file>icons/48x48/2DFix.png</file>
         <file>icons/48x48/3DFix.png</file>
@@ -199,6 +223,7 @@
         <file>icons/48x48/FolderDEM.png</file>
         <file>icons/48x48/Font.png</file>
         <file>icons/48x48/FromMap.png</file>
+        <file>icons/48x48/FilterModifyExtension.png</file>
         <file>icons/48x48/Grid.png</file>
         <file>icons/48x48/GridSetup.png</file>
         <file>icons/48x48/GridWizzard.png</file>
@@ -215,6 +240,7 @@
         <file>icons/48x48/MimeWMTS.png</file>
         <file>icons/48x48/MimeTMS.png</file>
         <file>icons/48x48/MimeDemVRT.png</file>
+        <file>icons/48x48/MimeGEMF.png</file>
         <file>icons/48x48/MouseWheel.png</file>
         <file>icons/48x48/NightDay.png</file>
         <file>icons/48x48/NoFix.png</file>
@@ -237,6 +263,7 @@
         <file>icons/48x48/LoadGIS.png</file>
         <file>icons/48x48/GpxProject.png</file>
         <file>icons/48x48/QmsProject.png</file>
+        <file>icons/48x48/SlfProject.png</file>
         <file>icons/48x48/DBProject.png</file>
         <file>icons/48x48/Route.png</file>
         <file>icons/48x48/RouteSetup.png</file>
@@ -291,11 +318,15 @@
         <file>icons/48x48/Opacity.png</file>
         <file>icons/48x48/DatabaseSetup.png</file>
         <file>icons/48x48/DatabaseConvert.png</file>
+        <file>icons/48x48/DatabaseSync.png</file>
         <file>icons/48x48/PathBlue.png</file>
         <file>icons/48x48/PathOrange.png</file>
         <file>icons/48x48/PathGreen.png</file>
         <file>icons/48x48/Link.png</file>
         <file>icons/48x48/Database.png</file>
+        <file>icons/48x48/SQLite.png</file>
+        <file>icons/48x48/MySQL.png</file>
+        <file>icons/48x48/MySQLNoConn.png</file>
         <file>icons/48x48/Empty.png</file>
         <file>icons/48x48/Apply.png</file>
         <file>icons/48x48/Time.png</file>
@@ -330,6 +361,7 @@
         <file>icons/48x48/ActShip.png</file>
         <file>icons/48x48/ActSwim.png</file>
         <file>icons/48x48/ActAero.png</file>
+        <file>icons/48x48/ActSki.png</file>
         <file>icons/48x48/Activity.png</file>
         <file>icons/48x48/CSrcSolid.png</file>
         <file>icons/48x48/CSrcHR.png</file>
@@ -341,7 +373,20 @@
         <file>icons/48x48/CSrcSpeed.png</file>
         <file>icons/48x48/CSrcElevation.png</file>
         <file>icons/48x48/CSrcUnknown.png</file>
+        <file>icons/48x48/CSrcAccel.png</file>
+        <file>icons/48x48/CSrcCourse.png</file>
         <file>icons/48x48/Progress.png</file>
+        <file>icons/48x48/FitProject.png</file>
+        <file>icons/48x48/LineWidthUser.png</file>
+        <file>icons/48x48/LineWidthDef.png</file>
+        <file>icons/48x48/ArrowUser.png</file>
+        <file>icons/48x48/ArrowDef.png</file>
+        <file>icons/48x48/LimitMax.png</file>
+        <file>icons/48x48/LimitMin.png</file>
+        <file>icons/48x48/Limit.png</file>
+        <file>icons/48x48/LimitSys.png</file>
+        <file>icons/48x48/LimitUsr.png</file>
+        <file>icons/48x48/SetupWptSym.png</file>
 
 
         <file>icons/cache/32x32/bluepin.png</file>
diff --git a/src/test/CGpxProject.cpp b/src/test/CGpxProject.cpp
new file mode 100644
index 0000000..43ee03b
--- /dev/null
+++ b/src/test/CGpxProject.cpp
@@ -0,0 +1,70 @@
+/**********************************************************************************************
+    Copyright (C) 2015 Christian Eichler code at christian-eichler.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "test/test_QMapShack.h"
+
+#include "gis/gpx/CGpxProject.h"
+
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/trk/CKnownExtension.h"
+#include "gis/wpt/CGisItemWpt.h"
+
+static CGpxProject* readGpxFile(const QString &file, bool valid)
+{
+    // this does not ready anything, a bare CSlfProject is created
+    CGpxProject *proj = new CGpxProject("a very random string to prevent loading via constructor", (CGisListWks*) nullptr);
+
+    bool hadExc = false;
+    try
+    {
+        proj->blockUpdateItems(true);
+        CGpxProject::loadGpx(file, proj);
+        proj->blockUpdateItems(false);
+    }
+    catch(QString &errormsg)
+    {
+        SUBVERIFY(!valid, "Expected `" + file + "` to be valid, error while reading: " + errormsg);
+        hadExc = true;
+    }
+
+    SUBVERIFY(valid || hadExc, "File is neither valid, nor an exception was thrown")
+    SUBVERIFY(IGisProject::eTypeGpx == proj->getType(), "Project has invalid type");
+
+    return proj;
+}
+
+void test_QMapShack::readWriteGPXFile()
+{
+    // step 1: read .gpx file
+    CGpxProject *proj = readGpxFile(testInput + "qtt_gpx_file0.gpx", true);
+    verify(testInput + "qtt_gpx_file0.gpx.xml", *proj);
+
+    // step 2: write to new .gpx file
+    QString tmpFile = getTempFileName("gpx");
+    CGpxProject::saveAs(tmpFile, *proj);
+
+    delete proj;
+
+    // step 3: read .gpx file from step 2
+    proj = readGpxFile(tmpFile, true);
+    verify(testInput + "qtt_gpx_file0.gpx.xml", *proj);
+    delete proj;
+
+    QFile(tmpFile).remove();
+}
+
diff --git a/src/test/CSlfReader.cpp b/src/test/CSlfReader.cpp
new file mode 100644
index 0000000..311f50c
--- /dev/null
+++ b/src/test/CSlfReader.cpp
@@ -0,0 +1,66 @@
+/**********************************************************************************************
+    Copyright (C) 2015 Christian Eichler code at christian-eichler.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "test/test_QMapShack.h"
+
+#include "gis/slf/CSlfProject.h"
+#include "gis/slf/CSlfReader.h"
+
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/trk/CKnownExtension.h"
+#include "gis/wpt/CGisItemWpt.h"
+
+void test_QMapShack::readValidSLFFile()
+{
+    // this does not ready anything, a bare CSlfProject is created
+    CSlfProject *proj = new CSlfProject("qtt_slf_file0.slf", false);
+
+    try
+    {
+        CSlfReader::readFile(testInput + "qtt_slf_file0.slf", proj);
+    }
+    catch(QString &errormsg)
+    {
+        SUBVERIFY(false, QString("Did not expect any error, but got: `%1`").arg(errormsg));
+    }
+
+    SUBVERIFY(IGisProject::eTypeSlf == proj->getType(), "Project has invalid type");
+
+    verify(testInput + "qtt_slf_file0.slf.xml", *proj);
+    delete proj;
+}
+
+void test_QMapShack::readNonExistingSLFFile()
+{
+    // this does not ready anything, a bare CSlfProject is created
+    CSlfProject *proj = new CSlfProject("qtt_slf_DOES_NOT_EXIST.slf", false);
+
+    bool hadException = false;
+    try
+    {
+        CSlfReader::readFile(testInput + "qtt_slf_DOES_NOT_EXIST.slf", proj);
+    }
+    catch(QString &errormsg)
+    {
+        SUBVERIFY(errormsg.contains("does not exist"), "Wrong error message");
+        hadException = true;
+    }
+    SUBVERIFY(hadException, "File is neither valid, nor an exception was thrown");
+
+    delete proj;
+}
diff --git a/src/test/input/qtt_gpx_file0.gpx b/src/test/input/qtt_gpx_file0.gpx
new file mode 100644
index 0000000..acf778a
--- /dev/null
+++ b/src/test/input/qtt_gpx_file0.gpx
@@ -0,0 +1,5768 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
+<gpx xmlns="http://www.topografix.com/GPX/1/1" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" creator="QMapShack 1.4.0 http://www.qlandkarte.org/" xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www.garmin.com/xmlschemas/GpxExtensionsv3.xsd http://www.garmin.com/xmlschemas/TrackPointExtension/v1 http:/ [...]
+ <metadata>
+  <name>QTTest gpx file 0</name>
+  <desc>QTTest gpx input file 0</desc>
+  <time>2015-11-14T19:09:45Z</time>
+ </metadata>
+ <trk>
+  <name>Track</name>
+  <extensions>
+   <ql:key>9a180f190e7dcf7dbda0f2fcbf3c7078</ql:key>
+   <ql:flags>3</ql:flags>
+   <ql:history>
+    <ql:event>
+     <ql:icon>://icons/48x48/Start.png</ql:icon>
+     <ql:time>2015-11-19T18:50:31Z</ql:time>
+     <ql:comment>Initial version.</ql:comment>
+    </ql:event>
+    <ql:event>
+     <ql:icon>://icons/48x48/EditText.png</ql:icon>
+     <ql:time>2015-11-19T18:50:55Z</ql:time>
+     <ql:comment>Changed name</ql:comment>
+    </ql:event>
+   </ql:history>
+   <gpxx:TrackExtension>
+    <gpxx:DisplayColor>DarkBlue</gpxx:DisplayColor>
+   </gpxx:TrackExtension>
+  </extensions>
+  <trkseg>
+   <trkpt lat="49.43892301" lon="11.40093000">
+    <ele>525</ele>
+    <time>2015-10-02T13:56:08Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>123</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43895997" lon="11.40101994">
+    <ele>526</ele>
+    <time>2015-10-02T13:56:10Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>129</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43899702" lon="11.40111197">
+    <ele>527</ele>
+    <time>2015-10-02T13:56:12Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>184</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43903197" lon="11.40118993">
+    <ele>528</ele>
+    <time>2015-10-02T13:56:14Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>115</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43905997" lon="11.40126696">
+    <ele>529</ele>
+    <time>2015-10-02T13:56:16Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>158</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43908000" lon="11.40133300">
+    <ele>530</ele>
+    <time>2015-10-02T13:56:18Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>119</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43910699" lon="11.40139495">
+    <ele>531</ele>
+    <time>2015-10-02T13:56:20Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>181</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43913800" lon="11.40145999">
+    <ele>531</ele>
+    <time>2015-10-02T13:56:22Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>117</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43917002" lon="11.40152000">
+    <ele>532</ele>
+    <time>2015-10-02T13:56:24Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>148</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43920497" lon="11.40158496">
+    <ele>532</ele>
+    <time>2015-10-02T13:56:26Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>115</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43924202" lon="11.40164297">
+    <ele>533</ele>
+    <time>2015-10-02T13:56:28Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>136</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43927697" lon="11.40170197">
+    <ele>533</ele>
+    <time>2015-10-02T13:56:30Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>149</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43931000" lon="11.40175495">
+    <ele>534</ele>
+    <time>2015-10-02T13:56:32Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>191</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43934202" lon="11.40180499">
+    <ele>534</ele>
+    <time>2015-10-02T13:56:34Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>126</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43937697" lon="11.40185193">
+    <ele>534</ele>
+    <time>2015-10-02T13:56:36Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>189</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43941695" lon="11.40190700">
+    <ele>535</ele>
+    <time>2015-10-02T13:56:38Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>122</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43945500" lon="11.40196500">
+    <ele>535</ele>
+    <time>2015-10-02T13:56:40Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>163</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43949197" lon="11.40201797">
+    <ele>535</ele>
+    <time>2015-10-02T13:56:42Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>157</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43952499" lon="11.40205796">
+    <ele>536</ele>
+    <time>2015-10-02T13:56:44Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>133</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43954796" lon="11.40209995">
+    <ele>536</ele>
+    <time>2015-10-02T13:56:46Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>110</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43956699" lon="11.40214798">
+    <ele>536</ele>
+    <time>2015-10-02T13:56:48Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>150</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43958702" lon="11.40219198">
+    <ele>536</ele>
+    <time>2015-10-02T13:56:50Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>156</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43961502" lon="11.40223196">
+    <ele>536</ele>
+    <time>2015-10-02T13:56:52Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>185</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43964201" lon="11.40228200">
+    <ele>536</ele>
+    <time>2015-10-02T13:56:54Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>104</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43966799" lon="11.40232500">
+    <ele>536</ele>
+    <time>2015-10-02T13:56:56Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>110</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43968995" lon="11.40236498">
+    <ele>536</ele>
+    <time>2015-10-02T13:56:58Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>163</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43970202" lon="11.40239994">
+    <ele>536</ele>
+    <time>2015-10-02T13:57:00Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>101</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43972197" lon="11.40242793">
+    <ele>536</ele>
+    <time>2015-10-02T13:57:02Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>172</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43974695" lon="11.40246699">
+    <ele>536</ele>
+    <time>2015-10-02T13:57:04Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>110</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43977695" lon="11.40251292">
+    <ele>536</ele>
+    <time>2015-10-02T13:57:06Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>148</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43980797" lon="11.40256196">
+    <ele>536</ele>
+    <time>2015-10-02T13:57:08Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>125</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43983797" lon="11.40261996">
+    <ele>536</ele>
+    <time>2015-10-02T13:57:10Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>167</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43987200" lon="11.40267796">
+    <ele>537</ele>
+    <time>2015-10-02T13:57:12Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>189</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43990000" lon="11.40273798">
+    <ele>537</ele>
+    <time>2015-10-02T13:57:14Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>175</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43993202" lon="11.40280000">
+    <ele>537</ele>
+    <time>2015-10-02T13:57:16Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>172</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43996295" lon="11.40286295">
+    <ele>537</ele>
+    <time>2015-10-02T13:57:18Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>190</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43999002" lon="11.40292992">
+    <ele>537</ele>
+    <time>2015-10-02T13:57:20Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>192</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44002196" lon="11.40299296">
+    <ele>537</ele>
+    <time>2015-10-02T13:57:22Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>137</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44005196" lon="11.40305993">
+    <ele>537</ele>
+    <time>2015-10-02T13:57:24Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>189</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44008499" lon="11.40313193">
+    <ele>538</ele>
+    <time>2015-10-02T13:57:26Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>177</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44012296" lon="11.40320795">
+    <ele>538</ele>
+    <time>2015-10-02T13:57:28Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>132</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44016294" lon="11.40328800">
+    <ele>539</ele>
+    <time>2015-10-02T13:57:30Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>119</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44020695" lon="11.40336997">
+    <ele>539</ele>
+    <time>2015-10-02T13:57:32Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>199</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44025296" lon="11.40344793">
+    <ele>539</ele>
+    <time>2015-10-02T13:57:34Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>116</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44030200" lon="11.40352194">
+    <ele>539</ele>
+    <time>2015-10-02T13:57:36Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>170</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44034298" lon="11.40359293">
+    <ele>539</ele>
+    <time>2015-10-02T13:57:38Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>150</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44038196" lon="11.40367298">
+    <ele>539</ele>
+    <time>2015-10-02T13:57:40Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>193</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44042999" lon="11.40373995">
+    <ele>539</ele>
+    <time>2015-10-02T13:57:42Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>171</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44047500" lon="11.40380994">
+    <ele>539</ele>
+    <time>2015-10-02T13:57:44Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>110</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44052294" lon="11.40388496">
+    <ele>539</ele>
+    <time>2015-10-02T13:57:46Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>120</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44057298" lon="11.40395696">
+    <ele>539</ele>
+    <time>2015-10-02T13:57:48Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>155</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44062294" lon="11.40401194">
+    <ele>539</ele>
+    <time>2015-10-02T13:57:50Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>170</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44065999" lon="11.40406500">
+    <ele>539</ele>
+    <time>2015-10-02T13:57:52Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>107</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44068497" lon="11.40410800">
+    <ele>539</ele>
+    <time>2015-10-02T13:57:54Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>151</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44070500" lon="11.40413792">
+    <ele>539</ele>
+    <time>2015-10-02T13:57:56Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>119</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44072201" lon="11.40416793">
+    <ele>539</ele>
+    <time>2015-10-02T13:57:58Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>127</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44073501" lon="11.40419693">
+    <ele>539</ele>
+    <time>2015-10-02T13:58:00Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>163</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44075001" lon="11.40422300">
+    <ele>539</ele>
+    <time>2015-10-02T13:58:02Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>144</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44076501" lon="11.40425292">
+    <ele>539</ele>
+    <time>2015-10-02T13:58:04Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>103</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44077499" lon="11.40428000">
+    <ele>539</ele>
+    <time>2015-10-02T13:58:06Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>146</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44078697" lon="11.40430196">
+    <ele>539</ele>
+    <time>2015-10-02T13:58:08Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>107</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44078999" lon="11.40432199">
+    <ele>539</ele>
+    <time>2015-10-02T13:58:10Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>103</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44079200" lon="11.40432794">
+    <ele>539</ele>
+    <time>2015-10-02T13:58:12Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>116</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44079200" lon="11.40433699">
+    <ele>540</ele>
+    <time>2015-10-02T13:58:14Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>139</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44079200" lon="11.40434294">
+    <ele>540</ele>
+    <time>2015-10-02T13:58:16Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>168</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44078999" lon="11.40434999">
+    <ele>540</ele>
+    <time>2015-10-02T13:58:18Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>153</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44078798" lon="11.40435694">
+    <ele>540</ele>
+    <time>2015-10-02T13:58:20Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>168</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44078697" lon="11.40435996">
+    <ele>540</ele>
+    <time>2015-10-02T13:58:22Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>127</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44078697" lon="11.40436298">
+    <ele>540</ele>
+    <time>2015-10-02T13:58:24Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>146</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44078697" lon="11.40436994">
+    <ele>540</ele>
+    <time>2015-10-02T13:58:26Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>127</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44080198" lon="11.40440497">
+    <ele>540</ele>
+    <time>2015-10-02T13:58:28Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>145</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44082796" lon="11.40446297">
+    <ele>540</ele>
+    <time>2015-10-02T13:58:30Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>193</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44086300" lon="11.40453196">
+    <ele>540</ele>
+    <time>2015-10-02T13:58:32Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>108</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44089795" lon="11.40460798">
+    <ele>540</ele>
+    <time>2015-10-02T13:58:34Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>145</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44093701" lon="11.40469800">
+    <ele>540</ele>
+    <time>2015-10-02T13:58:36Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>194</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44097196" lon="11.40480194">
+    <ele>540</ele>
+    <time>2015-10-02T13:58:38Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>185</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44100298" lon="11.40492700">
+    <ele>540</ele>
+    <time>2015-10-02T13:58:40Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>112</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44103198" lon="11.40504795">
+    <ele>540</ele>
+    <time>2015-10-02T13:58:42Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>101</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44105695" lon="11.40515993">
+    <ele>538</ele>
+    <time>2015-10-02T13:58:44Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>123</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44106701" lon="11.40523796">
+    <ele>538</ele>
+    <time>2015-10-02T13:58:46Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>186</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44106995" lon="11.40525498">
+    <ele>538</ele>
+    <time>2015-10-02T13:58:48Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>143</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44107799" lon="11.40525800">
+    <ele>538</ele>
+    <time>2015-10-02T13:58:50Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>176</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44108696" lon="11.40524794">
+    <ele>538</ele>
+    <time>2015-10-02T13:58:52Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>187</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44108495" lon="11.40522799">
+    <ele>538</ele>
+    <time>2015-10-02T13:58:54Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>137</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44107296" lon="11.40519195">
+    <ele>538</ele>
+    <time>2015-10-02T13:58:56Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>194</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44105997" lon="11.40513193">
+    <ele>538</ele>
+    <time>2015-10-02T13:58:58Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>179</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44104497" lon="11.40505499">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:00Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>183</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44102301" lon="11.40497192">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:02Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>194</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44099996" lon="11.40488500">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:04Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>158</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44097498" lon="11.40479800">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:06Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>159</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44095495" lon="11.40472700">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:08Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>131</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44095000" lon="11.40468199">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:10Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>142</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44096501" lon="11.40466498">
+    <ele>539</ele>
+    <time>2015-10-02T13:59:12Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>190</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44099199" lon="11.40464796">
+    <ele>539</ele>
+    <time>2015-10-02T13:59:14Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>115</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44102695" lon="11.40462692">
+    <ele>539</ele>
+    <time>2015-10-02T13:59:16Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>183</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44105997" lon="11.40461997">
+    <ele>539</ele>
+    <time>2015-10-02T13:59:18Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>173</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44110197" lon="11.40463195">
+    <ele>539</ele>
+    <time>2015-10-02T13:59:20Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>149</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44114999" lon="11.40468694">
+    <ele>539</ele>
+    <time>2015-10-02T13:59:22Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>121</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44118796" lon="11.40477797">
+    <ele>539</ele>
+    <time>2015-10-02T13:59:24Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>111</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44121697" lon="11.40486799">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:26Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>104</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44124697" lon="11.40495700">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:28Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>142</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44127798" lon="11.40504694">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:30Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>132</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44130699" lon="11.40514199">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:32Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>110</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44134001" lon="11.40522497">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:34Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>142</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44136801" lon="11.40530494">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:36Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>162</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44139801" lon="11.40538700">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:38Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>161</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44142199" lon="11.40546696">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:40Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>177</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44144495" lon="11.40554793">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:42Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>148</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44147496" lon="11.40563795">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:44Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>198</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44152198" lon="11.40571196">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:46Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>192</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44156800" lon="11.40580995">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:48Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>164</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44165701" lon="11.40589796">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:50Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>174</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44172801" lon="11.40596493">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:52Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>195</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44176196" lon="11.40601799">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:54Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>151</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44177000" lon="11.40603693">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:56Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>122</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44177797" lon="11.40605495">
+    <ele>538</ele>
+    <time>2015-10-02T13:59:58Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>129</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44178501" lon="11.40606995">
+    <ele>538</ele>
+    <time>2015-10-02T14:00:00Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>181</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44179196" lon="11.40608294">
+    <ele>538</ele>
+    <time>2015-10-02T14:00:02Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>100</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44179196" lon="11.40608294">
+    <ele>538</ele>
+    <time>2015-10-02T14:00:02Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>128</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44204694" lon="11.40587993">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:03Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>191</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44204795" lon="11.40587298">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:05Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>136</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44204795" lon="11.40586795">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:07Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>140</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44204795" lon="11.40586795">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:09Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>187</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44204996" lon="11.40586300">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:11Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>195</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44205499" lon="11.40586200">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:13Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>199</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44205700" lon="11.40585999">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:15Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>115</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44205700" lon="11.40585999">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:17Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>154</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44205700" lon="11.40586300">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:19Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>123</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44205700" lon="11.40586694">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:21Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>177</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44205800" lon="11.40586996">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:23Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>145</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44206002" lon="11.40587298">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:25Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>173</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44206194" lon="11.40587499">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:27Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>119</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44206496" lon="11.40587700">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:29Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>147</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44206697" lon="11.40587993">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:31Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>192</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207200" lon="11.40587792">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:33Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>185</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207695" lon="11.40587700">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:35Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>194</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207997" lon="11.40587700">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:37Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>139</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44208198" lon="11.40587792">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:39Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>134</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44208500" lon="11.40587993">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:41Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>120</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44208701" lon="11.40588195">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:43Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>132</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44208801" lon="11.40588698">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:45Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>133</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44208994" lon="11.40589293">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:47Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>157</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44209195" lon="11.40590299">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:49Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>143</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44209195" lon="11.40590994">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:51Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>187</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44209296" lon="11.40591799">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:53Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>164</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44209497" lon="11.40592495">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:55Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>151</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44209497" lon="11.40593199">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:57Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>189</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44209698" lon="11.40593693">
+    <ele>533</ele>
+    <time>2015-10-02T14:00:59Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>183</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44209698" lon="11.40593794">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:01Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>163</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44209497" lon="11.40593995">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:03Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>20.000000</gpxtpx:atemp>
+      <gpxtpx:hr>147</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44209497" lon="11.40593794">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:05Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>142</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44209497" lon="11.40593500">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:07Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>100</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44209497" lon="11.40593199">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:09Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>160</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44209497" lon="11.40592696">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:11Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>192</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44209296" lon="11.40592293">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:13Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>134</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44209296" lon="11.40591799">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:15Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>125</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44209195" lon="11.40591296">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:17Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>141</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44209195" lon="11.40590994">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:19Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>124</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44208994" lon="11.40590994">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:21Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>197</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44209195" lon="11.40590793">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:23Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>147</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44209195" lon="11.40590693">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:25Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>168</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44209296" lon="11.40588999">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:27Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>180</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44209195" lon="11.40588295">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:29Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>185</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44208994" lon="11.40587792">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:31Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>127</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44208701" lon="11.40587499">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:33Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>160</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44208500" lon="11.40587499">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:35Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>170</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44208500" lon="11.40587298">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:37Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>113</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44208701" lon="11.40586493">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:39Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>175</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44208298" lon="11.40586200">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:41Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>137</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207795" lon="11.40585999">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:43Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>115</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207502" lon="11.40585697">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:45Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>164</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207301" lon="11.40585496">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:47Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>163</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207200" lon="11.40585294">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:49Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>156</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207200" lon="11.40585294">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:51Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>120</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207301" lon="11.40585294">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:53Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>195</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207301" lon="11.40585294">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:55Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>190</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207695" lon="11.40585496">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:57Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>142</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207795" lon="11.40585697">
+    <ele>533</ele>
+    <time>2015-10-02T14:01:59Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>164</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207997" lon="11.40585697">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:01Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>194</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44208198" lon="11.40585797">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:03Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>175</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44208198" lon="11.40585496">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:05Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>176</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207997" lon="11.40585194">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:07Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>104</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207997" lon="11.40584800">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:09Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>196</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207795" lon="11.40584498">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:11Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>132</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207795" lon="11.40583995">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:13Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>173</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207695" lon="11.40583694">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:15Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>160</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207695" lon="11.40583199">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:17Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>156</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207301" lon="11.40582696">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:19Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>155</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44206999" lon="11.40582193">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:21Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>170</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44206697" lon="11.40581498">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:23Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>125</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44206295" lon="11.40580793">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:25Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>148</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44206194" lon="11.40580299">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:27Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>125</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44205800" lon="11.40579796">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:29Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>171</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44205499" lon="11.40579494">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:31Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>144</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44205197" lon="11.40579293">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:33Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>164</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44204694" lon="11.40579000">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:35Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>112</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44203998" lon="11.40578698">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:37Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>104</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44203697" lon="11.40578698">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:39Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>190</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44203294" lon="11.40579193">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:41Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>184</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44203294" lon="11.40579695">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:43Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>124</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44203202" lon="11.40580299">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:45Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>159</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44203202" lon="11.40580693">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:47Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>179</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44202800" lon="11.40580793">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:49Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>111</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44202699" lon="11.40580995">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:51Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>145</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44202297" lon="11.40581296">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:53Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>102</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44202297" lon="11.40581296">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:55Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>146</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44202196" lon="11.40581498">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:57Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>133</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44201995" lon="11.40581799">
+    <ele>533</ele>
+    <time>2015-10-02T14:02:59Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>197</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44201995" lon="11.40581699">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:01Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>149</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44201501" lon="11.40581296">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:03Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>139</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200998" lon="11.40580995">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:05Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>123</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200797" lon="11.40580693">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:07Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>186</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200495" lon="11.40579997">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:09Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>134</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200495" lon="11.40579695">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:11Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>176</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200495" lon="11.40579293">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:13Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>177</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200696" lon="11.40579193">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:15Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>138</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200696" lon="11.40579000">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:17Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>131</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200302" lon="11.40578698">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:19Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>166</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200000" lon="11.40578296">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:21Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>191</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200000" lon="11.40578195">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:23Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>132</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200000" lon="11.40577700">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:25Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>157</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200000" lon="11.40577298">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:27Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>155</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200000" lon="11.40577298">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:29Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>102</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200000" lon="11.40576795">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:31Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>170</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200201" lon="11.40576292">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:33Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>150</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200201" lon="11.40576292">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:35Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>135</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200201" lon="11.40576200">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:37Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>163</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200495" lon="11.40575798">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:39Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>123</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200797" lon="11.40575697">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:41Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>194</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44201501" lon="11.40575496">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:43Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>107</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44202297" lon="11.40575295">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:45Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>183</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44203294" lon="11.40575194">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:47Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>121</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44204200" lon="11.40574993">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:49Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>137</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44204694" lon="11.40575194">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:51Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>101</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44205197" lon="11.40576292">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:53Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>165</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44205800" lon="11.40576795">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:55Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>121</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44206496" lon="11.40577198">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:57Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>141</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44206798" lon="11.40577499">
+    <ele>533</ele>
+    <time>2015-10-02T14:03:59Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>136</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207301" lon="11.40577793">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:01Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>127</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207502" lon="11.40578497">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:03Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>169</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207695" lon="11.40579293">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:05Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>134</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207695" lon="11.40580198">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:07Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>128</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207502" lon="11.40580793">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:09Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>104</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207502" lon="11.40581498">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:11Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>180</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207502" lon="11.40582000">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:13Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>184</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207695" lon="11.40582193">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:15Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>180</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207795" lon="11.40582193">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:17Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>113</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207997" lon="11.40582294">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:19Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>186</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44208198" lon="11.40582495">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:21Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>147</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44208198" lon="11.40582696">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:23Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>103</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44208198" lon="11.40582797">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:25Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>159</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44208198" lon="11.40583199">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:27Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>129</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207997" lon="11.40583492">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:29Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>154</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207795" lon="11.40583995">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:31Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>103</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207695" lon="11.40584498">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:33Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>129</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207795" lon="11.40586200">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:35Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>101</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44206798" lon="11.40590793">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:37Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>146</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44203697" lon="11.40594992">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:39Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>110</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200797" lon="11.40599200">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:41Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>122</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200000" lon="11.40601698">
+    <ele>533</ele>
+    <time>2015-10-02T14:04:43Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>127</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44199699" lon="11.40602293">
+    <ele>534</ele>
+    <time>2015-10-02T14:04:45Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>117</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44199497" lon="11.40602997">
+    <ele>534</ele>
+    <time>2015-10-02T14:04:47Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>102</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44199196" lon="11.40603299">
+    <ele>534</ele>
+    <time>2015-10-02T14:04:49Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>127</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44198500" lon="11.40604296">
+    <ele>534</ele>
+    <time>2015-10-02T14:04:51Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>186</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44197494" lon="11.40606300">
+    <ele>535</ele>
+    <time>2015-10-02T14:04:53Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>166</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44195700" lon="11.40607297">
+    <ele>535</ele>
+    <time>2015-10-02T14:04:55Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>178</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44193295" lon="11.40608797">
+    <ele>535</ele>
+    <time>2015-10-02T14:04:57Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>123</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44190696" lon="11.40608998">
+    <ele>535</ele>
+    <time>2015-10-02T14:04:59Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>125</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44187997" lon="11.40608194">
+    <ele>535</ele>
+    <time>2015-10-02T14:05:01Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>171</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44185994" lon="11.40608697">
+    <ele>535</ele>
+    <time>2015-10-02T14:05:03Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>105</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44185198" lon="11.40609694">
+    <ele>535</ele>
+    <time>2015-10-02T14:05:05Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>103</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44184301" lon="11.40610197">
+    <ele>535</ele>
+    <time>2015-10-02T14:05:07Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>153</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44183496" lon="11.40610499">
+    <ele>535</ele>
+    <time>2015-10-02T14:05:09Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>192</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44183002" lon="11.40610499">
+    <ele>535</ele>
+    <time>2015-10-02T14:05:11Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>115</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44182499" lon="11.40610499">
+    <ele>535</ele>
+    <time>2015-10-02T14:05:13Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>102</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44181694" lon="11.40610792">
+    <ele>535</ele>
+    <time>2015-10-02T14:05:15Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>137</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44181200" lon="11.40610993">
+    <ele>535</ele>
+    <time>2015-10-02T14:05:17Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>113</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44182700" lon="11.40613793">
+    <ele>535</ele>
+    <time>2015-10-02T14:05:19Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>19.000000</gpxtpx:atemp>
+      <gpxtpx:hr>191</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44187696" lon="11.40616995">
+    <ele>535</ele>
+    <time>2015-10-02T14:05:21Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>130</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44192498" lon="11.40622493">
+    <ele>535</ele>
+    <time>2015-10-02T14:05:23Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>161</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44196195" lon="11.40627296">
+    <ele>536</ele>
+    <time>2015-10-02T14:05:25Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>127</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44197695" lon="11.40633298">
+    <ele>536</ele>
+    <time>2015-10-02T14:05:27Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>119</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200797" lon="11.40639199">
+    <ele>536</ele>
+    <time>2015-10-02T14:05:29Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>151</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44204200" lon="11.40646499">
+    <ele>536</ele>
+    <time>2015-10-02T14:05:31Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>108</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44205800" lon="11.40651000">
+    <ele>536</ele>
+    <time>2015-10-02T14:05:33Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>164</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44206002" lon="11.40651998">
+    <ele>536</ele>
+    <time>2015-10-02T14:05:35Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>166</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44206002" lon="11.40652492">
+    <ele>536</ele>
+    <time>2015-10-02T14:05:38Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>136</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44206002" lon="11.40652995">
+    <ele>536</ele>
+    <time>2015-10-02T14:05:39Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>187</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44206295" lon="11.40653498">
+    <ele>536</ele>
+    <time>2015-10-02T14:05:41Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>122</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44206496" lon="11.40654194">
+    <ele>536</ele>
+    <time>2015-10-02T14:05:43Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>185</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44206798" lon="11.40654697">
+    <ele>536</ele>
+    <time>2015-10-02T14:05:45Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>109</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44206999" lon="11.40655200">
+    <ele>536</ele>
+    <time>2015-10-02T14:05:47Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>103</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207301" lon="11.40655694">
+    <ele>536</ele>
+    <time>2015-10-02T14:05:49Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>111</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207502" lon="11.40655996">
+    <ele>536</ele>
+    <time>2015-10-02T14:05:51Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>194</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207301" lon="11.40656499">
+    <ele>536</ele>
+    <time>2015-10-02T14:05:53Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>116</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207200" lon="11.40656700">
+    <ele>536</ele>
+    <time>2015-10-02T14:05:55Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>153</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207695" lon="11.40656197">
+    <ele>536</ele>
+    <time>2015-10-02T14:05:57Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>155</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207301" lon="11.40655694">
+    <ele>536</ele>
+    <time>2015-10-02T14:05:59Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>120</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207502" lon="11.40655300">
+    <ele>536</ele>
+    <time>2015-10-02T14:06:01Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>141</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207200" lon="11.40655493">
+    <ele>536</ele>
+    <time>2015-10-02T14:06:03Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>183</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44206999" lon="11.40655694">
+    <ele>536</ele>
+    <time>2015-10-02T14:06:05Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>120</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44206999" lon="11.40652794">
+    <ele>536</ele>
+    <time>2015-10-02T14:06:07Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>148</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44204795" lon="11.40649500">
+    <ele>536</ele>
+    <time>2015-10-02T14:06:09Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>117</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44200696" lon="11.40650497">
+    <ele>536</ele>
+    <time>2015-10-02T14:06:11Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>152</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44196497" lon="11.40653699">
+    <ele>536</ele>
+    <time>2015-10-02T14:06:13Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>180</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44193001" lon="11.40656993">
+    <ele>536</ele>
+    <time>2015-10-02T14:06:15Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>185</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44189498" lon="11.40658997">
+    <ele>536</ele>
+    <time>2015-10-02T14:06:17Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>165</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44187302" lon="11.40658795">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:19Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>149</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44185801" lon="11.40659500">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:21Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>130</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44182801" lon="11.40658695">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:23Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>143</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44179297" lon="11.40654697">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:25Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>129</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44177302" lon="11.40646197">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:27Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>177</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44177201" lon="11.40637195">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:29Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>181</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44178702" lon="11.40629199">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:31Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>140</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44177696" lon="11.40622795">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:33Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>169</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44174494" lon="11.40620297">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:35Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>124</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44169297" lon="11.40616995">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:37Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>127</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44162701" lon="11.40612293">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:39Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>156</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44156196" lon="11.40608194">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:41Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>157</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44150698" lon="11.40604498">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:43Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>104</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44146297" lon="11.40601799">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:45Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>114</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44142199" lon="11.40600700">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:47Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>137</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44138695" lon="11.40599795">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:49Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>164</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44136197" lon="11.40598697">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:51Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>182</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44133498" lon="11.40598496">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:53Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>185</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44129500" lon="11.40597700">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:55Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>112</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44125200" lon="11.40599200">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:57Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>199</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44123197" lon="11.40604196">
+    <ele>535</ele>
+    <time>2015-10-02T14:06:59Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>165</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44120196" lon="11.40612200">
+    <ele>535</ele>
+    <time>2015-10-02T14:07:01Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>143</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44116500" lon="11.40622695">
+    <ele>534</ele>
+    <time>2015-10-02T14:07:03Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>167</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44111697" lon="11.40636692">
+    <ele>532</ele>
+    <time>2015-10-02T14:07:05Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>193</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44107196" lon="11.40650296">
+    <ele>530</ele>
+    <time>2015-10-02T14:07:07Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>165</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44104497" lon="11.40662995">
+    <ele>528</ele>
+    <time>2015-10-02T14:07:09Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>170</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44103801" lon="11.40672693">
+    <ele>526</ele>
+    <time>2015-10-02T14:07:11Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>174</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44103700" lon="11.40675199">
+    <ele>525</ele>
+    <time>2015-10-02T14:07:13Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>127</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44104195" lon="11.40683497">
+    <ele>523</ele>
+    <time>2015-10-02T14:07:15Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>119</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44105695" lon="11.40699196">
+    <ele>521</ele>
+    <time>2015-10-02T14:07:17Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>135</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44108001" lon="11.40719698">
+    <ele>518</ele>
+    <time>2015-10-02T14:07:19Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>18.000000</gpxtpx:atemp>
+      <gpxtpx:hr>137</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44111999" lon="11.40737996">
+    <ele>513</ele>
+    <time>2015-10-02T14:07:21Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>174</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44114698" lon="11.40757794">
+    <ele>511</ele>
+    <time>2015-10-02T14:07:23Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>188</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44115301" lon="11.40774298">
+    <ele>508</ele>
+    <time>2015-10-02T14:07:25Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>180</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44116298" lon="11.40789193">
+    <ele>504</ele>
+    <time>2015-10-02T14:07:27Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>110</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44116994" lon="11.40798698">
+    <ele>502</ele>
+    <time>2015-10-02T14:07:29Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>171</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44116198" lon="11.40802696">
+    <ele>501</ele>
+    <time>2015-10-02T14:07:31Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>199</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44114999" lon="11.40805194">
+    <ele>501</ele>
+    <time>2015-10-02T14:07:33Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>118</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44113801" lon="11.40807801">
+    <ele>500</ele>
+    <time>2015-10-02T14:07:35Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>170</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44112795" lon="11.40810692">
+    <ele>500</ele>
+    <time>2015-10-02T14:07:37Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>179</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44113197" lon="11.40816199">
+    <ele>500</ele>
+    <time>2015-10-02T14:07:39Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>143</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44114002" lon="11.40823693">
+    <ele>499</ele>
+    <time>2015-10-02T14:07:41Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>109</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44114999" lon="11.40831194">
+    <ele>498</ele>
+    <time>2015-10-02T14:07:43Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>146</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44116198" lon="11.40837799">
+    <ele>496</ele>
+    <time>2015-10-02T14:07:45Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>133</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44116701" lon="11.40843298">
+    <ele>494</ele>
+    <time>2015-10-02T14:07:47Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>155</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44117195" lon="11.40845494">
+    <ele>494</ele>
+    <time>2015-10-02T14:07:49Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>141</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44116994" lon="11.40847497">
+    <ele>494</ele>
+    <time>2015-10-02T14:07:51Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>151</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44116298" lon="11.40849995">
+    <ele>494</ele>
+    <time>2015-10-02T14:07:53Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>154</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44115997" lon="11.40852300">
+    <ele>493</ele>
+    <time>2015-10-02T14:07:55Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>165</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44115301" lon="11.40854798">
+    <ele>493</ele>
+    <time>2015-10-02T14:07:57Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>160</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44115200" lon="11.40857497">
+    <ele>493</ele>
+    <time>2015-10-02T14:07:59Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>177</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44115301" lon="11.40860699">
+    <ele>493</ele>
+    <time>2015-10-02T14:08:01Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>130</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44114295" lon="11.40862492">
+    <ele>493</ele>
+    <time>2015-10-02T14:08:03Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>186</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44113499" lon="11.40863699">
+    <ele>493</ele>
+    <time>2015-10-02T14:08:05Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>106</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44112996" lon="11.40864697">
+    <ele>493</ele>
+    <time>2015-10-02T14:08:07Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>148</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44112996" lon="11.40865795">
+    <ele>493</ele>
+    <time>2015-10-02T14:08:09Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>132</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44112694" lon="11.40866700">
+    <ele>493</ele>
+    <time>2015-10-02T14:08:11Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>152</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44112694" lon="11.40867698">
+    <ele>493</ele>
+    <time>2015-10-02T14:08:13Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>100</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44112694" lon="11.40868494">
+    <ele>493</ele>
+    <time>2015-10-02T14:08:15Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>118</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44113700" lon="11.40868494">
+    <ele>493</ele>
+    <time>2015-10-02T14:08:17Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>170</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44114496" lon="11.40865795">
+    <ele>493</ele>
+    <time>2015-10-02T14:08:19Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>151</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44115695" lon="11.40862694">
+    <ele>493</ele>
+    <time>2015-10-02T14:08:21Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>136</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44116994" lon="11.40859198">
+    <ele>493</ele>
+    <time>2015-10-02T14:08:23Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>101</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44117799" lon="11.40855695">
+    <ele>493</ele>
+    <time>2015-10-02T14:08:25Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>151</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44118796" lon="11.40852199">
+    <ele>494</ele>
+    <time>2015-10-02T14:08:27Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>181</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44119500" lon="11.40848193">
+    <ele>495</ele>
+    <time>2015-10-02T14:08:29Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>124</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44119995" lon="11.40844195">
+    <ele>496</ele>
+    <time>2015-10-02T14:08:31Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>154</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44120297" lon="11.40840498">
+    <ele>497</ele>
+    <time>2015-10-02T14:08:33Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>132</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44121001" lon="11.40836793">
+    <ele>498</ele>
+    <time>2015-10-02T14:08:35Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>113</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44121001" lon="11.40833793">
+    <ele>499</ele>
+    <time>2015-10-02T14:08:37Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>154</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44122199" lon="11.40829493">
+    <ele>500</ele>
+    <time>2015-10-02T14:08:39Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>124</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44123297" lon="11.40825000">
+    <ele>501</ele>
+    <time>2015-10-02T14:08:41Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>148</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44125301" lon="11.40820499">
+    <ele>502</ele>
+    <time>2015-10-02T14:08:43Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>176</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44127296" lon="11.40815797">
+    <ele>502</ele>
+    <time>2015-10-02T14:08:45Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>132</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44129198" lon="11.40811698">
+    <ele>502</ele>
+    <time>2015-10-02T14:08:47Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>190</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44131302" lon="11.40808697">
+    <ele>503</ele>
+    <time>2015-10-02T14:08:49Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>194</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44132702" lon="11.40804699">
+    <ele>503</ele>
+    <time>2015-10-02T14:08:51Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>109</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44134697" lon="11.40801296">
+    <ele>505</ele>
+    <time>2015-10-02T14:08:53Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>147</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44137002" lon="11.40798195">
+    <ele>505</ele>
+    <time>2015-10-02T14:08:55Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>112</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44137999" lon="11.40796200">
+    <ele>505</ele>
+    <time>2015-10-02T14:08:57Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>194</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44138695" lon="11.40794993">
+    <ele>505</ele>
+    <time>2015-10-02T14:08:59Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>180</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44139198" lon="11.40793794">
+    <ele>505</ele>
+    <time>2015-10-02T14:09:01Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>192</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44139801" lon="11.40792495">
+    <ele>506</ele>
+    <time>2015-10-02T14:09:03Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>17.000000</gpxtpx:atemp>
+      <gpxtpx:hr>192</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44140296" lon="11.40791196">
+    <ele>506</ele>
+    <time>2015-10-02T14:09:05Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>157</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44140799" lon="11.40790199">
+    <ele>506</ele>
+    <time>2015-10-02T14:09:07Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>101</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44141494" lon="11.40789000">
+    <ele>506</ele>
+    <time>2015-10-02T14:09:09Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>169</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44142199" lon="11.40787994">
+    <ele>506</ele>
+    <time>2015-10-02T14:09:11Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>162</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44142802" lon="11.40786494">
+    <ele>506</ele>
+    <time>2015-10-02T14:09:13Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>127</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44143297" lon="11.40785496">
+    <ele>506</ele>
+    <time>2015-10-02T14:09:15Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>198</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44143699" lon="11.40784499">
+    <ele>506</ele>
+    <time>2015-10-02T14:09:17Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>172</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44144495" lon="11.40783200">
+    <ele>506</ele>
+    <time>2015-10-02T14:09:19Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>199</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44145702" lon="11.40782194">
+    <ele>506</ele>
+    <time>2015-10-02T14:09:21Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>119</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44147697" lon="11.40780693">
+    <ele>506</ele>
+    <time>2015-10-02T14:09:23Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>155</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44149499" lon="11.40779696">
+    <ele>506</ele>
+    <time>2015-10-02T14:09:25Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>192</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44151201" lon="11.40779193">
+    <ele>506</ele>
+    <time>2015-10-02T14:09:27Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>167</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44152994" lon="11.40778699">
+    <ele>506</ele>
+    <time>2015-10-02T14:09:29Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>156</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44155300" lon="11.40778196">
+    <ele>506</ele>
+    <time>2015-10-02T14:09:31Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>136</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44157496" lon="11.40777500">
+    <ele>506</ele>
+    <time>2015-10-02T14:09:33Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>146</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44159700" lon="11.40776494">
+    <ele>506</ele>
+    <time>2015-10-02T14:09:35Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>118</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44160295" lon="11.40775798">
+    <ele>506</ele>
+    <time>2015-10-02T14:09:37Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>118</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44160798" lon="11.40775497">
+    <ele>507</ele>
+    <time>2015-10-02T14:09:39Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>136</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44161301" lon="11.40775295">
+    <ele>507</ele>
+    <time>2015-10-02T14:09:41Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>107</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44161997" lon="11.40774994">
+    <ele>507</ele>
+    <time>2015-10-02T14:09:43Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>186</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44162500" lon="11.40774700">
+    <ele>507</ele>
+    <time>2015-10-02T14:09:45Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>129</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44162500" lon="11.40774700">
+    <ele>507</ele>
+    <time>2015-10-02T14:09:47Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>139</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44163195" lon="11.40773996">
+    <ele>507</ele>
+    <time>2015-10-02T14:09:49Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>185</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44164000" lon="11.40773292">
+    <ele>507</ele>
+    <time>2015-10-02T14:09:51Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>118</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44164696" lon="11.40773200">
+    <ele>507</ele>
+    <time>2015-10-02T14:09:53Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>174</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44164997" lon="11.40772999">
+    <ele>507</ele>
+    <time>2015-10-02T14:09:55Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>116</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44165500" lon="11.40772496">
+    <ele>507</ele>
+    <time>2015-10-02T14:09:57Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>167</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44165802" lon="11.40772295">
+    <ele>507</ele>
+    <time>2015-10-02T14:09:59Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>122</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44166498" lon="11.40771700">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:01Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>188</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44168996" lon="11.40770794">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:03Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>149</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44173002" lon="11.40769294">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:05Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>126</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44178199" lon="11.40767199">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:07Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>157</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44182197" lon="11.40765497">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:09Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>143</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44186799" lon="11.40760996">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:11Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>149</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44193697" lon="11.40753293">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:13Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>198</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44201501" lon="11.40743796">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:15Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>130</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44208298" lon="11.40734694">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:17Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>183</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44213998" lon="11.40725700">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:19Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>184</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44217996" lon="11.40717997">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:21Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>102</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44222799" lon="11.40711694">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:23Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>173</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44227694" lon="11.40706195">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:25Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>125</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44231994" lon="11.40700998">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:27Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>161</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44237300" lon="11.40695500">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:29Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>163</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44241801" lon="11.40690194">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:31Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>115</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44246495" lon="11.40685198">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:33Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>196</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44251197" lon="11.40677797">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:35Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>121</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44256201" lon="11.40668493">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:37Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>175</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44260501" lon="11.40656298">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:39Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>108</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44262294" lon="11.40643499">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:41Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>121</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44262294" lon="11.40631294">
+    <ele>507</ele>
+    <time>2015-10-02T14:10:43Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>176</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44260794" lon="11.40620297">
+    <ele>506</ele>
+    <time>2015-10-02T14:10:45Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>100</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44257802" lon="11.40606995">
+    <ele>506</ele>
+    <time>2015-10-02T14:10:47Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>148</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44253795" lon="11.40595696">
+    <ele>506</ele>
+    <time>2015-10-02T14:10:49Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>124</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44250694" lon="11.40586300">
+    <ele>504</ele>
+    <time>2015-10-02T14:10:51Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>157</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44247702" lon="11.40578497">
+    <ele>504</ele>
+    <time>2015-10-02T14:10:53Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>148</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44243301" lon="11.40569193">
+    <ele>504</ele>
+    <time>2015-10-02T14:10:55Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>143</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44238800" lon="11.40558799">
+    <ele>505</ele>
+    <time>2015-10-02T14:10:57Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>153</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44235296" lon="11.40549697">
+    <ele>505</ele>
+    <time>2015-10-02T14:10:59Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>100</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44231801" lon="11.40538800">
+    <ele>506</ele>
+    <time>2015-10-02T14:11:01Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>112</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44228499" lon="11.40529697">
+    <ele>507</ele>
+    <time>2015-10-02T14:11:03Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>107</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44225498" lon="11.40520293">
+    <ele>508</ele>
+    <time>2015-10-02T14:11:05Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>187</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44222497" lon="11.40512196">
+    <ele>508</ele>
+    <time>2015-10-02T14:11:07Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>180</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44219195" lon="11.40503797">
+    <ele>508</ele>
+    <time>2015-10-02T14:11:09Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>172</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44215800" lon="11.40493194">
+    <ele>508</ele>
+    <time>2015-10-02T14:11:11Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>130</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44211802" lon="11.40482700">
+    <ele>508</ele>
+    <time>2015-10-02T14:11:13Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>132</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44207997" lon="11.40472793">
+    <ele>509</ele>
+    <time>2015-10-02T14:11:15Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>101</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44204501" lon="11.40462692">
+    <ele>509</ele>
+    <time>2015-10-02T14:11:17Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>163</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44201299" lon="11.40454797">
+    <ele>510</ele>
+    <time>2015-10-02T14:11:19Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>191</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44198701" lon="11.40446800">
+    <ele>511</ele>
+    <time>2015-10-02T14:11:21Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>190</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44197201" lon="11.40434999">
+    <ele>511</ele>
+    <time>2015-10-02T14:11:23Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>162</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44194996" lon="11.40422795">
+    <ele>511</ele>
+    <time>2015-10-02T14:11:25Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>162</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44191996" lon="11.40411295">
+    <ele>511</ele>
+    <time>2015-10-02T14:11:27Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>182</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44189297" lon="11.40400700">
+    <ele>511</ele>
+    <time>2015-10-02T14:11:29Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>137</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44187302" lon="11.40391497">
+    <ele>511</ele>
+    <time>2015-10-02T14:11:31Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>130</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44185298" lon="11.40382997">
+    <ele>511</ele>
+    <time>2015-10-02T14:11:33Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>197</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44183697" lon="11.40373299">
+    <ele>511</ele>
+    <time>2015-10-02T14:11:35Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>153</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44181300" lon="11.40361498">
+    <ele>511</ele>
+    <time>2015-10-02T14:11:37Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>190</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44179297" lon="11.40348799">
+    <ele>511</ele>
+    <time>2015-10-02T14:11:39Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>136</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44177797" lon="11.40337794">
+    <ele>511</ele>
+    <time>2015-10-02T14:11:41Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>155</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44176296" lon="11.40325296">
+    <ele>511</ele>
+    <time>2015-10-02T14:11:43Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>173</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44174494" lon="11.40311994">
+    <ele>511</ele>
+    <time>2015-10-02T14:11:45Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>110</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44172298" lon="11.40298994">
+    <ele>511</ele>
+    <time>2015-10-02T14:11:47Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>117</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44170001" lon="11.40285994">
+    <ele>511</ele>
+    <time>2015-10-02T14:11:49Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>103</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44167797" lon="11.40273999">
+    <ele>511</ele>
+    <time>2015-10-02T14:11:51Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>133</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44164997" lon="11.40262499">
+    <ele>511</ele>
+    <time>2015-10-02T14:11:53Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>173</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44161695" lon="11.40251695">
+    <ele>511</ele>
+    <time>2015-10-02T14:11:55Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>159</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44157294" lon="11.40242299">
+    <ele>511</ele>
+    <time>2015-10-02T14:11:57Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>178</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44153799" lon="11.40233992">
+    <ele>511</ele>
+    <time>2015-10-02T14:11:59Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>153</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44150799" lon="11.40225493">
+    <ele>511</ele>
+    <time>2015-10-02T14:12:01Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>169</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44147999" lon="11.40216793">
+    <ele>511</ele>
+    <time>2015-10-02T14:12:03Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>137</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44144294" lon="11.40206793">
+    <ele>511</ele>
+    <time>2015-10-02T14:12:05Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>160</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44139994" lon="11.40196994">
+    <ele>511</ele>
+    <time>2015-10-02T14:12:07Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>148</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44133498" lon="11.40187297">
+    <ele>511</ele>
+    <time>2015-10-02T14:12:09Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>197</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44126701" lon="11.40181496">
+    <ele>511</ele>
+    <time>2015-10-02T14:12:11Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>124</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44121697" lon="11.40179200">
+    <ele>511</ele>
+    <time>2015-10-02T14:12:13Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>181</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44115301" lon="11.40176693">
+    <ele>511</ele>
+    <time>2015-10-02T14:12:15Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>124</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44108696" lon="11.40173198">
+    <ele>511</ele>
+    <time>2015-10-02T14:12:17Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>174</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44101697" lon="11.40170197">
+    <ele>511</ele>
+    <time>2015-10-02T14:12:19Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>173</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44094497" lon="11.40166996">
+    <ele>511</ele>
+    <time>2015-10-02T14:12:21Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>104</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44086501" lon="11.40163199">
+    <ele>512</ele>
+    <time>2015-10-02T14:12:23Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>187</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44078194" lon="11.40159494">
+    <ele>513</ele>
+    <time>2015-10-02T14:12:25Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>171</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44070198" lon="11.40156300">
+    <ele>513</ele>
+    <time>2015-10-02T14:12:27Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>174</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44061296" lon="11.40153492">
+    <ele>514</ele>
+    <time>2015-10-02T14:12:29Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>148</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44052202" lon="11.40150793">
+    <ele>514</ele>
+    <time>2015-10-02T14:12:31Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>173</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44043200" lon="11.40147499">
+    <ele>514</ele>
+    <time>2015-10-02T14:12:33Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>135</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44033997" lon="11.40142294">
+    <ele>515</ele>
+    <time>2015-10-02T14:12:35Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>199</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44024994" lon="11.40138195">
+    <ele>515</ele>
+    <time>2015-10-02T14:12:37Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>114</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44016495" lon="11.40133493">
+    <ele>516</ele>
+    <time>2015-10-02T14:12:39Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>110</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44008197" lon="11.40129998">
+    <ele>516</ele>
+    <time>2015-10-02T14:12:41Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>131</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.44000796" lon="11.40128196">
+    <ele>516</ele>
+    <time>2015-10-02T14:12:43Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>107</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43995800" lon="11.40128799">
+    <ele>517</ele>
+    <time>2015-10-02T14:12:45Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>115</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43991702" lon="11.40127299">
+    <ele>517</ele>
+    <time>2015-10-02T14:12:47Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>137</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43986798" lon="11.40126293">
+    <ele>517</ele>
+    <time>2015-10-02T14:12:49Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>15.000000</gpxtpx:atemp>
+      <gpxtpx:hr>113</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43981995" lon="11.40125296">
+    <ele>517</ele>
+    <time>2015-10-02T14:12:51Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>113</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43976497" lon="11.40123292">
+    <ele>517</ele>
+    <time>2015-10-02T14:12:53Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>162</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43970202" lon="11.40121297">
+    <ele>517</ele>
+    <time>2015-10-02T14:12:55Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>187</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43964201" lon="11.40119495">
+    <ele>517</ele>
+    <time>2015-10-02T14:12:57Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>144</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43957998" lon="11.40117693">
+    <ele>517</ele>
+    <time>2015-10-02T14:12:59Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>15.000000</gpxtpx:atemp>
+      <gpxtpx:hr>193</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43952198" lon="11.40115296">
+    <ele>517</ele>
+    <time>2015-10-02T14:13:01Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>137</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43946196" lon="11.40111700">
+    <ele>517</ele>
+    <time>2015-10-02T14:13:03Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>190</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43939700" lon="11.40106998">
+    <ele>517</ele>
+    <time>2015-10-02T14:13:05Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>15.000000</gpxtpx:atemp>
+      <gpxtpx:hr>191</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43933699" lon="11.40103000">
+    <ele>517</ele>
+    <time>2015-10-02T14:13:07Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>104</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43928502" lon="11.40099295">
+    <ele>517</ele>
+    <time>2015-10-02T14:13:09Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>15.000000</gpxtpx:atemp>
+      <gpxtpx:hr>112</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43923498" lon="11.40095800">
+    <ele>517</ele>
+    <time>2015-10-02T14:13:11Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>199</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43918000" lon="11.40091693">
+    <ele>517</ele>
+    <time>2015-10-02T14:13:13Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>180</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43912199" lon="11.40085498">
+    <ele>518</ele>
+    <time>2015-10-02T14:13:15Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>152</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43906500" lon="11.40080293">
+    <ele>518</ele>
+    <time>2015-10-02T14:13:17Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>182</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43900297" lon="11.40077494">
+    <ele>518</ele>
+    <time>2015-10-02T14:13:19Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>15.000000</gpxtpx:atemp>
+      <gpxtpx:hr>115</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43894798" lon="11.40075792">
+    <ele>518</ele>
+    <time>2015-10-02T14:13:21Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>116</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43889199" lon="11.40074200">
+    <ele>518</ele>
+    <time>2015-10-02T14:13:23Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>15.000000</gpxtpx:atemp>
+      <gpxtpx:hr>180</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+   <trkpt lat="49.43884296" lon="11.40073496">
+    <ele>518</ele>
+    <time>2015-10-02T14:13:25Z</time>
+    <extensions>
+     <ql:flags>0</ql:flags>
+     <gpxtpx:TrackPointExtension>
+      <gpxtpx:atemp>16.000000</gpxtpx:atemp>
+      <gpxtpx:hr>172</gpxtpx:hr>
+     </gpxtpx:TrackPointExtension>
+    </extensions>
+   </trkpt>
+  </trkseg>
+ </trk>
+ <extensions>
+  <ql:key>737731bbb1294a15d0b19b63a32faa9a</ql:key>
+  <ql:sorting>0</ql:sorting>
+  <ql:correlation>1</ql:correlation>
+ </extensions>
+</gpx>
diff --git a/src/test/input/qtt_gpx_file0.gpx.xml b/src/test/input/qtt_gpx_file0.gpx.xml
new file mode 100644
index 0000000..4ff4300
--- /dev/null
+++ b/src/test/input/qtt_gpx_file0.gpx.xml
@@ -0,0 +1,23 @@
+<expected>
+    <name>QTTest gpx file 0</name>
+    <desc>QTTest gpx input file 0</desc>
+
+    <waypoints></waypoints>
+
+    <tracks>
+        <track name="Track" colorIdx="4" colorName="DarkBlue" segcount="1" pointcount="521">
+            <colorSources>
+                <colorSource name="::ql:slope"                              />
+                <colorSource name="::ql:speed"                              />
+                <colorSource name="::ql:ele"                                />
+                <colorSource name="::ql:progress"                           />
+                <colorSource name="gpxtpx:TrackPointExtension|gpxtpx:hr"    />
+                <colorSource name="gpxtpx:TrackPointExtension|gpxtpx:atemp" />
+            </colorSources>
+        </track>
+    </tracks>
+
+    <routes></routes>
+
+    <areas></areas>
+</expected>
diff --git a/src/test/input/qtt_slf_file0.slf b/src/test/input/qtt_slf_file0.slf
new file mode 100644
index 0000000..adeb5ea
--- /dev/null
+++ b/src/test/input/qtt_slf_file0.slf
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Activity fileDate="Fri Nov 27 11:37:15 GMT+0100 2015" revision="400"><Computer unit="rox100" serial="00000000000" activityType="Cycling" dateCode="Mon Jul 27 09:29:52 GMT+0200 2015"/><GeneralInformation><user color="65280" gender="male"><![CDATA[tester]]></user><sport><![CDATA[mountainbike]]></sport><age>1337</age><GUID>18414AB7-C76E-6520-7FD5-D380A550FE0C</GUID><altitudeDifferencesDownhill>504000</altitudeDifferencesDownhill><altitudeDifferencesUphill>473000</altitudeDifferencesUphill> [...]
diff --git a/src/test/input/qtt_slf_file0.slf.xml b/src/test/input/qtt_slf_file0.slf.xml
new file mode 100644
index 0000000..c976fe7
--- /dev/null
+++ b/src/test/input/qtt_slf_file0.slf.xml
@@ -0,0 +1,27 @@
+<expected>
+    <name>qttest slf file 0</name>
+    <desc>QTTest .slf input file 0</desc>
+
+    <waypoints>
+        <waypoint name="Break 0" />
+        <waypoint name="Break 1" />
+        <waypoint name="Lap 0"   />
+    </waypoints>
+
+    <tracks>
+        <track name="[no name]" colorIdx="4" colorName="DarkBlue" segcount="2" pointcount="2764">
+            <colorSources>
+                <colorSource name="::ql:slope"                              />
+                <colorSource name="::ql:speed"                              />
+                <colorSource name="::ql:ele"                                />
+                <colorSource name="::ql:progress"                           />
+                <colorSource name="speed"                                   />
+                <colorSource name="gpxtpx:TrackPointExtension|gpxtpx:atemp" />
+            </colorSources>
+        </track>
+    </tracks>
+
+    <routes></routes>
+
+    <areas></areas>
+</expected>
diff --git a/src/test/input/randomize_hr.awk b/src/test/input/randomize_hr.awk
new file mode 100644
index 0000000..2bdb6aa
--- /dev/null
+++ b/src/test/input/randomize_hr.awk
@@ -0,0 +1,27 @@
+#!/bin/gawk -f
+
+function randint(start, end)
+{
+    return start + int((end - start) * rand())
+}
+
+function randfloat(start, end)
+{
+    return start + ((end - start) * rand())
+}
+
+// {
+	matched=0;
+}
+
+match($0, /^(\s*)<gpxtpx:hr>([0-9]+(\.[0-9]+)?)<\/gpxtpx:hr>\s*$/, ary) {
+	print ary[1] "<gpxtpx:hr>" randint(100, 200) "</gpxtpx:hr>";
+	matched=1;
+}
+
+// {
+	if(0 == matched)
+	{
+		print $0;
+	}
+}
diff --git a/src/test/main.cpp b/src/test/main.cpp
new file mode 100644
index 0000000..8807b1a
--- /dev/null
+++ b/src/test/main.cpp
@@ -0,0 +1,200 @@
+/**********************************************************************************************
+    Copyright (C) 2015 Christian Eichler code at christian-eichler.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include <QDebug>
+#include <QTemporaryFile>
+
+#include "test/test_QMapShack.h"
+
+#include "helpers/CAppSetup.h"
+#include "helpers/CCommandProcessor.h"
+#include "helpers/CSettings.h"
+#include "units/IUnit.h"
+
+#include "gis/trk/CKnownExtension.h"
+
+#include "gis/prj/IGisProject.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/wpt/CGisItemWpt.h"
+
+struct expectedWaypoint
+{
+    QString name;
+};
+
+struct expectedTrack
+{
+    QString name;
+    int colorIdx;
+    int segCount;
+    int ptCount;
+    QStringList colorSources;
+};
+
+CAppOpts *qlOpts;
+QString testInput;
+
+void test_QMapShack::initTestCase()
+{
+    CCommandProcessor cmdParse;
+    qlOpts = cmdParse.processOptions(QStringList(""));
+
+    SETTINGS;
+    IUnit::self().setUnitType((IUnit::type_e)cfg.value("MainWindow/units",IUnit::eTypeMetric).toInt(), this);
+    CKnownExtension::init(IUnit::self());
+
+    testInput = QCoreApplication::applicationDirPath() + "/input/";
+}
+
+QString test_QMapShack::getAttribute(const QDomNode &node, const QString &name)
+{
+    const QDomNamedNodeMap &attrs = node.attributes();
+    if(!attrs.contains(name))
+    {
+        QWARN( QString("Attribute `%1` does not exist in DomNode `%2`").arg(name).arg(node.nodeName()).toStdString().c_str() );
+        return QString();
+    }
+
+    return attrs.namedItem(name).nodeValue();
+}
+
+void test_QMapShack::verify(const QString &expectFile, const IGisProject &proj)
+{
+    QFile file(expectFile);
+
+    QDomDocument xml;
+    QString msg;
+    int line;
+    int column;
+    SUBVERIFY(xml.setContent(&file, false, &msg, &line, &column), QString("[%1:%2] %3").arg(expectFile).arg(line).arg(msg));
+
+    const QDomNode &exp = xml.namedItem("expected");
+
+    const QString &expName = exp.namedItem("name").firstChild().nodeValue();
+    const QString &expDesc = exp.namedItem("desc").firstChild().nodeValue();
+
+    QHash<QString, expectedWaypoint> expWpts;
+    const QDomNodeList &wptList = exp.namedItem("waypoints").childNodes();
+    for(int i = 0; i < wptList.length(); i++)
+    {
+        const QDomNode &node = wptList.item(i);
+
+        expectedWaypoint wpt;
+        wpt.name = node.attributes().namedItem("name").nodeValue();
+
+        expWpts.insert(wpt.name, wpt);
+    }
+
+    QHash<QString, expectedTrack> expTrks;
+    const QDomNodeList &trkList = exp.namedItem("tracks").childNodes();
+    for(int i = 0; i < trkList.length(); i++)
+    {
+        const QDomNode &node = trkList.item(i);
+
+        expectedTrack trk;
+        trk.name     = getAttribute(node, "name");
+        trk.segCount = getAttribute(node, "segcount"  ).toInt();
+        trk.ptCount  = getAttribute(node, "pointcount").toInt();
+        trk.colorIdx = getAttribute(node, "colorIdx"  ).toInt();
+
+        QStringList colorSources;
+        const QDomNodeList &extList = node.namedItem("colorSources").childNodes();
+        for(int j = 0; j < extList.length(); j++)
+        {
+            colorSources << getAttribute(extList.item(j), "name");
+        }
+        colorSources.sort();
+        trk.colorSources = colorSources;
+
+        expTrks.insert(trk.name, trk);
+    }
+
+    //const QDomNodeList &expRtes = exp.namedItem("routes"   ).childNodes(); TODO
+    //const QDomNodeList &expOvls = exp.namedItem("areas"    ).childNodes(); TODO
+
+
+    VERIFY_EQUAL(true,  proj.isValid());
+    VERIFY_EQUAL(false, proj.isChanged());
+
+    VERIFY_EQUAL(expName, proj.getName());
+    VERIFY_EQUAL(expDesc, proj.getDescription());
+
+    VERIFY_EQUAL(expWpts.count(), proj.getItemCountByType(IGisItem::eTypeWpt));
+    VERIFY_EQUAL(expTrks.count(), proj.getItemCountByType(IGisItem::eTypeTrk));
+    VERIFY_EQUAL(0, proj.getItemCountByType(IGisItem::eTypeRte)); // TODO
+    VERIFY_EQUAL(0, proj.getItemCountByType(IGisItem::eTypeOvl)); // TODO
+
+    for(int i = 0; i < proj.childCount(); i++)
+    {
+        IGisItem *item = dynamic_cast<IGisItem*>(proj.child(i));
+
+        CGisItemWpt *wpt = dynamic_cast<CGisItemWpt*>(item);
+        if(nullptr != wpt)
+        {
+            VERIFY_EQUAL(true, expWpts.contains(wpt->getName()));
+            expWpts.remove(wpt->getName());
+
+            SUBVERIFY(wpt->getPosition() != QPointF(0., 0.), "Waypoint has position 0/0");
+        }
+
+        CGisItemTrk *itemTrk = dynamic_cast<CGisItemTrk*>(item);
+        if(nullptr != itemTrk)
+        {
+            const CGisItemTrk::trk_t &trk = itemTrk->getTrackData();
+
+            SUBVERIFY(expTrks.contains(itemTrk->getName()), QString("Found track `%1`, there shouldn't be any track with that name").arg(itemTrk->getName()));
+
+            const expectedTrack &expTrk = expTrks.take(itemTrk->getName());
+
+            int trkptCount = 0;
+            foreach(const CGisItemTrk::trkseg_t &seg, trk.segs)
+            {
+                trkptCount += seg.pts.count();
+
+                foreach(const CGisItemTrk::trkpt_t &trkpt, seg.pts)
+                {
+                    SUBVERIFY((0. != trkpt.lat) || (0. != trkpt.lon), "Trackpoint has position 0/0");
+                }
+            }
+
+            VERIFY_EQUAL(expTrk.segCount, trk.segs.count());
+            VERIFY_EQUAL(expTrk.ptCount,  trkptCount);
+            VERIFY_EQUAL(expTrk.colorIdx, itemTrk->getColorIdx());
+
+            QStringList existingSources = itemTrk->getExistingDataSources();
+            existingSources.sort();
+            SUBVERIFY(expTrk.colorSources == existingSources, "Expected and existing list of colorSources do not match");
+        }
+    }
+
+    // ensure all expected waypoints/tracks actually exist
+    SUBVERIFY(expWpts.isEmpty(), "Not all expected waypoints found");
+    SUBVERIFY(expTrks.isEmpty(), "Not all expected tracks found");
+}
+
+QString test_QMapShack::getTempFileName(const QString &ext)
+{
+    QTemporaryFile tmp("qtt_XXXXXX." + ext);
+    tmp.open();
+    QString tempFile = tmp.fileName();
+    tmp.remove();
+
+    return tempFile;
+}
+
+QTEST_MAIN(test_QMapShack)
diff --git a/src/test/test_QMapShack.h b/src/test/test_QMapShack.h
new file mode 100644
index 0000000..1ca1c64
--- /dev/null
+++ b/src/test/test_QMapShack.h
@@ -0,0 +1,61 @@
+/**********************************************************************************************
+    Copyright (C) 2015 Christian Eichler code at christian-eichler.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include <QTest>
+class IGisProject;
+class QDomNode;
+
+extern QString testInput;
+
+#define SUBVERIFY(EXPR, MSG) \
+    { if(!(EXPR)) { throw QString("Verification of `%1` failed: %2").arg(#EXPR).arg(MSG); } \
+    }
+
+#define VERIFY_EQUAL(EXP, ACT) \
+    SUBVERIFY( (EXP == ACT), QTest::toString(QString("Expected `%1`, got `%2`").arg(EXP).arg(ACT)) );
+
+#define TCWRAPPER( CALL ) { try { CALL; } catch(QString &error) { QFAIL(error.toStdString().c_str()); } \
+}
+
+class test_QMapShack : public QObject
+{
+    Q_OBJECT
+
+    QString testInput;
+
+    void verify(const QString &expectFile, const IGisProject &proj);
+
+
+    /// helper functions
+    QString getAttribute(const QDomNode &node, const QString &name);
+    QString getTempFileName(const QString &ext);
+
+    /// CSlfReader
+    void readValidSLFFile();
+    void readNonExistingSLFFile();
+
+    // CGpxProject
+    void readWriteGPXFile();
+
+private slots:
+    void initTestCase();
+
+    void _readValidSLFFile()       { TCWRAPPER( readValidSLFFile()       ) }
+    void _readNonExistingSLFFile() { TCWRAPPER( readNonExistingSLFFile() ) }
+    void _readWriteGPXFile()       { TCWRAPPER( readWriteGPXFile()       ) }
+};
diff --git a/src/tool/CImportDatabase.cpp b/src/tool/CImportDatabase.cpp
index 0e83300..7aab95d 100644
--- a/src/tool/CImportDatabase.cpp
+++ b/src/tool/CImportDatabase.cpp
@@ -35,9 +35,9 @@ CImportDatabase::CImportDatabase(QWidget *parent)
 
     textBrowser->setFont(QFont("Courier",10));
 
-    connect(toolSelectSource, SIGNAL(clicked()), this, SLOT(slotSelectSource()));
-    connect(toolSelectTarget, SIGNAL(clicked()), this, SLOT(slotSelectTarget()));
-    connect(pushStart,        SIGNAL(clicked()), this, SLOT(slotStart()));
+    connect(toolSelectSource, &QToolButton::clicked, this, &CImportDatabase::slotSelectSource);
+    connect(toolSelectTarget, &QToolButton::clicked, this, &CImportDatabase::slotSelectTarget);
+    connect(pushStart,        &QPushButton::clicked, this, &CImportDatabase::slotStart);
 
     pushStart->setEnabled(false);
     if(QFile::exists(labelSource->text()))
@@ -93,7 +93,7 @@ void CImportDatabase::slotSelectSource()
 void CImportDatabase::slotSelectTarget()
 {
     SETTINGS;
-    QString path = cfg.value("Path/target",QDir::homePath()).toString();
+    QString path = cfg.value("ConvertDB/targetPath",QDir::homePath()).toString();
     QString filename = QFileDialog::getSaveFileName(this, tr("Select target database..."), path, "QMapShack Database (*.db)");
     if(filename.isEmpty())
     {
@@ -101,7 +101,7 @@ void CImportDatabase::slotSelectTarget()
     }
 
     QFileInfo fi(filename);
-    cfg.setValue("Path/target", fi.absolutePath());
+    cfg.setValue("ConvertDB/targetPath", fi.absolutePath());
     if(fi.suffix().toLower() != "db")
     {
         filename += ".db";
diff --git a/src/tool/CImportDatabase.h b/src/tool/CImportDatabase.h
index 72b034f..185b3f4 100644
--- a/src/tool/CImportDatabase.h
+++ b/src/tool/CImportDatabase.h
@@ -40,7 +40,6 @@ private slots:
     void slotSelectTarget();
     void slotStart();
 
-
 private:
     QPointer<CQlgtDb> dbQlgt;
 };
diff --git a/src/tool/CMapVrtBuilder.cpp b/src/tool/CMapVrtBuilder.cpp
index 599e59f..dc473ad 100644
--- a/src/tool/CMapVrtBuilder.cpp
+++ b/src/tool/CMapVrtBuilder.cpp
@@ -27,9 +27,9 @@ CMapVrtBuilder::CMapVrtBuilder(QWidget *parent)
     setupUi(this);
     setObjectName(tr("Build GDAL VRT"));
 
-    connect(toolSourceFiles, SIGNAL(clicked()), this, SLOT(slotSelectSourceFiles()));
-    connect(toolTargetFile, SIGNAL(clicked()), this, SLOT(slotSelectTargetFile()));
-    connect(pushStart, SIGNAL(clicked()), this, SLOT(slotStart()));
+    connect(toolSourceFiles, &QToolButton::clicked, this, &CMapVrtBuilder::slotSelectSourceFiles);
+    connect(toolTargetFile,  &QToolButton::clicked, this, &CMapVrtBuilder::slotSelectTargetFile);
+    connect(pushStart,       &QPushButton::clicked, this, &CMapVrtBuilder::slotStart);
 
     pushStart->setDisabled(true);
 }
diff --git a/src/tool/CMapVrtBuilder.h b/src/tool/CMapVrtBuilder.h
index 5a75e5c..c1ca12d 100644
--- a/src/tool/CMapVrtBuilder.h
+++ b/src/tool/CMapVrtBuilder.h
@@ -36,7 +36,7 @@ private slots:
     void slotStart();
 
 private:
-    void finished(int exitCode, QProcess::ExitStatus status);
+    void finished(int exitCode, QProcess::ExitStatus status) override;
     void enableStartButton();
 };
 
diff --git a/src/tool/CRoutinoDatabaseBuilder.cpp b/src/tool/CRoutinoDatabaseBuilder.cpp
index 12a7595..78184cd 100644
--- a/src/tool/CRoutinoDatabaseBuilder.cpp
+++ b/src/tool/CRoutinoDatabaseBuilder.cpp
@@ -31,10 +31,10 @@ CRoutinoDatabaseBuilder::CRoutinoDatabaseBuilder(QWidget * parent)
 
     setObjectName(tr("Create Routino Database"));
 
-    connect(toolSourceFiles, SIGNAL(clicked()), this, SLOT(slotSelectSourceFiles()));
-    connect(toolTargetPath, SIGNAL(clicked()), this, SLOT(slotSelectTargetPath()));
-    connect(pushStart, SIGNAL(clicked()), this, SLOT(slotStart()));
-    connect(lineTargetPrefix, SIGNAL(textChanged(QString)), this, SLOT(enabelStartButton()));
+    connect(toolSourceFiles,  &QToolButton::clicked,   this, &CRoutinoDatabaseBuilder::slotSelectSourceFiles);
+    connect(toolTargetPath,   &QToolButton::clicked,   this, &CRoutinoDatabaseBuilder::slotSelectTargetPath);
+    connect(pushStart,        &QPushButton::clicked,   this, &CRoutinoDatabaseBuilder::slotStart);
+    connect(lineTargetPrefix, &QLineEdit::textChanged, this, &CRoutinoDatabaseBuilder::enabelStartButton);
 
     pushStart->setDisabled(true);
 
diff --git a/src/tool/CRoutinoDatabaseBuilder.h b/src/tool/CRoutinoDatabaseBuilder.h
index 6b8433e..eacff5e 100644
--- a/src/tool/CRoutinoDatabaseBuilder.h
+++ b/src/tool/CRoutinoDatabaseBuilder.h
@@ -39,7 +39,7 @@ private slots:
     void enabelStartButton();
 
 private:
-    void finished(int exitCode, QProcess::ExitStatus status);
+    void finished(int exitCode, QProcess::ExitStatus status) override;
 
     bool first = false;
     bool tainted = false;
diff --git a/src/tool/IToolShell.cpp b/src/tool/IToolShell.cpp
index 50f1ac6..0959d71 100644
--- a/src/tool/IToolShell.cpp
+++ b/src/tool/IToolShell.cpp
@@ -24,10 +24,11 @@ IToolShell::IToolShell(QTextBrowser *&textBrowser, QWidget * parent)
     : QWidget(parent)
     , text(textBrowser)
 {
-    connect(&cmd, SIGNAL(readyReadStandardError()),            this, SLOT(slotStderr()));
-    connect(&cmd, SIGNAL(readyReadStandardOutput()),           this, SLOT(slotStdout()));
-    connect(&cmd, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(slotFinished(int, QProcess::ExitStatus)));
-    connect(&cmd, SIGNAL(error(QProcess::ProcessError)),       this, SLOT(slotError(QProcess::ProcessError)));
+    connect(&cmd, &QProcess::readyReadStandardError,  this, &IToolShell::slotStderr);
+    connect(&cmd, &QProcess::readyReadStandardOutput, this, &IToolShell::slotStdout);
+
+    connect(&cmd, static_cast<void (QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished), this, &IToolShell::slotFinished);
+    connect(&cmd, static_cast<void (QProcess::*)(QProcess::ProcessError)   >(&QProcess::error),    this, &IToolShell::slotError);
 }
 
 IToolShell::~IToolShell()
diff --git a/src/units/CCoordFormatSetup.h b/src/units/CCoordFormatSetup.h
index 3e37468..0510ae2 100644
--- a/src/units/CCoordFormatSetup.h
+++ b/src/units/CCoordFormatSetup.h
@@ -30,7 +30,7 @@ public:
     virtual ~CCoordFormatSetup();
 
 public slots:
-    void accept();
+    void accept() override;
 };
 
 #endif //CCOORDFORMATSETUP_H
diff --git a/src/units/CTimeZoneSetup.h b/src/units/CTimeZoneSetup.h
index 9f0e716..aa06ad8 100644
--- a/src/units/CTimeZoneSetup.h
+++ b/src/units/CTimeZoneSetup.h
@@ -29,7 +29,7 @@ public:
     virtual ~CTimeZoneSetup();
 
 public slots:
-    void accept();
+    void accept() override;
 };
 
 #endif //CTIMEZONESETUP_H
diff --git a/src/units/CUnitImperial.cpp b/src/units/CUnitImperial.cpp
index fa4eec6..b69f167 100644
--- a/src/units/CUnitImperial.cpp
+++ b/src/units/CUnitImperial.cpp
@@ -30,7 +30,7 @@ CUnitImperial::~CUnitImperial()
 }
 
 
-void CUnitImperial::meter2elevation(qreal meter, QString& val, QString& unit)
+void CUnitImperial::meter2elevation(qreal meter, QString& val, QString& unit) const /* override */
 {
     if(meter == NOFLOAT)
     {
@@ -45,7 +45,7 @@ void CUnitImperial::meter2elevation(qreal meter, QString& val, QString& unit)
 }
 
 
-void CUnitImperial::meter2distance(qreal meter, QString& val, QString& unit)
+void CUnitImperial::meter2distance(qreal meter, QString& val, QString& unit) const /* override */
 {
     if(meter == NOFLOAT)
     {
@@ -79,7 +79,7 @@ void CUnitImperial::meter2distance(qreal meter, QString& val, QString& unit)
     }
 }
 
-void CUnitImperial::meter2area(qreal meter, QString& val, QString& unit)
+void CUnitImperial::meter2area(qreal meter, QString& val, QString& unit) const /* override */
 {
     if(meter == NOFLOAT)
     {
@@ -95,7 +95,7 @@ void CUnitImperial::meter2area(qreal meter, QString& val, QString& unit)
 
 
 
-qreal CUnitImperial::elevation2meter(const QString& val)
+qreal CUnitImperial::elevation2meter(const QString& val) const /* override */
 {
     return val.toDouble() / 3.28084;
 }
diff --git a/src/units/CUnitImperial.h b/src/units/CUnitImperial.h
index 5907f6d..ff9c252 100644
--- a/src/units/CUnitImperial.h
+++ b/src/units/CUnitImperial.h
@@ -23,14 +23,15 @@
 
 class CUnitImperial : public IUnit
 {
-    Q_OBJECT;
+    Q_OBJECT
 public:
     CUnitImperial(QObject * parent);
     virtual ~CUnitImperial();
 
-    void meter2elevation(qreal meter, QString& val, QString& unit);
-    void meter2distance(qreal meter, QString& val, QString& unit);
-    void meter2area(qreal meter, QString& val, QString& unit);
-    qreal elevation2meter(const QString& val);
+    void meter2elevation(qreal meter, QString& val, QString& unit) const override;
+    void meter2distance(qreal meter, QString& val, QString& unit) const override;
+    void meter2area(qreal meter, QString& val, QString& unit) const override;
+
+    qreal elevation2meter(const QString& val) const override;
 };
-#endif                           //CUNITIMPERIAL_H
+#endif //CUNITIMPERIAL_H
diff --git a/src/units/CUnitMetric.cpp b/src/units/CUnitMetric.cpp
index fd714e1..b5a92a4 100644
--- a/src/units/CUnitMetric.cpp
+++ b/src/units/CUnitMetric.cpp
@@ -29,7 +29,7 @@ CUnitMetric::~CUnitMetric()
 }
 
 
-void CUnitMetric::meter2elevation(qreal meter, QString& val, QString& unit)
+void CUnitMetric::meter2elevation(qreal meter, QString& val, QString& unit) const /* override */
 {
     if(meter == NOFLOAT || meter == NOINT)
     {
@@ -44,7 +44,7 @@ void CUnitMetric::meter2elevation(qreal meter, QString& val, QString& unit)
 }
 
 
-void CUnitMetric::meter2distance(qreal meter, QString& val, QString& unit)
+void CUnitMetric::meter2distance(qreal meter, QString& val, QString& unit) const /* override */
 {
     if(meter == NOFLOAT)
     {
@@ -79,7 +79,7 @@ void CUnitMetric::meter2distance(qreal meter, QString& val, QString& unit)
 }
 
 
-void CUnitMetric::meter2speed(qreal meter, QString& val, QString& unit)
+void CUnitMetric::meter2speed(qreal meter, QString& val, QString& unit) const /* override */
 {
     if(meter == NOFLOAT)
     {
@@ -103,7 +103,7 @@ void CUnitMetric::meter2speed(qreal meter, QString& val, QString& unit)
     }
 }
 
-void CUnitMetric::meter2area(qreal meter, QString& val, QString& unit)
+void CUnitMetric::meter2area(qreal meter, QString& val, QString& unit) const /* override */
 {
     if(meter == NOFLOAT)
     {
@@ -117,7 +117,7 @@ void CUnitMetric::meter2area(qreal meter, QString& val, QString& unit)
     }
 }
 
-qreal CUnitMetric::elevation2meter(const QString& val)
+qreal CUnitMetric::elevation2meter(const QString& val) const /* override */
 {
     return val.toDouble();
 }
diff --git a/src/units/CUnitMetric.h b/src/units/CUnitMetric.h
index 669ac2a..960ff5e 100644
--- a/src/units/CUnitMetric.h
+++ b/src/units/CUnitMetric.h
@@ -23,15 +23,16 @@
 
 class CUnitMetric : public IUnit
 {
-    Q_OBJECT;
+    Q_OBJECT
 public:
     CUnitMetric(QObject * parent);
     virtual ~CUnitMetric();
 
-    void meter2elevation(qreal meter, QString& val, QString& unit);
-    void meter2distance(qreal meter, QString& val, QString& unit);
-    void meter2speed(qreal meter, QString& val, QString& unit);
-    void meter2area(qreal meter, QString& val, QString& unit);
-    qreal elevation2meter(const QString& val);
+    void meter2elevation(qreal meter, QString& val, QString& unit) const override;
+    void meter2distance(qreal meter, QString& val, QString& unit) const override;
+    void meter2speed(qreal meter, QString& val, QString& unit) const override;
+    void meter2area(qreal meter, QString& val, QString& unit) const override;
+
+    qreal elevation2meter(const QString& val) const override;
 };
 #endif                           //CUNITMETRIC_H
diff --git a/src/units/CUnitNautic.cpp b/src/units/CUnitNautic.cpp
index fedd4a7..8718577 100644
--- a/src/units/CUnitNautic.cpp
+++ b/src/units/CUnitNautic.cpp
@@ -30,7 +30,7 @@ CUnitNautic::~CUnitNautic()
 }
 
 
-void CUnitNautic::meter2elevation(qreal meter, QString& val, QString& unit)
+void CUnitNautic::meter2elevation(qreal meter, QString& val, QString& unit) const /* override */
 {
     if(meter == NOFLOAT)
     {
@@ -45,7 +45,7 @@ void CUnitNautic::meter2elevation(qreal meter, QString& val, QString& unit)
 }
 
 
-void CUnitNautic::meter2distance(qreal meter, QString& val, QString& unit)
+void CUnitNautic::meter2distance(qreal meter, QString& val, QString& unit) const /* override */
 {
     if(meter == NOFLOAT)
     {
@@ -60,7 +60,7 @@ void CUnitNautic::meter2distance(qreal meter, QString& val, QString& unit)
 }
 
 
-void CUnitNautic::meter2speed(qreal meter, QString& val, QString& unit)
+void CUnitNautic::meter2speed(qreal meter, QString& val, QString& unit) const /* override */
 {
     if(meter == NOFLOAT)
     {
@@ -74,7 +74,7 @@ void CUnitNautic::meter2speed(qreal meter, QString& val, QString& unit)
     }
 }
 
-void CUnitNautic::meter2area(qreal meter, QString& val, QString& unit)
+void CUnitNautic::meter2area(qreal meter, QString& val, QString& unit) const /* override */
 {
     if(meter == NOFLOAT)
     {
@@ -89,7 +89,7 @@ void CUnitNautic::meter2area(qreal meter, QString& val, QString& unit)
 }
 
 
-qreal CUnitNautic::elevation2meter(const QString& val)
+qreal CUnitNautic::elevation2meter(const QString& val) const /* override */
 {
     return val.toDouble();
 }
diff --git a/src/units/CUnitNautic.h b/src/units/CUnitNautic.h
index ff64213..bfe8886 100644
--- a/src/units/CUnitNautic.h
+++ b/src/units/CUnitNautic.h
@@ -16,7 +16,6 @@
     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
 
 **********************************************************************************************/
-
 #ifndef CUNITNAUTIC_H
 #define CUNITNAUTIC_H
 
@@ -24,15 +23,16 @@
 
 class CUnitNautic : public IUnit
 {
-    Q_OBJECT;
+    Q_OBJECT
 public:
     CUnitNautic(QObject * parent);
     virtual ~CUnitNautic();
 
-    void meter2elevation(qreal meter, QString& val, QString& unit);
-    void meter2distance(qreal meter, QString& val, QString& unit);
-    void meter2speed(qreal meter, QString& val, QString& unit);
-    void meter2area(qreal meter, QString& val, QString& unit);
-    qreal elevation2meter(const QString& val);
+    void meter2elevation(qreal meter, QString& val, QString& unit) const override;
+    void meter2distance(qreal meter, QString& val, QString& unit) const override;
+    void meter2speed(qreal meter, QString& val, QString& unit) const override;
+    void meter2area(qreal meter, QString& val, QString& unit) const override;
+
+    qreal elevation2meter(const QString& val) const override;
 };
-#endif                           //CUNITNAUTIC_H
+#endif //CUNITNAUTIC_H
diff --git a/src/units/CUnitsSetup.h b/src/units/CUnitsSetup.h
index b4dcfc2..615a4cb 100644
--- a/src/units/CUnitsSetup.h
+++ b/src/units/CUnitsSetup.h
@@ -15,7 +15,6 @@
     along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 **********************************************************************************************/
-
 #ifndef CUNITSSETUP_H
 #define CUNITSSETUP_H
 
@@ -29,7 +28,7 @@ public:
     virtual ~CUnitsSetup();
 
 public slots:
-    void accept();
+    void accept() override;
 };
 
 #endif //CUNITSSETUP_H
diff --git a/src/units/IUnit.cpp b/src/units/IUnit.cpp
index 561ecf4..21d9d81 100644
--- a/src/units/IUnit.cpp
+++ b/src/units/IUnit.cpp
@@ -24,7 +24,7 @@
 
 #include <QtWidgets>
 #include <proj_api.h>
-IUnit * IUnit::m_self = 0;
+IUnit * IUnit::m_self = nullptr;
 
 const QPointF NOPOINTF(NOFLOAT, NOFLOAT);
 const QPoint NOPOINT (NOINT, NOINT);
@@ -473,13 +473,13 @@ void IUnit::setUnitType(type_e t, QObject * parent)
     cfg.setValue("Units/type",t);
 }
 
-void IUnit::meter2speed(qreal meter, QString& val, QString& unit)
+void IUnit::meter2speed(qreal meter, QString& val, QString& unit) const
 {
     val.sprintf("%2.2f",meter * speedfactor);
     unit = speedunit;
 }
 
-void IUnit::seconds2time(quint32 ttime, QString& val, QString& unit)
+void IUnit::seconds2time(quint32 ttime, QString& val, QString& unit) const
 {
     QTime time(0,0,0);
     quint32 days  = ttime / 86400;
@@ -503,13 +503,7 @@ bool IUnit::parseTimestamp(const QString &time, QDateTime &datetime)
     int tzoffset;
     datetime = parseTimestamp(time, tzoffset);
 
-    if (!datetime.isValid())
-    {
-        return false;
-    }
-
-
-    return true;
+    return datetime.isValid();
 }
 
 
@@ -570,7 +564,6 @@ QDateTime IUnit::parseTimestamp(const QString &timetext, int& tzoffset)
     QDateTime datetime = QDateTime::fromString(timetext, format);
     datetime.setOffsetFromUtc(tzoffset);
 
-
     return datetime;
 }
 
@@ -617,7 +610,7 @@ QByteArray IUnit::pos2timezone(const QPointF& pos)
         return "UTC";
     }
 
-    int tz   = ((qRed(rgb) & 248) << 1) + ((qGreen(rgb) >> 4) & 15);
+    int tz = ((qRed(rgb) & 248) << 1) + ((qGreen(rgb) >> 4) & 15);
     if(tz >= N_TIMEZONES)
     {
         return 0;
@@ -638,9 +631,8 @@ void IUnit::degToStr(const qreal& x, const qreal& y, QString& str)
         bool signLat = GPS_Math_Deg_To_DegMin(y, &degN, &minN);
         bool signLon = GPS_Math_Deg_To_DegMin(x, &degE, &minE);
 
-        QString lat,lng;
-        lat = signLat ? "S" : "N";
-        lng = signLon ? "W" : "E";
+        const QString &lat = signLat ? "S" : "N";
+        const QString &lng = signLon ? "W" : "E";
         str.sprintf("%s%02d° %06.3f %s%03d° %06.3f",lat.toUtf8().data(),qAbs(degN),minN,lng.toUtf8().data(),qAbs(degE),minE);
         break;
     }
@@ -650,9 +642,8 @@ void IUnit::degToStr(const qreal& x, const qreal& y, QString& str)
         bool signLat = y < 0;
         bool signLon = x < 0;
 
-        QString lat,lng;
-        lat = signLat ? "S" : "N";
-        lng = signLon ? "W" : "E";
+        const QString &lat = signLat ? "S" : "N";
+        const QString &lng = signLon ? "W" : "E";
         str.sprintf("%s%02.6f° %s%03.6f°",lat.toUtf8().data(),qAbs(y),lng.toUtf8().data(),qAbs(x));
         break;
     }
@@ -668,9 +659,8 @@ void IUnit::degToStr(const qreal& x, const qreal& y, QString& str)
         qreal secN = (minN - qFloor(minN)) * 60;
         qreal secE = (minE - qFloor(minE)) * 60;
 
-        QString lat,lng;
-        lat = signLat ? "S" : "N";
-        lng = signLon ? "W" : "E";
+        const QString &lat = signLat ? "S" : "N";
+        const QString &lng = signLon ? "W" : "E";
         str.sprintf("%s%02d° %02d' %02.2f'' %s%03d° %02d' %02.2f''",lat.toUtf8().data(),qAbs(degN),qFloor(minN),secN,lng.toUtf8().data(),qAbs(degE),qFloor(minE),secE);
         break;
     }
@@ -742,13 +732,13 @@ bool IUnit::strToDeg(const QString& str, qreal& lon, qreal& lat)
     }
     else
     {
-        QMessageBox::warning(CMainWindow::getBestWidgetForParent(),QObject::tr("Error"),QObject::tr("Bad position format. Must be: \"[N|S] ddd mm.sss [W|E] ddd mm.sss\" or \"[N|S] ddd.ddd [W|E] ddd.ddd\""),QMessageBox::Ok,QMessageBox::NoButton);
+        QMessageBox::warning(CMainWindow::getBestWidgetForParent(),tr("Error"),tr("Bad position format. Must be: \"[N|S] ddd mm.sss [W|E] ddd mm.sss\" or \"[N|S] ddd.ddd [W|E] ddd.ddd\""),QMessageBox::Ok,QMessageBox::NoButton);
         return false;
     }
 
     if(fabs(lon) > 180.0 || fabs(lat) > 90.0)
     {
-        QMessageBox::warning(CMainWindow::getBestWidgetForParent(),QObject::tr("Error"),QObject::tr("Position values out of bounds. "),QMessageBox::Ok,QMessageBox::NoButton);
+        QMessageBox::warning(CMainWindow::getBestWidgetForParent(),tr("Error"),tr("Position values out of bounds. "),QMessageBox::Ok,QMessageBox::NoButton);
         return false;
     }
 
diff --git a/src/units/IUnit.h b/src/units/IUnit.h
index 67441c6..382f534 100644
--- a/src/units/IUnit.h
+++ b/src/units/IUnit.h
@@ -40,19 +40,20 @@ public:
     {
         return *m_self;
     }
+
     /// convert meter of elevation into a value and unit string
-    virtual void meter2elevation(qreal meter, QString& val, QString& unit) = 0;
+    virtual void meter2elevation(qreal meter, QString& val, QString& unit) const = 0;
     /// convert meter of distance into a value and unit string
-    virtual void meter2distance(qreal meter, QString& val, QString& unit) = 0;
+    virtual void meter2distance(qreal meter, QString& val, QString& unit) const = 0;
     /// convert meter per second to a speed value string and unit label
-    virtual void meter2speed(qreal meter, QString& val, QString& unit);
+    virtual void meter2speed(qreal meter, QString& val, QString& unit) const;
     /// convert square meter to string and unit label
-    virtual void meter2area(qreal meter, QString& val, QString& unit) = 0;
+    virtual void meter2area(qreal meter, QString& val, QString& unit) const = 0;
     /// convert seconds to a timespan of days, hours, minutes and seconds
-    virtual void seconds2time(quint32 ttime, QString& val, QString& unit);
+    virtual void seconds2time(quint32 ttime, QString& val, QString& unit) const;
 
     /// convert an elevation string to a float
-    virtual qreal elevation2meter(const QString& val) = 0;
+    virtual qreal elevation2meter(const QString& val) const = 0;
 
 
     enum type_e {eTypeMetric, eTypeImperial, eTypeNautic};
@@ -81,7 +82,7 @@ public:
     const qreal basefactor;
     const QString speedunit;
     const qreal speedfactor;
-    static const char *  tblTimezone[];
+    static const char *tblTimezone[];
 
     enum tz_mode_e
     {
@@ -93,14 +94,15 @@ public:
 
     static void getTimeZoneSetup(tz_mode_e& mode, QByteArray& zone, bool& format)
     {
-        mode = timeZoneMode;
-        zone = timeZone;
+        mode   = timeZoneMode;
+        zone   = timeZone;
         format = useShortFormat;
     }
+
     static void setTimeZoneSetup(tz_mode_e mode, const QByteArray& zone, bool format)
     {
-        timeZoneMode = mode;
-        timeZone = zone;
+        timeZoneMode   = mode;
+        timeZone       = zone;
         useShortFormat = format;
     }
 
@@ -148,4 +150,4 @@ protected:
 private:
     static IUnit * m_self;
 };
-#endif                           //IUNIT_H
+#endif //IUNIT_H
diff --git a/src/widgets/CColorChooser.cpp b/src/widgets/CColorChooser.cpp
new file mode 100644
index 0000000..7619e7f
--- /dev/null
+++ b/src/widgets/CColorChooser.cpp
@@ -0,0 +1,64 @@
+/**********************************************************************************************
+    Copyright (C) 2016 Oliver Eichler oliver.eichler at gmx.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "gis/IGisItem.h"
+#include "widgets/CColorChooser.h"
+
+#include <QtWidgets>
+#include <functional>
+
+using std::bind;
+
+CColorChooser::CColorChooser(QToolButton *parent)
+    : QDialog(parent)
+    , parentButton(parent)
+{
+    setupUi(this);
+    setWindowFlags(Qt::ToolTip);
+
+    for(quint32 i = 0; i < IGisItem::colorMapSize; i++)
+    {
+        QPixmap pixmap(16,16);
+        pixmap.fill(IGisItem::colorMap[i].color);
+
+        QToolButton * button = new QToolButton(this);
+        button->setToolButtonStyle(Qt::ToolButtonIconOnly);
+        button->setAutoRaise(true);
+        button->setIcon(QIcon(pixmap));
+        button->setProperty("color", IGisItem::colorMap[i].color.name());
+        horizontalLayout->addWidget(button);
+
+        auto selectFunc = bind(&CColorChooser::slotSelect, this, button);
+        connect(button, &QToolButton::clicked, this, selectFunc);
+    }
+
+    QToolButton * butEsc = new QToolButton(this);
+    butEsc->setText(tr("Esc."));
+    butEsc->setAutoRaise(true);
+    horizontalLayout->addWidget(butEsc);
+    connect(butEsc, &QToolButton::clicked, this, &CColorChooser::reject);
+
+    adjustSize();
+}
+
+void CColorChooser::slotSelect(QToolButton * button)
+{
+    parentButton->setIcon(button->icon());
+    parentButton->setProperty("color", button->property("color"));
+    accept();
+}
diff --git a/src/gis/wpt/CProjWpt.h b/src/widgets/CColorChooser.h
similarity index 68%
copy from src/gis/wpt/CProjWpt.h
copy to src/widgets/CColorChooser.h
index f53f1b6..df8c262 100644
--- a/src/gis/wpt/CProjWpt.h
+++ b/src/widgets/CColorChooser.h
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2014 Oliver Eichler oliver.eichler at gmx.de
+    Copyright (C) 2016 Oliver Eichler oliver.eichler at gmx.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -16,32 +16,27 @@
 
 **********************************************************************************************/
 
-#ifndef CPROJWPT_H
-#define CPROJWPT_H
+#ifndef CCOLORCHOOSER_H
+#define CCOLORCHOOSER_H
 
-#include "ui_IProjWpt.h"
+#include "ui_IColorChooser.h"
 #include <QDialog>
 
-class CGisItemWpt;
+class QToolButton;
 
-class CProjWpt : public QDialog, private Ui::IProjWpt
+class CColorChooser : public QDialog, private Ui::IColorChooser
 {
     Q_OBJECT
 public:
-    CProjWpt(CGisItemWpt &wpt, QWidget * parent);
-    virtual ~CProjWpt();
-
-public slots:
-    void accept();
+    CColorChooser(QToolButton * parent);
+    virtual ~CColorChooser() = default;
 
 private slots:
-    void slotChangeIcon();
-    void slotChangeName();
+    void slotSelect(QToolButton * button);
 
 private:
-    CGisItemWpt& wpt;
-    QString name;
+    QToolButton* parentButton;
 };
 
-#endif //CPROJWPT_H
+#endif //CCOLORCHOOSER_H
 
diff --git a/src/widgets/CColorLegend.cpp b/src/widgets/CColorLegend.cpp
index 757a173..e8896bf 100644
--- a/src/widgets/CColorLegend.cpp
+++ b/src/widgets/CColorLegend.cpp
@@ -17,12 +17,16 @@
 **********************************************************************************************/
 
 #include "CMainWindow.h"
+#include "gis/trk/CGisItemTrk.h"
+#include "gis/trk/CKnownExtension.h"
 #include "widgets/CColorLegend.h"
 
 #include <QtWidgets>
 
 CColorLegend::CColorLegend(QWidget *parent, CGisItemTrk *trk)
-    : QWidget(parent), trk(trk)
+    : QWidget(parent)
+    , INotifyTrk(CGisItemTrk::eVisualColorLegend)
+    , trk(trk)
 {
     colorRect = QRect(0, 0, colorWidth, colorHeight);
     colorRect.moveCenter(QPoint(xOffset + colorWidth / 2, height() / 2));
@@ -32,10 +36,10 @@ CColorLegend::CColorLegend(QWidget *parent, CGisItemTrk *trk)
         background = true;
         xOffset = 5;
 
-        trk->registerNotification(this);
+        trk->registerVisual(this);
 
         // read data from trk
-        notify();
+        updateData();
     }
 }
 
@@ -43,13 +47,30 @@ CColorLegend::~CColorLegend()
 {
     if(trk)
     {
-        trk->unregisterNotification(this);
+        trk->unregisterVisual(this);
     }
 }
 
-void CColorLegend::notify()
+void CColorLegend::setMouseFocus(const CGisItemTrk::trkpt_t * pt)
 {
-    if(!trk->getColorizeSource().isEmpty())
+    if(nullptr == pt)
+    {
+        val = NOFLOAT;
+        return;
+    }
+
+    QString colorSource = trk->getColorizeSource();
+    auto valueFunc      = CKnownExtension::get(colorSource).valueFunc;
+    const qreal factor  = CKnownExtension::get(colorSource).factor;
+
+    val = factor * valueFunc(*pt);
+    val = qMin(val, maximum);
+    val = qMax(val, minimum);
+}
+
+void CColorLegend::updateData()
+{
+    if(!trk->getColorizeSource().isEmpty() && (trk->getColorizeSource() != "activity"))
     {
         unit    = trk->getColorizeUnit();
         minimum = trk->getColorizeLimitLow();
@@ -177,6 +198,13 @@ void CColorLegend::paintEvent(QPaintEvent *event)
             resize(reqWidth + 5, height());
         }
 
+        if(val != NOFLOAT)
+        {
+            qreal y = qFloor(colorRect.bottom() - (val - minimum) * (colorRect.height()-1)/(maximum - minimum));
+            p.setPen(QPen(Qt::darkGray, 2));
+            p.drawLine(colorRect.left() + 2, y, colorRect.right() - 2, y);
+        }
+
         p.end();
     }
 }
diff --git a/src/widgets/CColorLegend.h b/src/widgets/CColorLegend.h
index 0f13743..c496780 100644
--- a/src/widgets/CColorLegend.h
+++ b/src/widgets/CColorLegend.h
@@ -19,11 +19,12 @@
 #ifndef CCOLORLEGEND_H
 #define CCOLORLEGEND_H
 
-#include "gis/trk/CGisItemTrk.h"
-#include "helpers/INotifiable.h"
+
 #include <QWidget>
 
-class CColorLegend : public QWidget, public INotifiable
+#include "gis/trk/CGisItemTrk.h"
+
+class CColorLegend : public QWidget, public INotifyTrk
 {
     Q_OBJECT
 public:
@@ -35,11 +36,15 @@ public:
 
     void setUnit(const QString &unit);
 
-    void notify();
+    void updateData() override;
+    void setMouseFocus(const CGisItemTrk::trkpt_t *pt) override;
+    void setMouseRangeFocus(const CGisItemTrk::trkpt_t *pt1, const CGisItemTrk::trkpt_t *pt2) override {}
+    void setMouseClickFocus(const CGisItemTrk::trkpt_t *pt) override {}
+
 
 protected:
-    void paintEvent(QPaintEvent *event);
-    void resizeEvent(QResizeEvent *event);
+    void paintEvent(QPaintEvent  *event) override;
+    void resizeEvent(QResizeEvent *event) override;
 
 private:
     int paintLabel(QPainter &p, qreal value);
@@ -49,11 +54,12 @@ private:
 
     QRect colorRect;
     QString unit;
-    qreal minimum;
-    qreal maximum;
-    bool background = false;
-    int xOffset    = 1;
-    CGisItemTrk *trk = nullptr;
+    qreal minimum       = 0;
+    qreal maximum       = 0;
+    bool background     = false;
+    int xOffset         = 1;
+    CGisItemTrk *trk    = nullptr;
+    qreal val           = NOFLOAT;
 };
 
 #endif // CCOLORLEGEND_H
diff --git a/src/widgets/CDoubleSpinBox.h b/src/widgets/CDoubleSpinBox.h
index c2a75a7..a3746f0 100644
--- a/src/widgets/CDoubleSpinBox.h
+++ b/src/widgets/CDoubleSpinBox.h
@@ -35,11 +35,11 @@ signals:
     void valueChangedByStep(double val);
 
 public:
-    CDoubleSpinBox(QWidget * parent = 0);
+    CDoubleSpinBox(QWidget * parent = nullptr);
 
-    void stepBy(int steps);
+    void stepBy(int steps) override;
 
 protected:
-    void focusInEvent(QFocusEvent *event);
+    void focusInEvent(QFocusEvent *event) override;
 };
 #endif // CDOUBLESPINBOX_H
diff --git a/src/widgets/CFadingIcon.cpp b/src/widgets/CFadingIcon.cpp
index e8813cd..7b698ef 100644
--- a/src/widgets/CFadingIcon.cpp
+++ b/src/widgets/CFadingIcon.cpp
@@ -30,7 +30,7 @@ CFadingIcon::CFadingIcon(const QPoint& pt, const QString &resource, QWidget *par
     timer->setInterval(100);
     timer->start();
 
-    connect(timer, SIGNAL(timeout()), this, SLOT(slotTimeout()));
+    connect(timer, &QTimer::timeout, this, &CFadingIcon::slotTimeout);
 
     move(pt.x() - icon.width()/2, pt.y() - icon.height()/2);
     show();
diff --git a/src/widgets/CHistoryListWidget.cpp b/src/widgets/CHistoryListWidget.cpp
index 381e577..e7a504c 100644
--- a/src/widgets/CHistoryListWidget.cpp
+++ b/src/widgets/CHistoryListWidget.cpp
@@ -27,8 +27,8 @@ CHistoryListWidget::CHistoryListWidget(QWidget *parent)
 {
     setIconSize(QSize(32,32));
     setContextMenuPolicy(Qt::CustomContextMenu);
-    connect(this, SIGNAL(itemSelectionChanged()), this, SLOT(slotSelectionChanged()));
-    connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)));
+    connect(this, &CHistoryListWidget::itemSelectionChanged,       this, &CHistoryListWidget::slotSelectionChanged);
+    connect(this, &CHistoryListWidget::customContextMenuRequested, this, &CHistoryListWidget::slotContextMenu);
 
     menu = new QMenu(this);
     actionCutHistory = menu->addAction(QIcon("://icons/32x32/CutHistory.png"),tr("Cut history"), this, SLOT(slotCutHistory()));
@@ -56,6 +56,11 @@ void CHistoryListWidget::setupHistory(IGisItem& gisItem)
         QListWidgetItem * item = new QListWidgetItem(this);
 
         str  = event.time.toString();
+        if(!event.who.isEmpty())
+        {
+            str += tr(" by %1").arg(event.who);
+        }
+
         str += "\n";
         str += event.comment;
 
@@ -77,7 +82,7 @@ void CHistoryListWidget::setupHistory(IGisItem& gisItem)
 void CHistoryListWidget::slotSelectionChanged()
 {
     IGisItem * item = CGisWidget::self().getItemByKey(key);
-    if(item == 0)
+    if(nullptr == item)
     {
         return;
     }
@@ -108,13 +113,14 @@ void CHistoryListWidget::slotCutHistory()
     }
 
     IGisItem * item = CGisWidget::self().getItemByKey(key);
-    if(item == 0)
+    if(nullptr == item)
     {
         return;
     }
 
     item->cutHistory();
-    item->setText(CGisListWks::eColumnDecoration,"*");
+    item->updateDecoration(IGisItem::eMarkChanged, IGisItem::eMarkNone);
+
     IGisProject * project = dynamic_cast<IGisProject*>(item->parent());
     if(project)
     {
diff --git a/src/widgets/CLineEdit.cpp b/src/widgets/CLineEdit.cpp
new file mode 100644
index 0000000..0401f45
--- /dev/null
+++ b/src/widgets/CLineEdit.cpp
@@ -0,0 +1,90 @@
+/**********************************************************************************************
+    Copyright (C) 2015 Christian Eichler code at christian-eichler.de
+
+    This program 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.
+
+    This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.
+
+**********************************************************************************************/
+
+#include "widgets/CLineEdit.h"
+
+#include <QtWidgets>
+
+void CLineEdit::initialize()
+{
+    initialized  = true;
+
+    paletteEdit = QPalette(palette());
+    paletteRO   = QPalette(palette());
+    paletteRW   = QPalette(palette());
+    paletteRW.setColor(QPalette::Text, QColor(0, 0, 255));
+
+    fontNoUnderline = QFont(font());
+    fontUnderline   = QFont(font());
+    fontUnderline.setUnderline(true);
+}
+
+void CLineEdit::updateStyle()
+{
+    if(!initialized)
+    {
+        initialize();
+    }
+
+    if(isReadOnly())
+    {
+        setPalette(paletteRO);
+        setFont(fontNoUnderline);
+    }
+    else if(hasFocus())
+    {
+        setPalette(paletteEdit);
+        setFont(fontNoUnderline);
+    }
+    else
+    {
+        setPalette(paletteRW);
+        setFont(fontUnderline);
+    }
+}
+
+CLineEdit::CLineEdit(QWidget *parent)
+    : QLineEdit(parent)
+{
+    // initialization has to be done deferred,
+    // as the correct palette is set after construction
+    initialized = false;
+}
+
+void CLineEdit::setReadOnly(bool r)
+{
+    QLineEdit::setReadOnly(r);
+    updateStyle();
+}
+
+void CLineEdit::focusInEvent(QFocusEvent *event)
+{
+    QLineEdit::focusInEvent(event);
+
+    updateStyle();
+    if(!isReadOnly())
+    {
+        QTimer::singleShot(0, this, SLOT(slotSelectAll()));
+    }
+}
+
+void CLineEdit::focusOutEvent(QFocusEvent *event)
+{
+    QLineEdit::focusOutEvent(event);
+    updateStyle();
+}
diff --git a/src/widgets/CTinySpinBox.h b/src/widgets/CLineEdit.h
similarity index 69%
copy from src/widgets/CTinySpinBox.h
copy to src/widgets/CLineEdit.h
index 653b616..eafebe7 100644
--- a/src/widgets/CTinySpinBox.h
+++ b/src/widgets/CLineEdit.h
@@ -16,23 +16,22 @@
 
 **********************************************************************************************/
 
-/** @brief A QWidget derived from QSpinBox, aiming to be tiny with regard to spaced consumed
-           on screen.
+/** @brief A QWidget derived from QLineEdit, aiming to provide a simple-to-use wrapper around QLineEdit
 
-    By default, a readonly CTinySpinBox looks like an ordinary label, whereas a non-readonly
-    CTinySpinBox contains blue, underlined text. As soon as the non-readonly widget receives
+    By default, a readonly CLineEdit looks like an ordinary label, whereas a non-readonly
+    CLineEdit contains blue, underlined text. As soon as the non-readonly widget receives
     the focus, the color is changed to black, the underline disappears and the modifiable text
     is selected.
  */
 
-#ifndef CTINYSPINBOX_H
-#define CTINYSPINBOX_H
+#ifndef CLINEEDIT_H
+#define CLINEEDIT_H
 
 #include <QFont>
+#include <QLineEdit>
 #include <QPalette>
-#include <QSpinBox>
 
-class CTinySpinBox : public QSpinBox
+class CLineEdit : public QLineEdit
 {
     Q_OBJECT
 
@@ -55,17 +54,13 @@ public slots:
         selectAll();
     }
 
-signals:
-    void valueChangedByStep(int val);
-
 public:
-    CTinySpinBox(QWidget * parent = 0);
+    CLineEdit(QWidget *parent = nullptr);
 
     void setReadOnly(bool r);
-    void stepBy(int steps);
 
 protected:
-    void focusInEvent(QFocusEvent *event);
-    void focusOutEvent(QFocusEvent *event);
+    void focusInEvent(QFocusEvent *event) override;
+    void focusOutEvent(QFocusEvent *event) override;
 };
-#endif // CTINYSPINBOX_H
+#endif // CLINEEDIT_H
diff --git a/src/widgets/CPhotoAlbum.cpp b/src/widgets/CPhotoAlbum.cpp
index 898c328..acc92fc 100644
--- a/src/widgets/CPhotoAlbum.cpp
+++ b/src/widgets/CPhotoAlbum.cpp
@@ -27,8 +27,8 @@ CPhotoAlbum::CPhotoAlbum(QWidget *parent)
 {
     setupUi(this);
     setFocusPolicy(Qt::WheelFocus);
-    connect(toolLeft, SIGNAL(clicked()), this, SLOT(slotLeft()));
-    connect(toolRight, SIGNAL(clicked()), this, SLOT(slotRight()));
+    connect(toolLeft,  &QToolButton::clicked, this, &CPhotoAlbum::slotLeft);
+    connect(toolRight, &QToolButton::clicked, this, &CPhotoAlbum::slotRight);
 }
 
 CPhotoAlbum::~CPhotoAlbum()
diff --git a/src/widgets/CPhotoAlbum.h b/src/widgets/CPhotoAlbum.h
index 9fa881c..0bf9e6a 100644
--- a/src/widgets/CPhotoAlbum.h
+++ b/src/widgets/CPhotoAlbum.h
@@ -22,7 +22,7 @@
 #include "ui_IPhotoAlbum.h"
 #include <QWidget>
 
-#include <gis/wpt/CGisItemWpt.h>
+#include "gis/wpt/CGisItemWpt.h"
 
 class CPhotoAlbum : public QWidget, private Ui::IPhotoAlbum
 {
@@ -41,8 +41,8 @@ public slots:
     void slotDelImage();
 
 protected:
-    void resizeEvent(QResizeEvent * e);
-    void mouseReleaseEvent(QMouseEvent *e);
+    void resizeEvent(QResizeEvent *e) override;
+    void mouseReleaseEvent(QMouseEvent  *e) override;
 
 private slots:
     void slotRight();
diff --git a/src/widgets/CTextEditWidget.cpp b/src/widgets/CTextEditWidget.cpp
index e4ee1bc..ecfbdea 100644
--- a/src/widgets/CTextEditWidget.cpp
+++ b/src/widgets/CTextEditWidget.cpp
@@ -48,19 +48,19 @@ CTextEditWidget::CTextEditWidget(QWidget * parent)
 {
     setupUi(this);
 
-    connect(actionTextBold, SIGNAL(triggered()), this, SLOT(textBold()));
-    toolBold->setDefaultAction(actionTextBold);
-    connect(actionTextItalic, SIGNAL(triggered()), this, SLOT(textItalic()));
+    connect(actionTextBold,      &QAction::triggered, this, &CTextEditWidget::textBold);
+    connect(actionTextItalic,    &QAction::triggered, this, &CTextEditWidget::textItalic);
+    connect(actionTextUnderline, &QAction::triggered, this, &CTextEditWidget::textUnderline);
+    toolBold->setDefaultAction  (actionTextBold);
     toolItalic->setDefaultAction(actionTextItalic);
-    connect(actionTextUnderline, SIGNAL(triggered()), this, SLOT(textUnderline()));
-    toolUnder->setDefaultAction(actionTextUnderline);
+    toolUnder->setDefaultAction (actionTextUnderline);
 
     QActionGroup *grp = new QActionGroup(this);
     grp->addAction(actionAlignLeft);
     grp->addAction(actionAlignRight);
     grp->addAction(actionAlignCenter);
     grp->addAction(actionAlignJustify);
-    connect(grp, SIGNAL(triggered(QAction *)), this, SLOT(textAlign(QAction *)));
+    connect(grp, &QActionGroup::triggered, this, &CTextEditWidget::textAlign);
 
     toolLeft->setDefaultAction(actionAlignLeft);
     toolCenter->setDefaultAction(actionAlignCenter);
@@ -71,7 +71,7 @@ CTextEditWidget::CTextEditWidget(QWidget * parent)
     QPixmap pix(24, 24);
     pix.fill(Qt::black);
     actionTextColor = new QAction(pix, tr("&Color..."), this);
-    connect(actionTextColor, SIGNAL(triggered()), this, SLOT(textColor()));
+    connect(actionTextColor, &QAction::triggered, this, &CTextEditWidget::textColor);
     toolColor->setDefaultAction(actionTextColor);
 
     comboStyle->addItem("standard");
@@ -81,10 +81,10 @@ CTextEditWidget::CTextEditWidget(QWidget * parent)
     comboStyle->addItem("Ordered List (Decimal)");
     comboStyle->addItem("Ordered List (Alpha lower)");
     comboStyle->addItem("Ordered List (Alpha upper)");
-    connect(comboStyle, SIGNAL(activated(int)), this, SLOT(textStyle(int)));
+    connect(comboStyle, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &CTextEditWidget::textStyle);
 
-    connect(textEdit, SIGNAL(currentCharFormatChanged(const QTextCharFormat &)), this, SLOT(currentCharFormatChanged(const QTextCharFormat &)));
-    connect(textEdit, SIGNAL(cursorPositionChanged()), this, SLOT(cursorPositionChanged()));
+    connect(textEdit, &QTextEdit::currentCharFormatChanged, this, &CTextEditWidget::currentCharFormatChanged);
+    connect(textEdit, &QTextEdit::cursorPositionChanged,    this, &CTextEditWidget::cursorPositionChanged);
 
     textEdit->setFocus();
 
@@ -102,23 +102,23 @@ CTextEditWidget::CTextEditWidget(QWidget * parent)
     actionUndo->setEnabled(textEdit->document()->isUndoAvailable());
     actionRedo->setEnabled(textEdit->document()->isRedoAvailable());
 
-    connect(textEdit->document(), SIGNAL(undoAvailable(bool)), actionUndo, SLOT(setEnabled(bool)));
-    connect(textEdit->document(), SIGNAL(redoAvailable(bool)), actionRedo, SLOT(setEnabled(bool)));
+    connect(textEdit->document(), &QTextDocument::undoAvailable, actionUndo, &QAction::setEnabled);
+    connect(textEdit->document(), &QTextDocument::redoAvailable, actionRedo, &QAction::setEnabled);
 
-    connect(actionUndo, SIGNAL(triggered()), textEdit, SLOT(undo()));
-    connect(actionRedo, SIGNAL(triggered()), textEdit, SLOT(redo()));
+    connect(actionUndo, &QAction::triggered, textEdit, &QTextEdit::undo);
+    connect(actionRedo, &QAction::triggered, textEdit, &QTextEdit::redo);
 
     actionCut->setEnabled(false);
     actionCopy->setEnabled(false);
 
-    connect(actionCut, SIGNAL(triggered()), textEdit, SLOT(cut()));
-    connect(actionCopy, SIGNAL(triggered()), textEdit, SLOT(copy()));
-    connect(actionPaste, SIGNAL(triggered()), textEdit, SLOT(paste()));
+    connect(actionCut,                 &QAction::triggered,       textEdit,   &QTextEdit::cut);
+    connect(actionCopy,                &QAction::triggered,       textEdit,   &QTextEdit::copy);
+    connect(actionPaste,               &QAction::triggered,       textEdit,   &QTextEdit::paste);
 
-    connect(textEdit, SIGNAL(copyAvailable(bool)), actionCut, SLOT(setEnabled(bool)));
-    connect(textEdit, SIGNAL(copyAvailable(bool)), actionCopy, SLOT(setEnabled(bool)));
+    connect(textEdit,                  &QTextEdit::copyAvailable, actionCut,  &QAction::setEnabled);
+    connect(textEdit,                  &QTextEdit::copyAvailable, actionCopy, &QAction::setEnabled);
 
-    connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(clipboardDataChanged()));
+    connect(QApplication::clipboard(), &QClipboard::dataChanged,  this,       &CTextEditWidget::clipboardDataChanged);
 }
 
 
diff --git a/src/widgets/CTinySpinBox.h b/src/widgets/CTinySpinBox.h
index 653b616..a9a60e8 100644
--- a/src/widgets/CTinySpinBox.h
+++ b/src/widgets/CTinySpinBox.h
@@ -59,13 +59,13 @@ signals:
     void valueChangedByStep(int val);
 
 public:
-    CTinySpinBox(QWidget * parent = 0);
+    CTinySpinBox(QWidget * parent = nullptr);
 
     void setReadOnly(bool r);
-    void stepBy(int steps);
+    void stepBy(int steps) override;
 
 protected:
-    void focusInEvent(QFocusEvent *event);
-    void focusOutEvent(QFocusEvent *event);
+    void focusInEvent(QFocusEvent *event) override;
+    void focusOutEvent(QFocusEvent *event) override;
 };
 #endif // CTINYSPINBOX_H
diff --git a/src/widgets/IColorChooser.ui b/src/widgets/IColorChooser.ui
new file mode 100644
index 0000000..34ce56c
--- /dev/null
+++ b/src/widgets/IColorChooser.ui
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>IColorChooser</class>
+ <widget class="QDialog" name="IColorChooser">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>67</width>
+    <height>16</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <property name="spacing">
+    <number>0</number>
+   </property>
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <property name="spacing">
+      <number>0</number>
+     </property>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/templates/header.h b/templates/header.h
index c449c07..0679fac 100644
--- a/templates/header.h
+++ b/templates/header.h
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2014-2015 Oliver Eichler oliver.eichler at gmx.de
+    Copyright (C) 2016 Oliver Eichler oliver.eichler at gmx.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
diff --git a/templates/source.c b/templates/source.c
index 11ce1c4..8962ea4 100644
--- a/templates/source.c
+++ b/templates/source.c
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2014-2015 Oliver Eichler oliver.eichler at gmx.de
+    Copyright (C) 2016 Oliver Eichler oliver.eichler at gmx.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
diff --git a/templates/source.cpp b/templates/source.cpp
index 00f9538..fdd485e 100644
--- a/templates/source.cpp
+++ b/templates/source.cpp
@@ -1,5 +1,5 @@
 /**********************************************************************************************
-    Copyright (C) 2014-2015 Oliver Eichler oliver.eichler at gmx.de
+    Copyright (C) 2016 Oliver Eichler oliver.eichler at gmx.de
 
     This program is free software: you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by

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



More information about the Pkg-grass-devel mailing list